How does Object-Oriented Code Refactoring Influence Software Quality? Research Landscape and Challenges

Abstract Context Software refactoring aims to improve software quality and developer productivity. Numerous empirical studies investigating the impact of refactoring activities on software quality have been conducted over the last two decades. Objective This study aims to perform a comprehensive systematic mapping study of existing empirical studies on evaluation of the effect of object-oriented code refactoring activities on software quality attributes. Method We followed a multi-stage scrutinizing process to select 142 primary studies published till December 2017. The selected primary studies were further classified based on several aspects to answer the research questions defined for this work. In addition, we applied vote-counting approach to combine the empirical results and their analysis reported in primary studies. Results The findings indicate that studies conducted in academic settings found more positive impact of refactoring on software quality than studies performed in industries. In general, refactoring activities caused all quality attributes to improve or degrade except for cohesion, complexity, inheritance, fault-proneness and power consumption attributes. Furthermore, individual refactoring activities have variable effects on most quality attributes explored in primary studies, indicating that refactoring does not always improve all quality attributes. Conclusions This study points out several open issues which require further investigation, e.g., lack of industrial validation, lesser coverage of refactoring activities, limited tool support, etc.

[1]  Gabriele Bavota,et al.  When Does a Refactoring Induce Bugs? An Empirical Study , 2012, 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation.

[2]  Andy Zaidman,et al.  Old habits die hard: Why refactoring for understandability does not give immediate benefits , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[3]  Gabriele Bavota,et al.  Automating extract class refactoring: an improved method and its evaluation , 2013, Empirical Software Engineering.

[4]  Stephan Diehl,et al.  Identifying Refactorings from Source-Code Changes , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[5]  Alejandro Zunino,et al.  Improving scientific application execution on android mobile devices via code refactorings , 2017, Softw. Pract. Exp..

[6]  Muhammad Usman Bhatti,et al.  Empirical evaluation of syntactic and semantic defects introduced by refactoring support , 2016, Int. Arab J. Inf. Technol..

[7]  ISO / IEC 25010 : 2011 Systems and software engineering — Systems and software Quality Requirements and Evaluation ( SQuaRE ) — System and software quality models , 2013 .

[8]  Miryung Kim,et al.  An empirical investigation into the role of API-level refactorings during software evolution , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[9]  Serge Demeyer,et al.  Studying the Effect of Refactorings: A Complexity Metrics Perspective , 2010, 2010 Seventh International Conference on the Quality of Information and Communications Technology.

[10]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[11]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2000, The Kluwer International Series in Software Engineering.

[12]  Morgan Ericsson,et al.  The relationship of code churn and architectural violations in the open source software JabRef , 2017, ECSA.

[13]  Witold Pedrycz,et al.  A Case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team , 2008, CEE-SET.

[14]  Cleidson R. B. de Souza,et al.  On the Effects of Refactoring in the Coordination of Software Development Activities , 2009, ECSCW.

[15]  Mika Mäntylä,et al.  An experiment on subjective evolvability evaluation of object-oriented software: explaining factors and interrater agreement , 2005, 2005 International Symposium on Empirical Software Engineering, 2005..

[16]  Steve Counsell,et al.  The effect of refactoring on change and fault-proneness in commercial C# software , 2015, Sci. Comput. Program..

[17]  Michele Marchesi,et al.  An Empirical Study of Refactoring in the Context of FanIn and FanOut Coupling , 2011, 2011 18th Working Conference on Reverse Engineering.

[18]  Eleni Stroulia,et al.  Metrics of Refactoring-based Development: An Experience Report , 2001, OOIS.

[19]  Rudolf K. Keller,et al.  High-impact Refactoring Based on Architecture Violations , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[20]  Doo-Hwan Bae,et al.  Dynamic profiling-based approach to identifying cost-effective refactorings , 2013, Inf. Softw. Technol..

