1 Introduction
2 Search techniques
2.1 Hill climbing
2.2 Simulated annealing
2.3 Genetic algorithms
2.4 Multi-objective evolutionary algorithms
MOEA | Full Name | Developers |
---|---|---|
DMOEA | Dynamic Multiobjective Evolutionary Algorithm | Yen and Lu (2003) |
M-PAES | Memetic-Pareto Archive Evolutionary Stategy | Knowles and Corne (2000) |
NGPA | Niched Pareto Genetic Algorithm | Horn et al. (1994) |
NSGA-II | Nondominated Sorting Genetic Algorithm II | Deb et al. (2002) |
PAES | Pareto Archive Evolutionary Strategy | Knowles and Corne (2000) |
PDE | Pareto-frontier Differential Evolution | Abbass et al. (2001) |
PESA | Pareto Envelope-based Selection Algorithm | Corne et al. (2000) |
SPEA | Strength Pareto Evolutionary Algorithm | Zitzler and Thiele (1999) |
SPEA2 | Strength Pareto Evolutionary Algorithm 2 | Zitzler et al. (2001) |
3 Survey outline
-
RQ1: How many papers were published per year?
-
RQ2: What are the most common methods of publication for the papers?
-
RQ3: Who are the most prolific authors investigating search-based refactoring in software maintenance?
-
RQ4: What types of studies were used in the papers?
-
RQ5: What refactoring approaches were used in the literature?
-
RQ6: What search techniques were used in the refactoring studies?
-
RQ7: What types of programs were used to evaluate the refactoring approaches?
-
RQ8: What tools were used for refactoring?
-
RQ9: What types of metrics were used in the studies?
-
RQ10: What are the gaps in the literature and available research opportunities in the area?
-
Refactoring with search-based techniques.
-
Automated refactoring.
-
Investigation of maintenance metrics with search-based techniques.
Search Repository | Number Of Papers |
---|---|
Google Scholar | 293 |
IEEE Xplore | 21 |
ScienceDirect | 24 |
Springer | 27 |
Scopus | 43 |
-
Papers that involved defect detection but not resolution.
-
Literature reviews, theses, abstracts, tutorials, reports or posters.
-
Papers that were written in a language other than English.
4 Refactoring in search-based software engineering
4.1 Refactoring to improve software quality
4.2 Refactoring for testability
4.3 Testing metric effectiveness with refactoring
4.4 Refactoring to correct software defects
4.5 Refactoring tools
5 Analysis
5.1 Papers published over time
5.2 Types of paper
Conference | Number of Papers |
---|---|
Genetic and Evolutionary Computation Conference (GECCO) | 7 |
European Conference on Software Maintenance and Reengineering (CSMR) | 4 |
International Conference on Software Maintenance (ISCM) | 3 |
Symposium on Search-Based Software Engineering (SSBSE) | 3 |
International Conference on Software Analysis, Evolution, and Reengineering (SANER) | 2 |
International Conference on Software Testing, Verification and Validation (ICST/ICSTVV) | 2 |
International Symposium on Empirical Software Engineering and Measurement (ESEM) | 2 |
Journals | Number of Papers |
---|---|
Empirical Software Engineering | 4 |
Journal of Systems and Software | 4 |
Software Quality Journal | 2 |
ACM Transactions on Software Engineering and Methodology | 1 |
Automated Software Engineering | 1 |
Journal of Software Maintenance and Evolution: Research and Practice | 1 |
5.3 Authors
Authors | Number of Papers |
---|---|
Mel Ó Cinnéide | 21 |
Marouane Kessentini | 16 |
Ali Ouni | 8 |
Houari Sahraoui | 7 |
Mark Harman | 7 |
Mark O′ Keeffe | 7 |
Slim Bechikh | 6 |
Iman Hemati Moghadam | 5 |
Kalyanmoy Deb | 5 |
Wiem Mkaouer | 5 |
Laurence Tratt | 3 |
5.4 Types of study
5.5 Refactoring approaches
Authors [Ref] | Year | Title |
---|---|---|
2004 | Evolving Transformation Sequences Using Genetic Algorithms | |
O’Keeffe and Ó Cinnéide (2004) | 2004 | Towards Automated Design Improvement Through Combinatorial Optimisation |
Di Penta (2005) | 2005 | Evolution Doctor: A Framework To Control Software System Evolution |
O’Keeffe and Ó Cinnéide (2006) | 2006 | Search-Based Software Maintenance |
O’Keeffe and Ó Cinnéide (2007a) | 2007 | Getting The Most From Search-Based Refactoring |
O’Keeffe and Ó Cinnéide (2008b) | 2007 | Search-Based Refactoring: An Empirical Study |
O’Keeffe and Ó Cinnéide (2007b) | 2007 | Automated Design Improvement By Example |
O’Keeffe and Ó Cinnéide (2008a) | 2008 | Search-Based Refactoring For Software Maintenance |
2011 | TrueRefactor: An Automated Refactoring Tool To Improve Legacy System And Application Comprehensibility | |
Ghaith and Ó Cinnéide (2012) | 2012 | Improving Software Security Using Search-Based Refactoring |
2012 | An Empirical Study About Search-Based Refactoring Using Alternative Multiple And Population-Based Search Techniques | |
Moghadam and Ó Cinnéide (2012) | 2012 | Automated Refactoring Using Design Differencing |
2012 | Experimental Assessment Of Software Metrics Using Automated Refactoring | |
Veerappa and Harrison (2013) | 2013 | An Empirical Validation Of Coupling Metrics Using Automated Refactoring |
Mohan et al. (2016) | 2016 | Technical Debt Reduction Using Search Based Automated Refactoring |
2016 | An Experimental Search-Based Approach To Cohesion Metric Evaluation |
5.6 Search techniques
5.7 Input programs used
GanttProject (Moghadam & Cinnéide, 2012; Morales et al., 2016; Cinnéide et al., 2012; Cinnéide et al., 2016; Veerappa & Harrison, 2013; Kessentini et al., 2011; Kessentini et al., 2011; Ouni et al., 2013; Kessentini et al., 2012; Ouni et al., 2012; Ouni et al., 2013; Ouni et al., 2015; Mkaouer et al., 2014; Mkaouer et al., 2016; Mkaouer et al., 2014; Mkaouer et al., 2015; Mkaouer et al., 2015; Ouni et al., 2015; Amal et al., 2014) | JHotDraw (Harman & Tratt, 2007; Mohan et al., 2016; Moghadam & Cinnéide, 2012; Seng et al., 2006; Morales et al., 2016; Cinnéide et al., 2012; Cinnéide et al., 2016; Veerappa & Harrison, 2013; Kessentini et al., 2012; Ouni et al., 2013; Ouni et al., 2015; Mkaouer et al., 2014; Mkaouer et al., 2016; Mkaouer et al., 2015; Ouni et al., 2015; Amal et al., 2014) | Xerces-J (Kessentini et al., 2011; Kessentini et al., 2011; Ouni et al., 2013; Kessentini et al., 2012; Ouni et al., 2012;Ouni et al., 2013; Ouni et al., 2013; Ouni et al., 2015; Mkaouer et al., 2014; Mkaouer et al., 2016; Mkaouer et al., 2014; Mkaouer et al., 2015; Mkaouer et al., 2015; Ouni et al., 2015; Amal et al., 2014) |
FindBugs (Wang et al., 2015) | Grammatica (O’Keeffe & Cinnéide, 2008b) | |
GRASS (Di Penta, 2005) | Hibernate (Wang et al., 2015) | jSMPP (Cinnéide et al., 2016) |
KDE (Di Penta, 2005) | Maven (Harman & Tratt, 2007) | MySQL (Di Penta, 2005) |
Nutch (Mkaouer et al., 2016) | PDE (Morales et al., 2016) | Pixelitor (Wang et al., 2015) |
Platform (Morales et al., 2016) | Samba (Di Penta, 2005) | Spec-Raytrace (O’Keeffe & Cinnéide, 2006) |
Wife (Ghaith & Cinnéide, 2012) |
5.8 Tools
Refactoring Tool [Ref] | Year | Purpose |
---|---|---|
A-CMA (Koc et al., 2012) | 2012 | Refactors Java bytecode using a selection of refactorings and metrics. |
CODe-Imp (Moghadam & Cinnéide, 2011) | 2011 | Automated refactoring tool containing numerous metrics and refactorings. |
Dearthóir (O’Keeffe & Cinnéide, 2003) | 2003 | Improves the design of an object-oriented program. |
DPT (Cinnéide & Nixon, 1999a) | 1999 | Applies design pattern transformations to Java programs. |
Evolution Doctor (Di Penta, 2005) | 2005 | Diagnoses reorganization opportunities and performs reengineering actions. |
FermaT (Fatiregun et al., 2004) | 2004 | Transformation tool for migration of legacy systems from assembly code to higher level languages. |
TrueRefactor (Griffith et al., 2011) | 2011 | Identifies and removes five different design smells in Java. |
5.9 Metrics
5.10 Research gaps and opportunities
6 Discussion
7 Related work
Authors [Ref] | Year | Title |
---|---|---|
Al Dallal (2015) | 2015 | Identifying Refactoring Opportunities In Object-Oriented Code: A Systematic Literature Review |
2009/ 2012 | Search Based Software Engineering: A Comprehensive Analysis And Review Of Trends Techniques And Applications/Search Based Software Engineering: Trends, Techniques And Applications | |
2012 | Search Based Software Engineering: Techniques, Taxonomy, Tutorial | |
Mariani and Vergilio (2017) | 2017 | A Systematic Review On Search-Based Refactoring |
Misbhauddin and Alshayeb (2015) | 2015 | UML Model Refactoring: A Systematic Literature Review |
2009/ 2010 | An Updated Survey On Search Based Software Engineering/A Survey On Search Based Software Engineering |