Abstract
One of the widely used techniques for evolving software systems is refactoring, a maintenance activity that improves design structure while preserving the external behavior. Exploring past maintenance and development history can be an effective way of finding refactoring opportunities. Code elements which undergo changes in the past, at approximately the same time, bear a good probability for being semantically related. Moreover, these elements that experienced a huge number of refactoring in the past have a good chance for refactoring in the future. In addition, the development history can be used to propose new refactoring solutions in similar contexts. In this paper, we propose a multi-objective optimization-based approach to find the best sequence of refactoring's that minimizes the number of bad-smells and maximizes the use of development history and semantic coherence. To this end, we use the non-dominated sorting genetic algorithm (NSGA-II) to find the best trade-off between these three objectives. We report the results of our experiments using different large open-source projects. Copyright © 2013 ACM.
Recommended Citation
A. Ouni et al., "The Use of Development History in Software Refactoring using a Multi-objective Evolutionary Algorithm," GECCO 2013 - Proceedings of the 2013 Genetic and Evolutionary Computation Conference, pp. 1461 - 1468, Association for Computing Machinery (ACM), Sep 2013.
The definitive version is available at https://doi.org/10.1145/2463372.2463554
Department(s)
Computer Science
Keywords and Phrases
Code change; Design defects; Refactoring; Search-based software engineering; Semantics
International Standard Book Number (ISBN)
978-145031963-8
Document Type
Article - Conference proceedings
Document Version
Citation
File Type
text
Language(s)
English
Rights
© 2024 Association for Computing Machinery, All rights reserved.
Publication Date
02 Sep 2013