[21]  Anas Abdin,et al.  Empirical Evaluation of the Impact of Object-Oriented Code Refactoring on Quality Attributes: A Systematic Literature Review , 2018, IEEE Transactions on Software Engineering.

[22]  Sang-Ho Lee,et al.  Investigation for Software Power Consumption of Code Refactoring Techniques , 2014, SEKE.

[23]  Mel Ó Cinnéide,et al.  Improving Software Security Using Search-Based Refactoring , 2012, SSBSE.

[24]  Jehad Al Dallal Identifying refactoring opportunities in object-oriented code: A systematic literature review , 2015, Inf. Softw. Technol..

[25]  Leon J. Osterweil,et al.  Perspectives on refactoring planning and practice: an empirical study , 2015, Empirical Software Engineering.

[26]  Yixin Bian,et al.  Testing the theory of relative dependency from an evolutionary perspective: higher dependencies concentration in smaller modules over the lifetime of software products , 2016, J. Softw. Evol. Process..

[27]  Pornsiri Muenchaisri,et al.  Identification of Opportunities for Move Method Refactoring Using Decision Theory , 2015 .

[28]  Des Greer,et al.  A survey of search-based refactoring for software maintenance , 2018, Journal of Software Engineering Research and Development.

[29]  Guilherme Horta Travassos,et al.  On the Alignment of Source Code Quality Perspectives through Experimentation: An Industrial Case , 2015, 2015 IEEE/ACM 3rd International Workshop on Conducting Empirical Studies in Industry.

[30]  Bart Du Bois,et al.  Describing the impact of refactoring on internal program quality , 2003 .

[31]  Barbara A. Kitchenham,et al.  Combining empirical results in software engineering , 1998, Inf. Softw. Technol..

[32]  S. Vasudeva Shrivastava,et al.  Impact of metrics based refactoring on the software quality: a case study , 2008, TENCON 2008 - 2008 IEEE Region 10 Conference.

[33]  Fernando Sérgio Barbosa,et al.  Removing Code Duplication with Roles , 2013, 2013 IEEE 12th International Conference on Intelligent Software Methodologies, Tools and Techniques (SoMeT).

[34]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[35]  Lori L. Pollock,et al.  How do code refactorings affect energy usage? , 2014, ESEM '14.

[36]  Rushikesh K. Joshi,et al.  Concept Analysis for Class Cohesion , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[37]  Serge Demeyer,et al.  Refactor conditionals into polymorphism: what's the performance cost of introducing virtual calls? , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[38]  James Miller,et al.  Applying meta-analytical procedures to software engineering experiments , 2000, J. Syst. Softw..

[39]  Chanchal Kumar Roy,et al.  Conflict-aware optimal scheduling of prioritised code clone refactoring , 2013, IET Softw..

[40]  Jan Verelst,et al.  Refactoring - improving coupling and cohesion of existing code , 2004, 11th Working Conference on Reverse Engineering.

[41]  Tore Dybå,et al.  Applying Systematic Reviews to Diverse Study Types: An Experience Report , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

[42]  Siti Rochimah,et al.  Non-Source Code Refactoring: A Systematic Literature Review , 2015 .

[43]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[44]  Mel Ó Cinnéide,et al.  Automated Design Improvement by Example , 2007, SoMeT.

[45]  Michele Marchesi,et al.  A Case Study on the Relationship between Code Ownership and Refactoring Activities in a Java Software System , 2016, 2016 IEEE/ACM 7th International Workshop on Emerging Trends in Software Metrics (WETSoM).

[46]  Eleni Stroulia,et al.  Assessing the maintainability benefits of design restructuring using dependency analysis , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).

[47]  Barry Boehm,et al.  Characteristics of software quality , 1978 .

[48]  Kwankamol Nongpong,et al.  Feature envy factor: A metric for automatic feature envy detection , 2015, 2015 7th International Conference on Knowledge and Smart Technology (KST).

[49]  Katsuro Inoue,et al.  MORE: A multi‐objective refactoring recommendation approach to introducing design patterns and fixing code smells , 2017, J. Softw. Evol. Process..

