Towards a Catalog of Composite Refactorings
Aline Brito, Andre Hora, Marco Tulio Valente

TL;DR
This paper introduces a catalog of eight composite refactorings, developed through mining and analyzing refactoring histories, to enhance understanding and communication of complex code transformations in software maintenance.
Contribution
It proposes and documents a novel catalog of composite refactorings and provides scripts for mining such refactorings from version histories.
Findings
Identified and characterized eight composite refactorings.
Demonstrated the use of scripts to detect composites in real projects.
Analyzed the size and location of composite refactorings in open-source projects.
Abstract
Catalogs of refactoring have key importance in software maintenance and evolution, since developers rely on such documents to understand and perform refactoring operations. Furthermore, these catalogs constitute a reference guide for communication between practitioners since they standardize a common refactoring vocabulary. Fowler's book describes the most popular catalog of refactorings, which documents single and well-known refactoring operations. However, sometimes refactorings are composite transformations, i.e., a sequence of refactorings is performed over a given program element. For example, a sequence of Extract Method operations (a single refactoring) can be performed over the same method, in one or in multiple commits, to simplify its implementation, therefore, leading to a Method Decomposition operation (a composite refactoring). In this paper, we propose and document a…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Reliability and Analysis Research · Software Engineering Techniques and Practices
