Analysis of Refactoring Effect on Software Quality of Object-Oriented Systems

Software industry primarily recognizes the significance of high quality, robust, reliable, and maintainable software. The industry always demands for efficient solutions that can improve the quality of software. Refactoring is one such potential solution; however, literature shows varied results of the application of refactoring techniques on software quality attributes. There are number of refactoring techniques that still needs to be empirically validated. This paper focuses on analyzing the effect of four unexplored refactoring techniques on different software quality attributes like coupling, cohesion, complexity, inheritance, reusability, and testability on object-oriented softwares. Impact analysis is performed by calculating Chidamber-Kemerer (CK) metrics of the projects, both before and after applying the refactoring techniques, and the results are statistically validated. Empirical analysis of results revealed that different refactoring techniques have different effects on internal and external quality attributes of object-oriented systems.

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

[2]  Ruchika Malhotra Empirical Research in Software Engineering: Concepts, Analysis, and Applications , 2015 .

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

[4]  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.

[5]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

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

[7]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[8]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

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

[10]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[11]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

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

[13]  Fatma Dandashi,et al.  A method for assessing the reusability of object-oriented code using a validated set of automated measurements , 2002, SAC '02.

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

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

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

[17]  Arie van Deursen,et al.  An empirical study into class testability , 2006, J. Syst. Softw..

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

[19]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

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