30 Years of Software Refactoring Research:A Systematic Literature Review
由于软件系统的复杂性不断增加,在过去的十年里,软件重构工具和技术的需求急剧增加,传统上被定义为一组旨在改进系统设计同时保留行为的程序转换。重构研究已经扩展到代码级重构之外,应用于不同级别(架构、模型、需求等),在面向对象范式之外的许多领域(云计算、移动、Web等)中采用,在工业环境中使用,并且考虑的目标超出了改进设计以包括其他非功能性要求(例如,改进性能、安全性等)。因此,重构工作所要解决的挑战现在已经超出了代码转换,包括但不限于安排进行重构的适当时间、推荐特定重构活动、检测重构机会以及测试所应用重构的正确性。因此,重构的研究工作分散在几个研究团体,不同的领域和目标。为了构建该领域和现有的研究成果,本文提供了一个系统的文献综述,并分析了3183篇关于重构的研究论文,涵盖了过去三十年的结果,提供了最具可扩展性和最全面的文献综述现有的重构研究。基于这项调查,我们创建了一个分类法来分类现有的研究,确定了研究趋势,并强调了文献中的差距和进一步研究的途径。
2020-07-04 cs.SE
Software Testing and Code Refactoring: A Survey with Practitioners
本研究面向软件测试从业者开展调研,探究其代码重构实践的收益与局限,发现重构可助力自动化测试维护、提升团队绩效,但存在管理层重视不足等障碍,为测试人员提升编码能力提供参考。
2023-10-03 cs.SE
Smells and Refactorings for Software Environmental Sustainability: A Systematic Literature Review
University of Pisa(比萨大学)
本系统文献综述识别了20种影响软件环境可持续性的绿色坏味道,并将其映射到相应的重构技术,为从业者提供实用指导并为可持续软件工程研究奠定基础。
2026-10-06 cs.SE
One Thousand and One Stories: A Large-Scale Survey of Software Refactoring
尽管在流行的IDE中重构是一个可用的功能,但最近的研究表明,开发人员不愿意使用它们,仍然更喜欢手动重构代码。在JetBrains,我们的目标是完全支持基于IntelliJ的IDE中的重构功能,并提高它们在实践中的采用率。因此,我们首先提出以下主要问题。人们到底是如何重构代码的?什么样的重构最受欢迎?为什么有些开发人员倾向于不使用方便的IDE重构工具?在本文中,我们通过设计和实施一项针对1,183名基于IntelliJ的IDE用户的调查来调查所提出的问题。我们对调查结果的定量和定性分析表明,几乎三分之二的开发人员在一次会话中花费超过一个小时的时间重构他们的代码;重构类型在流行程度上差异很大;许多开发人员希望了解更多关于IDE重构功能的信息,但缺乏这样做的方法。这些结果在内部为我们提供了支持下一代重构功能的支持,也可以帮助我们的研究社区在重构可用性研究中建立新的方向。
2021-07-16 cs.SE
Refactoring for Reuse: An Empirical Study
重构是优化软件健康的实际实践。虽然一些研究提出了重构策略,通过应用设计模式和删除设计缺陷来优化软件设计,但很少有人知道开发人员实际上如何重构代码以提高其重用性。因此,我们从1,828个开源项目中提取了一组旨在提高软件可重用性的重构。我们分析了可重用性重构对最先进的可重用性度量的影响,并比较了可重用性重构类型的分布,以及其余主流重构的分布。总的来说,我们发现在可重用性的上下文中应用的重构类型的分布与主流开发中重构类型的分布不同。在为提高可重用性而执行的重构中,源文件受到更多设计级别类型的重构的影响。可重用性重构会显著影响高级代码元素,如包、类和方法,而典型的重构会影响所有代码元素,包括标识符和参数。这些发现提供了实际的见解,目前的重构实践中的代码重用的背景下,涉及重构的行为。
2021-11-13 cs.SE
Unveiling process insights from refactoring practices
软件理解和维护活动,如重构,据说会受到软件复杂性的负面影响。用于度量软件产品和过程复杂性的方法已经在文献中进行了彻底的讨论。然而,对这两个维度之间可能存在的联系的认识,特别是对使用过程视角的好处的认识,还有很长的路要走。目的:提高对重构任务中开发人员活动和软件复杂性之间联系的理解,即通过评估使用过程挖掘方法和工具从IDE收集的过程度量是否适合于准确分类不同的重构实践和由此产生的软件复杂性。方法:我们从一个软件产品中挖掘源代码度量,在一个质量改进任务被并行地交给(117)个软件开发人员后,组织在(71)个团队中。同时,我们从他们的IDE工作会话(320)中收集事件,并使用流程挖掘来建模他们的流程并提取相应的度量。结果如下:大多数使用插件进行重构的团队(JDeodorant)比只使用Eclipse本机特性执行重构的团队更有效地降低了软件复杂性,并且流程更简单。我们能够找到适度的相关性(43%)之间的软件圈复杂度和过程圈复杂度。重构方法和圈复杂度预测的最佳模型分别有92.95%和94.36%的准确率。结论:我们的方法与程序设计语言、地理位置或开发实践无关。最初的发现是令人鼓舞的,并导致我们建议从业者可以使用我们的方法在其他开发任务,如缺陷分析和单元或集成测试。
2020-10-29 cs.SE
Automated Unit Test Refactoring
针对测试异味导致测试代码质量低、维护难及现有自动化重构方法灵活性不足的问题,提出基于LLM的上下文增强框架UTRefactor,通过思维链模拟手动重构并结合检查点机制,在6个开源Java项目测试中实现89%异味消除率,性能显著优于现有方法。
2025-02-11 cs.SE
Towards Refactoring FRETish Requirements
与软件一样,需求在开发过程中也会不断发展和变化。重构是在不改变其行为的情况下重新组织软件的过程,以使其更容易理解和修改。我们建议重构正式的要求,以减少重复的要求,使他们更容易维护系统和要求的发展。这个工作在进行中的文件描述了我们的动机和初步的方法来重构NASA的正式需求获取工具(FRET)的要求。这项工作是由我们在工业飞机发动机软件控制器用例方面的经验直接触发的。在本文中,我们反映了所获得的要求,并鉴于其可维护性,提出和概述的功能,重构FRETISH要求。
2022-01-12 cs.SE
Same Same But Different: Preventing Refactoring Attacks on Software Plagiarism Detection
针对编程教育中基于重构的混淆攻击易绕过现有代码抄袭检测系统的问题,本文提出一种结合代码属性图与图变换的可扩展增强框架,经真实学生提交样本评估,显著提升了抄袭代码检测效果。
2025-10-29 cs.SE
Software refactoring and rewriting: from the perspective of code transformations
本文从代码变换视角研究软件重构,借鉴 micropass/nanopass 编译器思想,通过组合并自动化压缩代码变换,使重构过程足够简短以便人工验证正确性,并在两个项目中实现了 10-100 倍的简化。
2023-08-12 cs.SE
Refactoring Software Packages via Community Detection from Stability Point of View
随着软件项目的复杂性和规模在现实环境中的增加,维护和创建可维护性和可靠的代码变得更加困难和昂贵。重构被认为是一种增强代码内部结构的方法,以改善许多软件属性,如可维护性。在这篇论文中,讨论了使用社区发现算法重构软件包的主题,重点是软件包稳定性的概念。该算法首先从Java字节码中提取一个包依赖网络,然后使用一个社区发现算法来发现包结构中可能发生的变化。在这项工作中,考虑依赖方向的重要性,而建模包依赖关系与图形的原因也进行了讨论,并证明包的稳定性和模块化的包依赖图之间的关系,显示模块化是如何有利于包的稳定性。为了评估所提出的算法,实时分析的软件包的工具,实现了两个软件系统进行了测试。结果表明,建模包依赖关系与有向图和应用所提出的重构方法,导致更高的增加包的稳定性比无向图建模方法,已在文献中研究。
2018-11-26 cs.SE
Assessing the Impact of Refactoring Energy-Inefficient Code Patterns on Software Sustainability: An Industry Case Study
本文通过大型应用行业案例研究,评估自动化工具识别并重构能源低效代码模式的效果,发现重构后每用户每月能耗降低29%。
2025-06-11 cs.SE
Improving Code Comprehension through Cognitive-Load Aware Automated Refactoring for Novice Programmers
Jahangirnagar University(贾汉吉尔纳加尔大学);Case Western Reserve University(凯斯西储大学);Missouri University of Science and Technology(密苏里科技大学)
本文提出基于认知驱动开发的自动化重构方法CDDRefactorER,通过减少控制流复杂度提升初学者代码理解,实验显示其在减少重构失败和降低复杂度方面效果显著。
2026-04-16 cs.SE
The Impact of Auto-Refactoring Code Smells on the Resource Utilization of Cloud Software
基于云的软件即服务(SaaS)由于其低成本和弹性而受到欢迎。然而,与其他软件一样,SaaS应用程序也会受到代码气味的影响,这会严重影响功能和资源使用。代码气味是指源代码中任何表明存在更深层次问题的设计。软件社区部署了自动化重构来消除气味,这可以提高性能并减少关键资源的使用。然而,分析SaaS中自动重构气味对CPU和内存等资源的影响的研究在一定程度上是有限的。在这里,我们的目标是填补这一空白,并研究SaaS应用程序的资源使用的影响,由于自动重构的七个经典的代码气味:上帝类,功能嫉妒,类型检查,循环依赖,鸟枪手术,上帝的方法,和意大利面条代码。我们从Github中指定了六个实际的SaaS应用程序,分别是Zimbra,OneDataShare,GraphHopper,Hadoop,JENA和JAMES,它们在Openstack云上运行。结果表明,JDeodrant和JSparrow等工具重构气味对基于气味重构类型的测试应用程序的CPU和内存消耗有着广泛不同的影响。我们提出了每种气味对资源利用的影响,并讨论了导致这种影响的潜在原因。
2020-08-14 cs.SE
MultiRefactor: Automated Refactoring To Improve Software Quality
本文提出了一种新的软件维护自动化方法。该工具能够执行26种不同的重构。它还包含大量的度量标准来衡量重构对软件的影响,以及六种不同的基于搜索的优化算法来改进软件。该工具包含用于软件改进的单目标和多目标搜索技术,并完全自动化。本文介绍了该工具的各种功能,它的独特之处,并提出了一些实验研究结果。在五个不同的代码库中对各个指标进行测试,以推断出最有效的质量改进指标。发现与代码的更具体元素相关的度量对于驱动搜索中的变化更有用。单目标的遗传算法也测试对多目标算法,看看如何比较所获得的结果与三个单独的目标。当比较每个目标的最佳解决方案时,多目标方法可以在更短的时间内产生适当的质量改进,从而实现快速的维护周期。
2017-10-16 cs.SE
Understanding the Energy Impact of Software Refactoring: A Workload-Aware Study of Controlled Examples and Real-World Commits
Concordia University(康考迪亚大学);Polytechnique Montréal(蒙特利尔高等理工学院)
该研究通过微基准与真实世界基准的大规模实证分析,发现重构的能源影响受工作负载显著影响,现有方法无法可靠识别重构引发的能源回归,需开发更准确的预测技术。
2026-08-10 cs.SE
Evaluation of Software Quality Through Refactoring Commit-Impact Analysis
Islamic University of Technology(伊斯兰技术大学)
本研究通过检查重构提交前后代码变更的影响,结合软件度量与GitHub开源软件的静态代码分析,探究代码修改与软件质量的相关性。
2026-10-12 cs.SE
RefDiff: Detecting Refactorings in Version Histories
重构是一种众所周知的技术,被软件工程师广泛采用,以改进设计并使系统能够进化。了解在代码更改中应用了哪些重构操作对于理解软件演化、调整软件组件、合并代码更改和其他应用程序是有价值的信息。在本文中,我们提出了RefDiff,这是一种自动化方法,可以识别git存储库中两个代码修订之间执行的重构。RefDiff采用了基于静态分析和代码相似性的方法来检测13种常见的重构类型。在使用分布在7个Java项目中的448个已知重构操作的Oracle进行的评估中,我们的方法实现了100%的精确度和88%的召回率。此外,我们的评估表明,RefDiff比现有的最先进的方法具有更高的精度和召回率。
2017-04-05 cs.SE
Software Cloning in Extreme Programming Environment
随着时间的推移,软件系统通过添加新功能和修改现有功能而不断发展。随着软件的演化,软件的结构变得越来越复杂,软件系统的可理解性和可维护性也日益恶化。这些不仅重要,而且是软件开发中最昂贵的活动之一。重构经常被应用到软件中来改进它们。重构的目标之一是限制代码克隆,因为它阻碍了软件维护并影响其质量。为了应对不断的变化,重构被视为极限编程的重要组成部分。敏捷方法将重构作为重要的关键实践,是开发无克隆代码的首选。本文总结了我对软件克隆分析的概述。首先讨论了代码克隆的概念、类型、产生原因、后果和分析。重点介绍了极限编程环境下的代码克隆,并指出克隆检测是重构的有效工具。
2014-08-21 cs.SE
Resolving code smells in software product line using refactoring and reverse engineering
软件产品线SPL被认为是软件开发中一种成功的复用方法,其目的是降低生产成本。这种方法允许产品在特定的特性和限制方面有所不同,以覆盖不同的市场。软件产品线工程是产品线中的生产过程。它利用软件产品之间的共性,但也保留了这些产品之间的功能变化的能力。有时,在此过程中不适当的SPL实现可能导致代码气味或代码异常。代码气味被认为是源代码中的问题,可能会影响SPL派生产品的质量。由于重用,SPL的许多派生产品中也会出现同样的问题。重构技术可以在不改变源代码外部行为的前提下改善源代码的内部结构,是解决这一问题的一种可能的方法.本文提出了一种从源代码构建SPL的方法,其目的是通过重构源代码来减少SPL中的代码气味.该方法的另一部分是基于逆向工程来设计SPL.
2020-11-29 cs.SE
Automated Refactoring of Nested-IF Formulae in Spreadsheets
电子表格是最受欢迎的终端用户编程软件,其中公式就像程序一样,也有气味。电子表格公式的一个公认的共同气味是嵌套IF表达式,其可读性低,用户认知成本高,并且在重用或维护期间容易出错。然而,最终用户通常缺乏必要的程序设计语言知识和技能来解决甚至意识到问题。以前的研究工作在这方面做了非常初步的尝试,而目前还没有有效的自动化方法。本文首先提出了一种基于AST的自动化方法来系统地重构嵌套IF公式。总的想法是双重的。首先,我们检测并删除AST上的逻辑冗余。其次,我们确定了更高层次的语义已经支离破碎,分散,并重新组装语法使用简洁的内置函数。一个全面的评估已经进行了对现实世界的电子表格语料库,这是收集在一家领先的IT公司的研究目的。对68,000多个电子表格和2700万个nest-IF公式的结果表明,我们的方法能够消除超过99%的nest-IF公式的气味。超过50%的重构将嵌套IF的嵌套级别减少了一半以上。此外,一项涉及49名参与者的调查表明,在大多数情况下,参与者更喜欢重构公式,并同意这种自动重构方法是必要的和有用的。
2017-12-28 cs.SE
On Preserving the Behavior in Software Refactoring: A Systematic Mapping Study
重构是一种在不改变系统行为的情况下修改系统设计的艺术。这个想法是重新组织变量,类和方法,以促进它们未来的适应和理解。由于行为保持的概念是重构的基础,一些研究,使用形式化验证,语言转换和动态分析,已被提出来监控重构操作的执行和它们对程序语义的影响。然而,没有现有的研究,检查每个重构操作的可用行为保存策略。目的:本文识别研究文献中的行为保存方法。方法:我们进行,在本文中,一个系统的映射研究,以捕获所有现有的行为保存方法,我们分类的基础上,包括他们的方法,适用性和自动化程度的几个标准。结果:结果表明,在文献中已经提出了几种行为保存方法。这些方法在使用形式主义和技术、开发自动重构安全工具以及对源代码执行手动分析之间有所不同。结论:我们的分类法揭示了存在一些类型的重构操作,其行为保持研究不足。我们的分类还表明,几种可能的策略可以结合起来,以更好地检测任何违反程序语义。
2021-07-21 cs.SE
Refactoring Deep Learning Code: A Study of Practices and Unsatisfied Tool Needs
本研究通过分析5个深度学习项目的4921项重构实践、调研159名从业者,揭示了深度学习代码重构的分布特点及现有工具的不足,为重构工具发展和开发实践提供了建议。
2025-08-04 cs.SE
Refactoring Graphs: Assessing Refactoring over Time
重构是软件演化过程中必不可少的活动。通常,从业者依靠这样的转换来提高源代码的可维护性和质量。因此,这个过程可能会产生新的源代码实体或改变现有实体的结构。有时,转换是原子的,即,在一次提交中执行。在其他情况下,它们生成随时间执行的修改序列。为了研究和推理随着时间的推移重构,在本文中,我们提出了一个新的概念称为重构图,并提供了一个算法来建立这样的图。然后,我们调查了10个流行的基于Java的开源项目的历史。在消除了琐碎的图之后,我们描述了1,150个重构图的大样本,提供了关于它们的大小,提交,年龄,重构组成和开发人员的定量数据。最后,我们讨论重构图的应用和影响,例如,以提高代码的理解,检测重构模式,和支持软件进化研究。
2020-03-10 cs.SE
An Empirical Study of Refactoring Engine Bugs
本文首次系统分析了Eclipse、IntelliJ IDEA和Netbeans三种重构引擎的缺陷,按类型、症状、原因和触发条件归纳出12项发现,并在最新版本中发现130个新缺陷,为缺陷检测与调试提供指导。
2024-09-22 cs.SE
Closing the Loop for Software Remodularisation -- REARRANGE: An Effort Estimation Approach for Software Clustering-based Remodularisation
通过聚类对软件进行二次开发是提高软件内部质量的一种常用方法。然而,只有开发人员遵循推荐的重构建议,软件集群的真正好处才能实现,这可能是复杂和耗时的。简单地产生聚类结果不足以实现重新建模的好处。为了让推荐的重构操作产生影响,开发人员必须坚持到底。然而,由于某些重构操作的复杂性和耗时性,这通常是一项困难的任务。
2023-03-11 cs.SE
From Human to Machine Refactoring: Assessing GPT-4's Impact on Python Class Quality and Readability
University of Catania(卡塔尼亚大学);University of Sannio(桑尼奥大学)
本文评估GPT-4在Python类重构中的效果,发现其能提升代码质量和减少异味,但可能降低可读性。
2026-01-19 cs.SE
Automated Refactoring of Legacy JavaScript Code to ES6 Modules
Athens University of Economics and Business(雅典经济与商业大学)
本文研究了将遗留ES5代码自动转换为ES6模块,通过命名导入/导出语言构造实现细粒度重用,减少模块耦合并增强模块依赖。
2021-07-21 cs.SE
Many-Objective Optimization of Non-Functional Attributes based on Refactoring of Software Models
该研究提出一种基于NSGA-II遗传算法的软件模型多目标重构优化方法,兼顾性能、可靠性等多目标,在两个案例中实现性能最高提升42%、可靠性最高提升32%,验证了性能反模式和架构距离指标的有效性。
2023-01-23 cs.SE
Bugs in the Shadows: Static Detection of Faulty Python Refactorings
针对Python动态类型系统导致自动化重构易引入类型错误的问题,本文提出静态分析技术检测重构引入的类型错误,在Rope及主流IDE的重构实现中发现多个已被开发者确认的缺陷,为提升重构工具鲁棒性提供了依据。
2025-07-01 cs.SE
Automated Refactoring of Non-Idiomatic Python Code: A Differentiated Replication with LLMs
本文研究了GPT-4在推荐地道Python代码重构方面的有效性,发现其不仅能有效识别地道构造,还能在现有基线失败时提出正确的重构操作,突显了LLM替代复杂代码分析推荐器的潜力。
2025-01-28 cs.SE
MANTRA: Enhancing Automated Method-Level Refactoring with Contextual RAG and Multi-Agent LLM Collaboration
MANTRA是一个基于LLM智能体的方法级重构框架,结合上下文RAG、多智能体协作和口头强化学习,在703个实例上达到82.8%的成功率,显著优于基线,并被认为与人类代码同等可读可重用。
2025-03-27 cs.SE
An Empirical Study on Refactoring Activity
本文报告了一个实证研究的重构活动在三个Java软件系统。我们调查了重构活动的一些问题,以确认或不同意从以前的实证研究中得出的结论。与以往的实证研究不同,我们的研究发现,并不总是有更多的重构活动之前的主要项目发布日期比之后。相比之下,我们能够确认软件开发人员对测试代码和生产代码执行不同类型的重构操作,特定的开发人员负责项目中的重构,重构编辑没有得到很好的测试。此外,floss重构在开发人员中更受欢迎,重构活动在项目中很频繁,大多数不良气味一旦发生,就会持续到系统的最新版本。通过证实其他研究人员的假设,我们可以更有信心地认为这些研究结论是可推广的。
2014-12-18 cs.SE
Industry Experiences with Large-Scale Refactoring
软件重构在软件工程中占有重要地位。当开发人员想要重构软件以提高其质量而不改变其外部行为时,他们通常会转向重构。研究表明,小规模(floss)重构在行业中很常见,通常可以由单个开发人员在短时间内执行,尽管开发人员手动完成大部分工作而不是使用重构工具。然而,一些重构工作的规模要大得多,需要整个团队和数月的努力,而工具在这些工作中的作用还没有得到很好的研究。在本文中,我们报告了我们对开发人员进行的一项调查,以了解大规模重构,其流行程度,以及工具如何支持它。我们来自107个行业开发人员的结果表明,项目通常会经历多次大规模重构,每一次都需要相当大的努力。虽然经常需要重构,但其他业务问题(如开发新功能)通常具有更高的优先级。我们的研究发现,开发人员使用几类工具来支持大规模重构,并且更依赖于IDE等通用工具,而不是专门为支持重构而设计的工具。不同活动的工具支持各不相同,一些特别具有挑战性的活动实际上很少使用工具。我们的研究表明了对更好的大规模重构工具的明确需求,以及重构研究人员在行业中发挥作用的机会。我们在本文中总结的结果是实现这一目标的具体步骤。
2022-02-15 cs.SE
On the Use of Refactoring in Security Vulnerability Fixes: An Exploratory Study on Maven Libraries
第三方库依赖在当今的软件开发中是司空见惯的。随着安全漏洞的威胁日益严重,及时应用安全补丁对保护软件系统至关重要。因此,社区开发了一个软件和硬件弱点列表,称为常见弱点枚举(CWE),以评估漏洞。以前的工作已经揭示了维护活动(如重构代码)可能与源代码中与安全相关的方面相关。在这项工作中,我们探讨重构和安全性之间的关系,通过分析在实践中执行的重构动作与漏洞修复。我们进行了一个案例研究,分析了143个maven库,其中351个已知漏洞已被检测和修复。令人惊讶的是,我们的探索性结果显示,开发人员在他们的修复中包含重构操作,其中31.9%(351个中的112个)的漏洞与重构操作配对。我们设想这篇简短的论文开辟潜在的新方向,以激励自动化工具支持,允许开发人员更快地交付修复,同时维护他们的代码。
2022-05-17 cs.SE
Detecting Behavioral Changes in Python Refactoring Implementations with Foundation Models
Federal University of Campina Grande(坎皮纳格兰德联邦大学);Federal University of Alagoas(阿拉戈阿斯联邦大学);Pontifical Catholic University of Rio de Janeiro(里约热内卢天主教大学)
本研究提出基于基础模型Oracle的方法,通过分析git风格差异检测Python重构的行为变化,在Rope上评估发现13个bug,12个被接受,凸显需提升Python重构工具鲁棒性。
2026-08-11 cs.SE
Multi-objective Software Architecture Refactoring driven by Quality Attributes
针对架构优化任务难度高、耗时长且资源消耗大的问题,提出了一种质量属性驱动的多目标软件架构重构优化框架,测试了多种遗传算法的性能,并通过两个不同特征的案例研究完成了框架验证。
2023-01-18 cs.SE
Refactoring Software in the Automotive Domain for Execution on Heterogeneous Platforms
在计算机系统中实现更高性能的最重要方式是通过异构计算,即,采用包含多种类型处理器的硬件平台,如CPU、GPU和FPGA。有几种类型的算法可以在异构平台上执行得更快。然而,将CPU可执行软件迁移到其他类型的执行平台对软件工程提出了许多挑战。在这种类型的迁移中需要付出巨大的努力,特别是重新设计和重新实现软件。此外,在性能和其他运行时属性方面对其进行优化可能非常具有挑战性,这使得该过程复杂、昂贵且容易出错。因此,从同构平台到异构平台的成功重构过程需要一种基于明确和合理的架构决策的系统方法。在本文中,我们提出了一个决策框架,支持工程师重构软件系统时,以适应异构平台。它包括对重要因素的评估,以尽量减少在这一过程中反复出现问题的风险。通过一组问题,从业者能够制定答案,这将有助于做出适当的架构决策,以适应异构平台。该框架的内容是根据与汽车领域的架构师和开发人员的讨论而开发和发展的。
2020-05-18 cs.SE
Towards Enabling Architectural Refactorings through Source Code Annotations
众所周知,软件需要改变以满足新的需求。软件体系结构模型和实现的同步对于保持体系结构文档的有用性和软件演化过程的可管理性是非常重要的。在本文中,我们实现了两个步骤的过程中的同步。首先,我们用架构信息扩充源代码。第二,这个“轻量级架构模型”可以更容易地对照完整的架构描述进行检查。基于这种方法,任何一方(代码或架构)的重构都可以自动检测,并且可以进行一致性检查。
2014-09-22 cs.SE
Automated Extract Method Refactoring with Open-Source LLMs: A Comparative Study
本研究对比评估了5款3B-8B参数的开源LLM在Python代码提取方法重构任务中的表现,发现递归批评改进(RCI)提示策略效果优于单样本提示,最优模型测试通过率超0.8,开发者接受度超70%,并发布了开源基准。
2025-10-30 cs.SE
A Survey of Refactoring Detection Techniques Based on Change History Analysis
重构是改变软件系统的过程,它不会改变代码的外部行为,但会改善其内部结构。不仅研究人员,而且实践者,需要了解过去在软件开发项目中执行的重构实例。到目前为止,已经提出了一些技术来自动检测重构实例。这些技术已经在各种国际会议和期刊上提出,然而,研究人员和从业人员很难掌握重构检测技术的研究现状。在这篇综述文章中,我们回顾了各种重构检测技术,特别是基于更改历史分析的技术。本文首先给出了重构检测方法的定义和分类,然后介绍了基于变更历史分析的重构检测技术。最后,我们讨论了重构检测未来可能的研究方向。
2018-08-07 cs.SE
Empirical Evaluation of a Live Environment for Extract Method Refactoring
针对传统重构工具反馈慢的问题,提出聚焦实时可视化建议与应用的实时重构概念,开发可识别、推荐并应用提取方法重构的实时环境,实证实验显示其能改进多项代码质量指标,效果显著优于无辅助手动重构。
2023-07-20 cs.SE
ACE: Automated Technical Debt Remediation with Validated Large Language Model Refactorings
本文提出ACE工具,利用经过验证的大语言模型输出自动进行代码重构,在保证程序正确性的同时提升代码可理解性,从而有效缓解开发者极少处理的技术债务。
2025-07-04 cs.SE
State of Refactoring Adoption: Better Understanding Developer Perception of Refactoring
本研究提出自我确认重构(SAR)概念与分类识别方法,结合评审调查和工业案例,揭示重构评审难点,给出文档化流程建议,为重构相关研究与实践提供支持。
2023-06-09 cs.SE
Code Smells and Refactoring: A Tertiary Systematic Review of Challenges and Observations
在本文中,我们提出了一个三级系统的文献综述,以前的调查,二级系统的文献综述,和系统的映射。我们确定了关于代码气味和重构的主要观察结果(我们知道的)和挑战(我们不知道的)。我们发现代码气味和重构与质量属性有很强的关系,即,具有可理解性、可维护性、可测试性、复杂性、功能性和可重用性。我们认为,代码气味和重构可以被认为是一个硬币的两面。此外,我们还确定了重构如何影响质量属性,而不是代码气味。我们还讨论了这项工作的从业人员,研究人员和教师的影响。我们确定了13个开放的问题,可以指导未来的研究工作。因此,我们想强调在当前软件工程研究中代码气味和重构之间的差距。我们希望这项工作能够帮助软件工程研究社区在未来的代码气味和重构工作中进行合作。
2020-04-22 cs.SE
Performance of Genetic Algorithms in the Context of Software Model Refactoring
针对软件模型重构中重构方案空间大、需多目标优化的问题,本文对比三种遗传算法的性能与解质量,发现不同算法在速度、内存占用上存在显著差异。
2023-08-26 cs.PF cs.SE
An Empirical Study on the Impact of Code Duplication-aware Refactoring Practices on Quality Metrics
本文通过分析128个开源Java项目中332个重构提交,实证研究了代码重复消除重构操作对设计质量指标的影响,发现多数指标能捕捉开发者去重意图,但部分指标未能完全反映。
2025-02-06 cs.SE
On the Relationship between Refactoring Actions and Bugs: A Differentiated Replication
软件重构的目标是在保持系统外部行为的同时提高代码质量。虽然原则上重构是一种行为保留活动,但Bavota等人在2012年提出的一项研究报告了一些重构行为的倾向性(例如,上拉法)诱发故障。这项研究是通过挖掘三个系统的重构活动和错误来进行的。利用采矿软件库领域取得的进步(例如,更好的工具,以检测重构行动在提交级别的粒度),我们提出了一个有区别的复制的工作,由Bavota等人。其中我们(i)克服了一些弱点,影响他们的实验设计,(ii)回答相同的研究问题,原来的研究对一个更大的数据集(3对103个系统),以及(iii)用定性分析补充重构和bug之间关系的定量分析,手动检查提交,旨在验证重构操作触发bug修复活动的程度。我们的定量分析的结果证实了重复研究的结果,而定性分析部分揭开了重构动作在错误引入中所扮演的角色。
2020-09-24 cs.SE
Supporting single responsibility through automated extract method refactoring
本文提出一种基于后向切片的自动化提取方法重构算法,将长方法分解为切片并提取为独立方法以实现单一职责,在GEMS基准和真实项目中显著提升了重构精确率与召回率,并改善了方法内聚度。
2023-11-26 cs.SE
Do Developers Refactor Data Access Code? An Empirical Study
开发人员经常重构代码以提高软件的可维护性和可理解性。对于传统软件系统中的重构活动有很多研究。然而,数据密集型系统中的重构还没有得到很好的探索。了解开发人员的重构实践是很重要的开发有效的工具support.We进行了一项纵向研究的重构活动的数据访问类使用12个数据密集型主题系统。我们调查了重构的流行和演变,以及重构与数据访问气味的关联。我们还对超过378个数据访问重构实例的样本进行了手动分析,以确定这些重构所针对的代码功能。我们的研究结果表明:(1)数据访问重构是普遍存在的,并在类型上有所不同。\textit{Rename variable}是最流行的数据访问重构。(2)重构的流行程度和类型随着系统的发展而变化。(3)大多数数据访问重构的目标代码实现数据获取和插入。(4)数据访问重构通常不涉及SQL查询。总体而言,结果表明,数据访问重构专注于提高代码质量,而不是底层的数据访问操作。因此,研究社区需要做更多的工作,为从业者提供意识和支持,了解通过重构解决数据访问气味的好处。
2022-02-07 cs.SE
ActRef: Enhancing the Understanding of Python Code Refactoring with Action-Based Analysis
ActRef 提出基于代码变更操作的重构分析框架,覆盖变量到模块多粒度并支持多种重构类型,在 1,914 个实例上取得 0.80 精确率和 0.92 召回率,优于多个基线。
2025-05-10 cs.SE
RefAgent: A Multi-agent LLM-based Framework for Automatic Software Refactoring
Polytechnique Montreal(蒙特利尔大学)
RefAgent是一种基于多智能体的LLM框架,用于自动化软件重构,通过自我反思和工具调用能力提升重构效率和代码质量。
2026-03-04 cs.AI cs.SE
Prefactory: Automated Discovery and Application of Library-Adoption Refactorings
CISPA Helmholtz Center for Information Security(CISPA 亥姆霍兹信息安全中心)
研究如何自动进行库采用重构。核心方法是用 LLM 合成搜索启发式方法,收集元数据和词汇生成检测器找候选函数,排序后用 LLM 生成重构并验证。主要贡献是在 PrefactoryBench 上表现优于基线,产生多个经测试验证的重构。
2026-07-21 cs.SE
SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring
Concordia University(康考迪亚大学)
SWE-Refactor是一个面向真实世界的基于大语言模型的代码重构仓库级基准,通过1099个Java项目中的重构实例评估九种LLMs,揭示复杂重构的失败率较高。
2026-02-03 cs.SE