skip to main content
10.1145/1083142.1083155acmotherconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Improving evolvability through refactoring

Published: 17 May 2005 Publication History

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.

References

[1]
S. Demeyer, S. Ducasse, and O. Nierstrasz. Object-oriented Reengineering Patterns. Morgan Kaufmann Publishers, An Imprint of Elsevier Scienence: San Francisco CA, USA, July 2002.
[2]
S. Demeyer and T. Mens. Evolution metrics. Proc. of the 4th Int. Workshop on Principles of Software Evolution, pages 83--86, 2001. Session 4A: Principles.
[3]
M. Fischer, M. Pinzger, and H. Gall. Populating a release history database from version control and bug tracking systems. Proc. Int. Conf. on Software Maintenance, pages 23--32, September 2003.
[4]
M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, June 1999.
[5]
H. Gall, J. Krajewski, and M. Jazayeri. CVS Release History Data for Detecting Logical Couplings. In Proc. 6th Int. Workshop on Principles of Software Evolution, pages 13--23. IEEE Computer Society Press, September 2003.
[6]
D. M. German, A. Hindle, and N. Jordan. Visualizing the evolution of software using softchange. Proc. 16th Int. Conf. on Software Engineering and Knowledge Engineering, pages 336--341, June 2004.
[7]
M. Godfrey, X. Dong, C. Kapser, and L. Zou. Four interesting ways in which history can teach us about software. Int. Workshop on Mining Software Repositories, May 2004.
[8]
C. F. Kemerer and S. A. Slaughter. An empirical approach to studying software evolution. IEEE Transactions on Software Engineering, 25(4):493--509, July-August 1999.
[9]
A. Mockus and D. M. Weiss. Predicting risk of software changes. Bell Labs Technical Journal, 5(2):169--180, April-June 2000.
[10]
T. J. Ostrand, E. J. Weyuker, and R. M. Bell. Where the bugs are. Proc. on the Int. Symposium on Software Testing and Analysis, pages 86--96, July 2004.
[11]
J. Ratzinger, M. Fischer, and H. Gall. Evolens: Lens-view visualizations of evolution data. Technical Report: Vienna University of Technology, December 2004.
[12]
F. Simon, F. Steinbrückner, and C. Lewernetz. Metrics based refactoring. Proc. European Conf. on Software Maintenance and Reengineering, pages 30--38, March 2001.
[13]
W. P. Stevens, G. J. Myers, and L. L. Constantine. Structured design. IBM Systems Journal, 13(2):115--139, May 1974.
[14]
E. van Emden and L. Moonen. Java quality assurance by detecting code smells. Proc. of the 9th Working Conf. on Reverse Engineering, pages 97--108, October 2002.
[15]
T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. Proc. Int. Conf. on Software Engineering, pages 563--572, May 2004.

Cited By

View all
  • (2019)On the Impact of Refactoring on the Relationship between Quality Attributes and Design Metrics2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM.2019.8870177(1-11)Online publication date: Sep-2019
  • (2019)Software EvolutionHandbook of Software Engineering10.1007/978-3-030-00262-6_6(223-284)Online publication date: 12-Feb-2019
  • (2018)On the identification of design problems in stinky code: experiences and tool supportJournal of the Brazilian Computer Society10.1186/s13173-018-0078-y24:1Online publication date: 22-Oct-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
MSR '05: Proceedings of the 2005 international workshop on Mining software repositories
May 2005
109 pages
ISBN:1595931236
DOI:10.1145/1083142
  • cover image ACM SIGSOFT Software Engineering Notes
    ACM SIGSOFT Software Engineering Notes  Volume 30, Issue 4
    July 2005
    1514 pages
    ISSN:0163-5948
    DOI:10.1145/1082983
    Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 May 2005

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. change smells
  2. refactoring
  3. software evolution

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)0
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2019)On the Impact of Refactoring on the Relationship between Quality Attributes and Design Metrics2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM.2019.8870177(1-11)Online publication date: Sep-2019
  • (2019)Software EvolutionHandbook of Software Engineering10.1007/978-3-030-00262-6_6(223-284)Online publication date: 12-Feb-2019
  • (2018)On the identification of design problems in stinky code: experiences and tool supportJournal of the Brazilian Computer Society10.1186/s13173-018-0078-y24:1Online publication date: 22-Oct-2018
  • (2018)Program Analysis and Graph Pattern Matching to Reveal Modularity and Potential for Parallelism2018 25th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC.2018.00083(648-652)Online publication date: Dec-2018
  • (2018)Exploring architecture blueprints for prioritizing critical code anomalies: Experiences and tool supportSoftware: Practice and Experience10.1002/spe.256348:5(1077-1106)Online publication date: 2-Feb-2018
  • (2017)Revealing design problems in stinky codeProceedings of the 11th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3132498.3132514(1-10)Online publication date: 18-Sep-2017
  • (2017)Correlation between Complex Network Features and Robustness in Linux Kernel Modules2017 International Conference on Software Analysis, Testing and Evolution (SATE)10.1109/SATE.2017.18(80-89)Online publication date: Nov-2017
  • (2017)Can latent topics in source code predict missing architectural tactics?Proceedings of the 39th International Conference on Software Engineering10.1109/ICSE.2017.10(15-26)Online publication date: 20-May-2017
  • (2015)Identification and Elimination of Platform-Specific Code Smells in High Performance Computing ApplicationsInternational Journal of Networking and Computing10.15803/ijnc.5.1_1805:1(180-199)Online publication date: 2015
  • (2015)ReferencesEmpirical Research in Software Engineering10.1201/b19292-15(445-458)Online publication date: 29-Sep-2015
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media