Litcius/Paper detail

An Empirical Study of Refactoring Rhythms and Tactics in the Software Development Process

Shayan Noei, Heng Li, Stefanos Georgiou, Ying Zou

2023IEEE Transactions on Software Engineering12 citationsDOI

Abstract

It is critical for developers to develop high-quality software to reduce maintenance cost. While often, developers apply refactoring practices to make source code readable and maintainable without impacting the software functionality. Existing studies identify development rhythms (i.e., weekly development patterns) and their relationship with various metrics, such as productivity. However, existing studies focus entirely on development rhythms. There is no study on refactoring rhythms and their relationship with code quality. Moreover, the existing studies categorize the refactoring tactics (i.e., long-term refactoring patterns) into two general concepts of consistent and inconsistent refactoring. Nevertheless, the existence of other tactics and their relationship with code quality is not explored. In this paper, we conduct an empirical study on the refactoring practices of 196 Apache projects in the early, middle, and late stages of development. We aim to identify (1) existing refactoring rhythms, (2) further refactoring tactics, and (3) the relationship between the identified tactics and rhythms with code quality. The recognition of existing refactoring strategies and their relationship with code quality can assist practitioners in recognizing and applying the appropriate and high-quality refactoring rhythms or tactics to deliver a higher quality of software. We find two frequently used refactoring rhythms: work-day refactoring and all-day refactoring. We also identify two deviations of floss and root canal refactoring tactics as: intermittent root canal, intermittent spiked floss, frequent spiked floss, and frequent root canal. We find that root canal-based tactics are correlated with less increase in the code smells (i.e., higher quality code) compared to floss-based tactics. Moreover, we find that refactoring rhythms are not significantly correlated with the quality of the code. Furthermore, we provide detailed information on the relationship of each refactoring tactic to each code smell type.

Topics & Concepts

Code refactoringComputer scienceCode smellSoftware qualityQuality (philosophy)Technical debtCode (set theory)Software developmentProcess (computing)CategorizationSoftware systemSoftware maintenanceRoot causeSoftware engineeringSoftwareProgramming languageArtificial intelligenceEngineeringReliability engineeringEpistemologySet (abstract data type)PhilosophySoftware Engineering ResearchSoftware System Performance and ReliabilitySoftware Reliability and Analysis Research
An Empirical Study of Refactoring Rhythms and Tactics in the Software Development Process | Litcius