[论文解读] 30 Years of Software Refactoring Research:A Systematic Literature Review
本篇系统性文献回顾分析了过去30年中3,183篇关于软件重构的科研论文,提出了一套全面的分类体系以梳理该领域零散的研究现状。研究识别出超越代码层级重构的演进趋势,包括架构级、模型级以及以非功能性目标为导向的重构,并指出了在重构调度、推荐、机会检测和正确性验证方面存在的关键研究空白。
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.
研究动机与目标
- 通过整合过去三十年间3,183篇论文的研究成果,对零散的软件重构研究领域进行系统化梳理。
- 识别出超越传统代码重构的新兴研究趋势,包括在架构、模型及需求层级上的应用。
- 考察重构在云计算、移动应用和Web系统等多样化领域中的采纳情况。
- 探究重构如何被用于实现非功能性质量属性,如性能、安全性和可维护性。
- 揭示当前研究中尚未充分探索的关键研究空白,特别是在重构调度、具体操作推荐、机会检测以及正确性验证方面。
提出的方法
- 在主要学术数据库和文献库中,基于预设的搜索标准开展系统性文献回顾。
- 筛选并分析了1990年至2020年间发表的3,183篇科研论文,以确保覆盖全面。
- 开发了一个多维分类体系,根据层级(代码、架构、模型、需求)、范式(面向对象、非面向对象)以及目标(设计、性能、安全等)对重构研究进行分类。
- 通过元数据和内容训练,识别时间趋势、研究重点的演变以及研究社区的碎片化现象。
- 采用主题分析法,从文献中提取出反复出现的挑战与研究方向。
- 通过作者间的迭代评审与共识达成,验证研究发现的准确性与完整性。
实验结果
研究问题
- RQ1在过去30年中,软件重构研究的范围在不同软件开发层级(代码、架构、模型、需求)上如何演变?
- RQ2重构应用的主要范式与领域是什么?这些范式与领域随时间如何变化?
- RQ3重构在多大程度上被用于提升非功能性质量属性,如性能、安全性和可维护性?
- RQ4当前研究中,哪些重构相关挑战仍处于被忽视状态,特别是重构时机调度、具体重构建议推荐以及正确性验证方面?
- RQ5在重构研究中,研究社区在不同领域、目标与方法论路径上如何呈现碎片化特征?
主要发现
- 重构研究已显著超越传统的面向对象代码重构,扩展至架构级、模型级及需求层级的转换。
- 在云环境与移动系统中,越来越多的研究趋势聚焦于通过重构提升非功能性属性,如性能、安全性和可扩展性。
- 尽管关注度上升,但关于最优重构时机调度、具体重构操作推荐以及重构机会检测的研究仍显不足。
- 实际应用中,重构的正确性极少得到验证,暴露出工具支持与形式化验证方面的关键缺口。
- 该领域在不同社区与应用领域间高度碎片化,跨领域整合与共享框架仍严重缺乏。
- 本研究构建的分类体系涵盖12类重构研究,揭示了研究重心从纯粹的设计优化逐步转向更广泛的软件质量目标。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。