[50]  Ingo Scholtes,et al.  Automated software remodularization based on move refactoring: a complex systems approach , 2014, Software Engineering & Management.

[51]  Tibor Gyimóthy,et al.  A Code Refactoring Dataset and Its Assessment Regarding Software Maintainability , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[52]  Girish Suryanarayana,et al.  Challenges to and Solutions for Refactoring Adoption: An Industrial Perspective , 2015, IEEE Software.

[53]  Kai Petersen,et al.  Systematic Mapping Studies in Software Engineering , 2008, EASE.

[54]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[55]  Wei Liu,et al.  Automated pattern-directed refactoring for complex conditional statements , 2014, Journal of Central South University.

[56]  Antonio Martini,et al.  Estimating and Quantifying the Benefits of Refactoring to Improve a Component Modularity: A Case Study , 2016, 2016 42th Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

[57]  Outi Sievi-Korte,et al.  Refactoring-a Shot in the Dark? , 2015, IEEE Software.

[58]  Daniela Cruzes,et al.  Experience Report on the Effect of Software Development Characteristics on Change Distribution , 2008, PROFES.

[59]  Silvia Regina Vergilio,et al.  A systematic review on search-based refactoring , 2017, Inf. Softw. Technol..

[60]  Audris Mockus,et al.  Refactoring for changeability: a way to go? , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

[61]  Ebba Þóra Hvannberg,et al.  Impact of Code Refactoring Using Object-Oriented Methodology on a Scientific Computing Application , 2014, 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.

[62]  Harvey P. Siy,et al.  Assessing the impact of refactoring activities on the JHotDraw project , 2010, SAC '10.

[63]  Sajjad Mahmood,et al.  An empirical study to improve software security through the application of code refactoring , 2017, Inf. Softw. Technol..

[64]  Daniela E. Damian,et al.  Selecting Empirical Methods for Software Engineering Research , 2008, Guide to Advanced Empirical Software Engineering.

[65]  Antonio Carlos Schneider Beck,et al.  Analysis of the Impact of Refactorings on the Performance of Embedded Systems , 2014, 2014 Brazilian Symposium on Computing Systems Engineering.

[66]  Mohammad Alshayeb,et al.  Using Software Quality Attributes to Classify Refactoring to Patterns , 2012, J. Softw..

[67]  Clemente Izurieta,et al.  Evolution of legacy system comprehensibility through automated refactoring , 2011, MALETS '11.

[68]  Carl G. Davis,et al.  A Hierarchical Model for Object-Oriented Design Quality Assessment , 2002, IEEE Trans. Software Eng..

[69]  Mesfin Abebe,et al.  Trends, Opportunities and Challenges of Software Refactoring: A Systematic Literature Review , 2014 .

[70]  Mohammed Misbhauddin,et al.  UML model refactoring: a systematic literature review , 2013, Empirical Software Engineering.

[71]  Reidar Conradi,et al.  Vote-Counting for Combining Quantitative Evidence from Empirical Studies- An Example , 2006 .

[72]  Steve Counsell,et al.  Extracting refactoring trends from open-source software and a possible solution to the 'related refactoring' conundrum , 2006, SAC '06.

[73]  Mark Harman,et al.  An experimental search-based approach to cohesion metric evaluation , 2016, Empirical Software Engineering.

[74]  Akif Günes Koru,et al.  The Theory of Relative Dependency: Higher Coupling Concentration in Smaller Modules , 2010, IEEE Software.

[75]  Alexander Chatzigeorgiou,et al.  Identification of extract method refactoring opportunities for the decomposition of methods , 2011, J. Syst. Softw..

[76]  Miryung Kim,et al.  An empirical investigation into the impact of refactoring on regression testing , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[77]  Paramvir Singh,et al.  An Empirical Investigation into Code Smell Elimination Sequences for Energy Efficient Software , 2016, 2016 23rd Asia-Pacific Software Engineering Conference (APSEC).

