The use of development history in software refactoring using a multi-objective evolutionary algorithm

  • Authors:
  • Ali Ouni;Marouane Kessentini;Houari Sahraoui;Mohamed Salah Hamdi

  • Affiliations:
  • Université de Montréal, Montreal, PQ, Canada;Missouri University of Science and Technology, Rolla, MO, USA;Université de Montréal, Montreal, PQ, Canada;Ahmed Ben Mohamed Military College, Doha, Qatar

  • Venue:
  • Proceedings of the 15th annual conference on Genetic and evolutionary computation
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

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 refactorings 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.