Improving evolvability through refactoring

  • Authors:
  • Jacek Ratzinger;Michael Fischer;Harald Gall

  • Affiliations:
  • Vienna University of Technology, Vienna, Austria;Vienna University of Technology, Vienna, Austria;University of Zurich, Zurich, Switzerland

  • Venue:
  • MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Refactoring is one means of improving the structure of existing software. Locations for the application of refactoring are often based on subjective perceptions such as "bad smells", which are vague suspicions of design shortcomings. We exploit historical data extracted from repositories such as CVS and focus on change couplings: if some software parts change at the same time very often over several releases, this data can be used to point to candidates for refactoring. We adopt the concept of bad smells and provide additional change smells. Such a smell is hardly visible in the code, but easy to spot when viewing the change history. Our approach enables the detection of such smells allowing an engineer to apply refactoring on these parts of the source code to improve the evolvability of the software. For that, we analyzed the history of a large industrial system for a period of 15 months, proposed spots for refactorings based on change couplings, and performed them with the developers. After observing the system for another 15 months we finally analyzed the effectiveness of our approach. Our results support our hypothesis that the combination of change dependency analysis and refactoring is applicable and effective.