Impact of Refactoring on Code Quality Improvement in Software Maintenance

Quality software are robust, reliable and easy to maintain, and therefore reduces the cost of software maintenance. But as software systems undergo modifications, improvements and enhancements to cope with evolving requirements, quality of software can be decreased. Refactoring is one of the methods which have been applied to improve software quality. Supporters claim that it helps increasing the quality of the code, making it easier to understand, modify and maintain. However, there is only limited empirical evidence of such assumption. Therefore it is sometimes difficult to judge whether the refactoring in question should be applied or not without knowing the effect accurately. The purpose of this study is to validate/invalidate the claims that refactoring improves software quality. Experimental research approach is used to achieve the main objectives of this study which is to quantitatively measure the impact of refactoring on code quality improvement in software maintenance. Ten refactoring techniques were evaluated through the experiment in order to access Resource Utilization, Changeability and Analysability which are ISO sub Quality factors. The result for analysability shows a slight advantage for refactoring, but the assumption of increased analysability does not answered from the analysability test. Concerning changeability, both the result and hypothesis test shows disadvantage for refactored code. The analysis of resource utilization also provides hints on disadvantages of the refactoring technique like increase resource consumption in terms of obtained disk space by source files.

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

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

[3]  Rafa E. Al-Qutaish Quality Models in Software Engineering Literature: An Analytical and Comparative Study , 2010 .

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

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

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

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

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

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

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

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

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

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