[78]  N. A. Diamantidis,et al.  Automated refactoring to the Null Object design pattern , 2015, Inf. Softw. Technol..

[79]  Tony Gorschek,et al.  Requirements engineering for safety-critical systems: A systematic literature review , 2016, Inf. Softw. Technol..

[80]  Alberto Sillitti,et al.  Does Refactoring Improve Reusability? , 2006, ICSR.

[81]  Robert Godin Can Metrics Help Bridging the Gap Between the Improvement of OO Design Quality and Its Automation ? , 2003 .

[82]  Muhammad Usman Bhatti,et al.  Evaluating the Extended Refactoring Guidelines , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference Workshops.

[83]  Marcelo de Almeida Maia,et al.  A Systematic Literature Review on Bad Smells–5 W's: Which, When, What, Who, Where , 2018, IEEE Transactions on Software Engineering.

[84]  Diomidis Spinellis,et al.  Refactoring--Does It Improve Software Quality? , 2007, Fifth International Workshop on Software Quality (WoSQ'07: ICSE Workshops 2007).

[85]  Eleni Stroulia,et al.  Identification and application of Extract Class refactorings in object-oriented systems , 2012, J. Syst. Softw..

[86]  Colin J. Fidge,et al.  Security Assessment of Code Refactoring Rules , 2012 .

[87]  Francesca Arcelli Fontana,et al.  Investigating the impact of code smells debt on quality code evaluation , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[88]  J. R. Landis,et al.  The measurement of observer agreement for categorical data. , 1977, Biometrics.

[89]  Giuseppe Pappalardo,et al.  Suggesting Extract Class Refactoring Opportunities by Measuring Strength of Method Interactions , 2013, 2013 20th Asia-Pacific Software Engineering Conference (APSEC).

[90]  Marcus Ciolkowski Aggregation of Empirical Evidence , 2006, Empirical Software Engineering Issues.

[91]  Sandro Morasca,et al.  A probability-based approach for measuring external attributes of software artifacts , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[92]  Zhendong Niu,et al.  Identifying Fragments to be Extracted from Long Methods , 2009, 2009 16th Asia-Pacific Software Engineering Conference.

[93]  Apostolos Ampatzoglou,et al.  Quality attributes and quality models for ambient assisted living software systems: A systematic mapping , 2017, Inf. Softw. Technol..

[94]  Maria Letizia Jaccheri,et al.  Software startup engineering: A systematic mapping study , 2018, J. Syst. Softw..

[95]  Thomas Rauber,et al.  Reducing the Class Coupling of Legacy Code by a Metrics-Based Relocation of Class Members , 2009, CEE-SET.

[96]  Raed Shatnawi,et al.  An Empirical Assessment of Refactoring Impact on Software Quality Using a Hierarchical Quality Model , 2011 .

[97]  Rushikesh K. Joshi,et al.  Microscopic coupling metrics for refactoring , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[98]  Jan Verelst,et al.  Does the "Refactor to Understand" reverse engineering pattern improve program comprehension? , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[99]  Ladan Tahvildari,et al.  Journal of Software Maintenance and Evolution: Research and Practice Improving Design Quality Using Meta-pattern Transformations: a Metric-based Approach , 2022 .

[100]  Rüdiger Zarnekow,et al.  European Conference on Information Systems ( ECIS ) 2005 Distribution of Cost Over the Application Lifecycle-A Multi-Case Study , 2017 .

[101]  Fernando Brito e Abreu,et al.  Object-Oriented Software Engineering: Measuring and Controlling the Development Process , 1994 .

[102]  Mohammad Alshayeb,et al.  Refactoring Effect on Cohesion Metrics , 2009, 2009 International Conference on Computing, Engineering and Information.

[103]  Markus Pizka,et al.  Straightening Spaghetti-Code with Refactoring? , 2004, Software Engineering Research and Practice.

[104]  Doo-Hwan Bae,et al.  An efficient approach to identify multiple and independent Move Method refactoring candidates , 2015, Inf. Softw. Technol..

[105]  N. A. Diamantidis,et al.  Automated refactoring of super-class method invocations to the Template Method design pattern , 2017, Inf. Softw. Technol..

[106]  Alim Ul Gias,et al.  Achieving Better Requirements to Code Traceability: Which Refactoring Should Be Done First? , 2016, 2016 10th International Conference on the Quality of Information and Communications Technology (QUATIC).

[107]  Mark Kent O'Keeffe,et al.  Search-based software maintenance , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[108]  Will Snipes,et al.  Improving Code Maintainability: A Case Study on the Impact of Refactoring , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[109]  Tibor Gyimóthy,et al.  Empirical evaluation of software maintainability based on a manually validated refactoring dataset , 2018, Inf. Softw. Technol..

[110]  Emmanouel A. Giakoumakis,et al.  Automated refactoring to the Strategy design pattern , 2012, Inf. Softw. Technol..

[111]  Mohammad Alshayeb The Impact of Refactoring on Class and Architecture Stability , 2011, J. Res. Pract. Inf. Technol..

[112]  Mark Lorenz,et al.  Object-oriented software metrics - a practical guide , 1994 .

[113]  Carsten Görg,et al.  Error detection by refactoring reconstruction , 2005, MSR '05.

[114]  Houari A. Sahraoui,et al.  Prioritizing code-smells correction tasks using chemical reaction optimization , 2015, Software Quality Journal.

[115]  Sooyong Park,et al.  Decomposing class responsibilities using distance-based method similarity , 2015, Frontiers of Computer Science.

[116]  Gabriele Bavota,et al.  Improving software modularization via automated analysis of latent topics and dependencies , 2014, TSEM.

[117]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[118]  Sallie M. Henry,et al.  Object-oriented metrics that predict maintainability , 1993, J. Syst. Softw..

[119]  Alessandro F. Garcia,et al.  How does refactoring affect internal quality attributes?: A multi-project study , 2017, SBES'17.

[120]  Jong-Ho Lee,et al.  Object-oriented refactoring process design for the software reuse , 2001, ISIE 2001. 2001 IEEE International Symposium on Industrial Electronics Proceedings (Cat. No.01TH8570).

[121]  Mark Staples,et al.  Experiences using systematic review guidelines , 2006, J. Syst. Softw..

[122]  Gabriele Bavota,et al.  Identifying Extract Class refactoring opportunities using structural and semantic cohesion measures , 2011, J. Syst. Softw..

[123]  Katsuro Inoue,et al.  Multi-Criteria Code Refactoring Using Search-Based Software Engineering , 2016, ACM Trans. Softw. Eng. Methodol..

[124]  Anastas Mishev,et al.  Correlation between Object-Oriented Metrics and Refactoring , 2010, ICT Innovations.

[125]  Miryung Kim,et al.  An Empirical Study of RefactoringChallenges and Benefits at Microsoft , 2014, IEEE Transactions on Software Engineering.

[126]  Giulio Concas,et al.  Are Refactoring Practices Related to Clusters in Java Software? , 2014, XP.

[127]  Tibor Gyimóthy,et al.  Assessment of the Code Refactoring Dataset Regarding the Maintainability of Methods , 2016, ICCSA.

[128]  W. D. D. Silva,et al.  Evaluation of the impact of code refactoring on embedded software efficiency , 2010 .

[129]  Ghulam Rasool,et al.  A review of code smell mining techniques , 2015, J. Softw. Evol. Process..

[130]  Chris F. Kemerer,et al.  Towards a metrics suite for object oriented design , 2017, OOPSLA '91.

[131]  Arie van Deursen,et al.  The Video Store Revisited – Thoughts on Refactoring and Testing , 2002 .

[132]  Francesca Arcelli Fontana,et al.  Software Clone Detection and Refactoring , 2013 .

[133]  Jacob Cohen A Coefficient of Agreement for Nominal Scales , 1960 .

[134]  Rachel Harrison,et al.  An Empirical Validation of Coupling Metrics Using Automated Refactoring , 2013, 2013 ACM / IEEE International Symposium on Empirical Software Engineering and Measurement.

[135]  Mohammad Alshayeb,et al.  A Classification of Refactoring Methods Based on Software Quality Attributes , 2011 .

[136]  Laurie A. Williams,et al.  Where Are The Gaps? A Systematic Mapping Study of Infrastructure as Code Research , 2018, Inf. Softw. Technol..

[137]  Pearl Brereton,et al.  Performing systematic literature reviews in software engineering , 2006, ICSE.

[138]  Paul Gestwicki,et al.  Refactoring code to increase readability and maintainability: a case study , 2014 .

[139]  Alexander Chatzigeorgiou,et al.  JDeodorant: Identification and Removal of Feature Envy Bad Smells , 2007, ICSM.

[140]  Alexander Chatzigeorgiou,et al.  Identification of Move Method Refactoring Opportunities , 2009, IEEE Transactions on Software Engineering.

[141]  Jehad Al Dallal Constructing models for predicting extract subclass refactoring opportunities using object-oriented quality metrics , 2012, Inf. Softw. Technol..

[142]  Zhendong Niu,et al.  Analyzing Refactorings' Impact on Regression Test Cases , 2015, 2015 IEEE 39th Annual Computer Software and Applications Conference.

[143]  Des Greer,et al.  MultiRefactor: Automated Refactoring To Improve Software Quality , 2017, PROFES.

[144]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[145]  S. H. Kannangara,et al.  An Empirical Evaluation of Impact of Refactoring On Internal and External Measures of Code Quality , 2015, ArXiv.

[146]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[147]  Gabriele Bavota,et al.  In medio stat virtus: Extract class refactoring through nash equilibria , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[148]  Ruben Wangberg A Literature Review on Code Smells and Refactoring , 2010 .

[149]  Romain Rouvoy,et al.  An Empirical Study of the Performance Impacts of Android Code Smells , 2016, 2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[150]  A. Ananda Rao,et al.  Identifying Clusters of Concepts in a Low Cohesive Class for Extract Class Refactoring Using Metrics Supplemented Agglomerative Clustering Technique , 2012, ArXiv.

[151]  Jehad Al Dallal The impact of accounting for special methods in the measurement of object-oriented class cohesion on refactoring and fault prediction activities , 2012, J. Syst. Softw..

[152]  Michele Marchesi,et al.  Assessment of Approaches for the Analysis of Refactoring Activity on Software Repositories An Empirical Study , 2016, XP Workshops.

[153]  N. Poonguzhali,et al.  A quantitative approach for evaluating the effectiveness of refactoring in software development process , 2009, 2009 Proceeding of International Conference on Methods and Models in Computer Science (ICM2CS).

[154]  Tibor Gyimóthy,et al.  Empirical study on refactoring large-scale industrial systems and its effects on maintainability , 2017, J. Syst. Softw..

[155]  Nan Niu,et al.  Supporting requirements to code traceability through refactoring , 2013, Requirements Engineering.

[156]  Lan Cao,et al.  Modeling dynamics in agile software development , 2004, TMIS.

[157]  Gerardo Canfora,et al.  How changes affect software entropy: an empirical study , 2014, Empirical Software Engineering.

[158]  Takeo Imai,et al.  A quantitative evaluation of maintainability enhancement by refactoring , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[159]  Katsuro Inoue,et al.  Improving multi-objective code-smells correction using development history , 2015, J. Syst. Softw..

[160]  Francesca Arcelli Fontana,et al.  Impact of refactoring on quality code evaluation , 2011, WRT '11.

[161]  Marco Tulio Valente,et al.  Why we refactor? confessions of GitHub contributors , 2016, SIGSOFT FSE.

[162]  Foutse Khomh,et al.  EARMO: An Energy-Aware Refactoring Approach for Mobile Apps , 2018, IEEE Transactions on Software Engineering.

[163]  Nafiseh Hajrahimi,et al.  Which Factors Affect Software Projects Maintenance Cost More? , 2013, Acta informatica medica : AIM : journal of the Society for Medical Informatics of Bosnia & Herzegovina : casopis Drustva za medicinsku informatiku BiH.

[164]  Doo-Hwan Bae,et al.  Automated scheduling for clone‐based refactoring using a competent GA , 2011, Softw. Pract. Exp..

[165]  Arie van Deursen,et al.  A Systematic Survey of Program Comprehension through Dynamic Analysis , 2008, IEEE Transactions on Software Engineering.

[166]  Ruchika Malhotra,et al.  An empirical study to assess the effects of refactoring on software maintainability , 2016, 2016 International Conference on Advances in Computing, Communications and Informatics (ICACCI).

[167]  Michele Marchesi,et al.  Parameter-Based Refactoring and the Relationship with Fan-in/Fan-out Coupling , 2011, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops.

[168]  Harald C. Gall,et al.  On the relation of refactorings and software defect prediction , 2008, MSR '08.

[169]  Tracy Hall,et al.  Code Bad Smells: a review of current knowledge , 2011, J. Softw. Maintenance Res. Pract..

[170]  Paula Gomes Mian,et al.  Systematic Review in Software Engineering , 2005 .

[171]  Ioannis Stamelos,et al.  Selecting Refactorings: An Option Based Approach , 2012, 2012 Eighth International Conference on the Quality of Information and Communications Technology.

[172]  Kamil Jezek,et al.  Antipatterns causing memory bloat: A case study , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[173]  Andrea De Lucia,et al.  An Exploratory Study on the Relationship between Changes and Refactoring , 2017, 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC).

