Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
97 tokens/sec
GPT-4o
53 tokens/sec
Gemini 2.5 Pro Pro
43 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
47 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

30 Years of Software Refactoring Research:A Systematic Literature Review (2007.02194v1)

Published 4 Jul 2020 in cs.SE

Abstract: Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools and techniques on software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improve the system design while preserving the behavior. Refactoring studies are expanded beyond code-level restructuring to be applied at different levels (architecture, model, requirements, etc.), adopted in many domains beyond the object-oriented paradigm (cloud computing, mobile, web, etc.), used in industrial settings and considered objectives beyond improving the design to include other non-functional requirements (e.g., improve performance, security, etc.). Thus, challenges to be addressed by refactoring work are, nowadays, beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring, recommendations of specific refactoring activities, detection of refactoring opportunities, and testing the correctness of applied refactorings. Therefore, the refactoring research efforts are fragmented over several research communities, various domains, and objectives. To structure the field and existing research results, this paper provides a systematic literature review and analyzes the results of 3183 research papers on refactoring covering the last three decades to offer the most scalable and comprehensive literature review of existing refactoring research studies. Based on this survey, we created a taxonomy to classify the existing research, identified research trends, and highlighted gaps in the literature and avenues for further research.

User Edit Pencil Streamline Icon: https://streamlinehq.com
Authors (5)
  1. Chaima Abid (1 paper)
  2. Vahid Alizadeh (2 papers)
  3. Marouane Kessentini (7 papers)
  4. Thiago do Nascimento Ferreira (1 paper)
  5. Danny Dig (9 papers)
Citations (292)

Summary

  • The paper systematically reviews 30 years of refactoring research by analyzing 3183 studies to map the evolution of refactoring methods.
  • It introduces a comprehensive refactoring life-cycle including detection, testing, and automation phases, emphasizing both code and model adjustments.
  • The study highlights a research gap in security and non-code refactoring, urging further industry collaboration to validate academic findings.

Analysis of "30 Years of Software Refactoring Research: A Systematic Literature Review"

The paper, "30 Years of Software Refactoring Research: A Systematic Literature Review," delivers an exhaustive examination of the refactoring landscape, capturing the progression and diversification of this research domain over three decades. This systematic literature review provides an organized aggregation and analysis of 3183 research papers, constituting one of the most scaling efforts to synthesize refactoring research to date. The methodology behind this review is rigorous, adhering to processes that enhance the paper's validity and its utility for both academia and industry.

Refactoring Life-Cycle

The paper introduces a well-articulated refactoring life-cycle consisting of detection, prioritization, recommendation, testing, documentation, and prediction phases. Detection remains a core concern, involving the identification of refactoring opportunities, which extends beyond mere code analysis to more abstract software artifacts. Testing receives significant attention, given its critical role in verifying refactoring correctness and ensuring behavioral preservation. The emphasis on automation in these phases optimizes resources, thus promoting widespread adoption.

Artifacts Affected by Refactoring

Refactoring transcends code-level adjustment, impacting various software artifacts, such as models and architectures. As noted, the dominance of code refactoring persists, but substantial research has emerged surrounding model refactoring. The relative scarcity of studies on GUI and database refactoring indicates potential areas for future exploration, especially given their complex semantics and integral role in software systems.

Refactoring Objectives

This systematic exploration of refactoring objectives highlights improvements in internal quality (e.g., maintainability) as a primary driver. Notably, security-focused refactoring remains underexplored, suggesting a gap between the significance of security in software systems and the proportion of research addressing it. Additionally, enhancing external quality and performance continues to be bolstered through refactoring efforts.

Refactoring Techniques

The survey categorizes prevalent techniques in refactoring, identifying a preference for search-based and data mining approaches. Search-based methodologies are valued for their applicability in tackling complex, multi-dimensional problems within the domain, while data mining facilitates the derivation of patterns and insights from expansive code repositories. These approaches' prominence underscores their effectiveness in resolving intricate challenges that arise during refactoring.

Evaluation and Practical Implications

The methodology utilized in evaluating refactoring strategies predominantly relies on open-source systems, which poses questions about the extent to which these findings generalize to proprietary and industrial settings. Further industry collaboration is advocated to bridge this gap, enhancing the practical relevance of academic findings. The introduction of a comprehensive platform to facilitate the dissemination and organization of refactoring research promises to foster synergistic relationships among refactoring communities and practitioners, thus expediting field advances.

In conclusion, this paper underscores the diversification and maturation of refactoring research and calls attention to areas requiring further exploration. Its extensive analysis coupled with a well-structured taxonomy serves as a critical resource for future endeavors in refactoring, both theoretical and practical. The presented methodological rigor and resulting insights are poised to significantly influence ongoing and forthcoming research trajectories.