Analyzing Code Smell Removal Sequences for Enhanced Software Maintainability

Code smells are the surface indications which affect the maintainability of the software. Code smells disturb the maintainability of the code by starting a chain reaction of breakages in dependent modules which makes it difficult to read and modify. Applying appropriate refactoring sequences by prioritizing the classes to obtain maintainable software is a tedious process due to strict deadlines of the projects for the developers. Recent researches have explored varied ways of ranking the classes to improve the maintainability. This work empirically investigates the impact of eliminating three prominent code smells by considering their six possible combinations. Our work prioritizes the object oriented software classes in the code that are in the need of refactoring. For prioritizing the refactoring prone classes, a proposed metric, maintainability complexity index is calculated using the values of maintainability index and relative logical complexity as the inputs. The study outcomes show the values of maintainability predicting metrics for the corresponding permutation of the code smell removal sequence. Also, the work aims to yield the sequence which gives software with maximum maintainability so that developers and researchers can save their effort and time to produce high quality software.

[1]  João Araújo,et al.  Searching for Opportunities of Refactoring Sequences: Reducing the Search Space , 2008, 2008 32nd Annual IEEE International Computer Software and Applications Conference.

[2]  Bente Anda,et al.  Assessing Software System Maintainability using Structural Measures and Expert Assessments , 2007, 2007 IEEE International Conference on Software Maintenance.

[3]  Alessandro F. Garcia,et al.  Enhancing the Detection of Code Anomalies with Architecture-Sensitive Strategies , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[4]  Paramvir Singh,et al.  Minimizing Refactoring Effort through Prioritization of Classes based on Historical, Architectural and Code Smell Information , 2016, QuASoQ/TDA@APSEC.

[5]  Sebastian Eder,et al.  Prioritizing maintainability defects based on refactoring recommendations , 2014, ICPC 2014.

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

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

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

[9]  Pornsiri Muenchaisri,et al.  Selecting sequence of refactoring techniques usage for code changing using greedy algorithm , 2013, 2013 IEEE 4th International Conference on Electronics Information and Emergency Communication.

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

[11]  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).

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

[13]  Panita Meananeatra,et al.  Identifying refactoring sequences for improving software maintainability , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

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

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

[16]  Marc Frappier,et al.  Software Metrics for Predicting Maintainability , 1994 .

[17]  Daniela Cruzes,et al.  Are all code smells harmful? A study of God Classes and Brain Classes in the evolution of three open source systems , 2010, 2010 IEEE International Conference on Software Maintenance.