[174]  Morgan Ericsson,et al.  Motivation and Impact of Modeling Erosion Using Static Architecture Conformance Checking , 2017, 2017 IEEE International Conference on Software Architecture Workshops (ICSAW).

[175]  Aiko Fallas Yamashita,et al.  Do code smells reflect important maintainability aspects? , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[176]  Mohamed Wiem Mkaouer,et al.  On the use of many quality attributes for software refactoring: a many-objective search-based software engineering approach , 2016, Empirical Software Engineering.

[177]  Miguel Goulão,et al.  Deriving architectural models from requirements specifications: A systematic mapping study , 2019, Inf. Softw. Technol..

[178]  Kai Petersen,et al.  Identifying Strategies for Study Selection in Systematic Reviews and Maps , 2011, 2011 International Symposium on Empirical Software Engineering and Measurement.

[179]  Gabriele Bavota,et al.  On the Impact of Refactoring Operations on Code Quality Metrics , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[180]  Foutse Khomh,et al.  An Empirical Study of the Impact of Two Antipatterns, Blob and Spaghetti Code, on Program Comprehension , 2011, 2011 15th European Conference on Software Maintenance and Reengineering.

[181]  John C. Grundy,et al.  Performance Analysis for Object-Oriented Software: A Systematic Mapping , 2015, IEEE Transactions on Software Engineering.

