Software refactoring has been recognised as a valuable process during software development and is often aimed at repaying technical debt. Technical debt arises when a software product has been built or amended without full care for structure and extensibility. Refactoring is useful to keep technical debt low and if it can be automated there are obvious efficiency benefits. Using a combination of automated refactoring techniques, software metrics and metaheuristic searches, an automated refactoring tool can improve the structure of a software system without affecting its functionality. In this paper, four different refactoring approaches are compared using an automated software refactoring tool. Weighted sums of metrics are used to form different fitness functions that drive the search process towards certain aspects of software quality. Metrics are combined to measure coupling, abstraction and inheritance and a fourth fitness function is proposed to measure reduction in technical debt. The 4 functions are compared against each other using 3 different searches on 6 different open source programs. Four out of the 6 programs show a larger improvement in the technical debt function after the search based refactoring process. The results show that the technical debt function is useful for assessing improvement in quality.
Bibliographical noteAccepted and published online. Printed version available.
- search based software engineering
- automated refactoring
- refactoring tools
- technical debt
- software metrics
- simulated annealing
ASJC Scopus subject areas
- Human-Computer Interaction
- Artificial Intelligence
Mohan, M., Greer, D., & McMullan, P. (2016). Technical Debt Reduction using Search Based Automated Refactoring. Journal of Systems and Software, 120, 183-194. . https://doi.org/10.1016/j.jss.2016.05.019