[182]  Lianping Chen,et al.  A systematic review of comparative evidence of aspect-oriented programming , 2010, Inf. Softw. Technol..

[183]  Johannes Stammel,et al.  Search-based determination of refactorings for improving the class structure of object-oriented systems , 2006, GECCO.

[184]  Paolo Tonella,et al.  Measuring the Impact of Different Categories of Software Evolution , 2008, IWSM/Metrikon/Mensura.

[185]  Maria Cláudia Figueiredo Pereira Emer,et al.  The effects of test driven development on internal quality, external quality and productivity: A systematic review , 2016, Inf. Softw. Technol..

[186]  Shinji Kusumoto,et al.  Refactoring Effect Estimation Based on Complexity Metrics , 2008, 19th Australian Conference on Software Engineering (aswec 2008).

[187]  Houari A. Sahraoui,et al.  Can metrics help to bridge the gap between the improvement of OO design quality and its automation? , 2000, Proceedings 2000 International Conference on Software Maintenance.

[188]  Doo-Hwan Bae,et al.  An Efficient Method for Assessing the Impact of Refactoring Candidates on Maintainability Based on Matrix Computation , 2014, 2014 21st Asia-Pacific Software Engineering Conference.

[189]  Harald C. Gall,et al.  Improving evolvability through refactoring , 2005, MSR.

[190]  Hans van Vliet,et al.  Software engineering - principles and practice , 1993 .

[191]  Hewijin Christine Jiau,et al.  OBEY: Optimal Batched Refactoring Plan Execution for Class Responsibility Redistribution , 2013, IEEE Transactions on Software Engineering.

[192]  Mohammad Alshayeb,et al.  Empirical investigation of refactoring effect on software quality , 2009, Inf. Softw. Technol..

[193]  Carlos José Pereira de Lucena,et al.  AutoRefactoring: A platform to build refactoring agents , 2015, Expert Syst. Appl..

[194]  Mark Kent O'Keeffe,et al.  Search-based refactoring for software maintenance , 2008, J. Syst. Softw..

[195]  Tom Mens,et al.  Does God Class Decomposition Affect Comprehensibility? , 2006, IASTED Conf. on Software Engineering.

[196]  Pearl Brereton,et al.  Lessons from applying the systematic literature review process within the software engineering domain , 2007, J. Syst. Softw..

[197]  Tibor Gyimóthy,et al.  Bulk Fixing Coding Issues and Its Effects on Software Quality: Is It Worth Refactoring? , 2014, 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.

[198]  Paul A. Strooper,et al.  Evaluating software refactoring tool support , 2006, Australian Software Engineering Conference (ASWEC'06).

[199]  Marjan Hericko,et al.  Evaluating Refactoring with a Quality Index , 2010 .

[200]  Mark Harman,et al.  Experimental assessment of software metrics using automated refactoring , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[201]  Paramvir Singh,et al.  Exploring Automatic Search in Digital Libraries: A Caution Guide for Systematic Reviewers , 2017, EASE.

[202]  Eleni Stroulia,et al.  Digging the Development Dust for Refactorings , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[203]  Andrew P. Black,et al.  How we refactor, and how we know it , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[204]  Claes Wohlin,et al.  Empirical evidence on the link between object-oriented measures and external quality attributes: a systematic literature review , 2013, Empirical Software Engineering.

[205]  Stephan Diehl,et al.  Are refactorings less error-prone than other changes? , 2006, MSR '06.

[206]  Mario Piattini,et al.  Analyzing the Harmful Effect of God Class Refactoring on Power Consumption , 2014, IEEE Software.

[207]  Gabriele Bavota,et al.  Methodbook: Recommending Move Method Refactorings via Relational Topic Models , 2014, IEEE Transactions on Software Engineering.

[208]  Richard Torkar,et al.  Software fault prediction metrics: A systematic literature review , 2013, Inf. Softw. Technol..

[209]  Muhammad Ali Babar,et al.  Identifying relevant studies in software engineering , 2011, Inf. Softw. Technol..

[210]  Hajimu Iida,et al.  Assessing Refactoring Instances and the Maintainability Benefits of Them from Version Archives , 2013, PROFES.

[211]  Mohamed Wiem Mkaouer,et al.  High dimensional search-based software engineering: finding tradeoffs among 15 objectives for automating software refactoring using NSGA-III , 2014, GECCO.

[212]  Tibor Gyimóthy,et al.  Do automatic refactorings improve maintainability? An industrial case study , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[213]  Iman Hemati Moghadam,et al.  Automated Refactoring for Testability , 2011, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops.

[214]  Rick Chern,et al.  The impact of static-dynamic coupling on remodularization , 2008, OOPSLA.