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
Towards Refactoring FRETish Requirements
与软件一样,需求在开发过程中也会不断发展和变化。重构是在不改变其行为的情况下重新组织软件的过程,以使其更容易理解和修改。我们建议重构正式的要求,以减少重复的要求,使他们更容易维护系统和要求的发展。这个工作在进行中的文件描述了我们的动机和初步的方法来重构NASA的正式需求获取工具(FRET)的要求。这项工作是由我们在工业飞机发动机软件控制器用例方面的经验直接触发的。在本文中,我们反映了所获得的要求,并鉴于其可维护性,提出和概述的功能,重构FRETISH要求。
2022-01-12 cs.SE
Same Same But Different: Preventing Refactoring Attacks on Software Plagiarism Detection
KASTEL -- Institute of Information Security and Dependability, Karlsruhe Institute of Technology (KIT)(卡尔斯鲁厄理工学院 KASTEL 信息安全与可靠性研究所);KTH Royal Institute of Technology(瑞典皇家理工学院)
针对编程教育中基于重构的混淆攻击易绕过现有代码抄袭检测系统的问题,本文提出一种结合代码属性图与图变换的可扩展增强框架,经真实学生提交样本评估,显著提升了抄袭代码检测效果。
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
An Empirical Study on the Potential of LLMs in Automated Software Refactoring
Beijing Institute of Technology(北京理工大学);Peking University(北京大学);University of Cincinnati(辛辛那提大学);National Innovation Institute of Defense Technology(国防科技大学创新研究院)
本研究通过实证分析发现LLM在重构机会识别上表现有限,但通过提示优化可大幅提升;同时提出RefactoringMirror策略以规避不安全重构,兼顾LLM智能与代码安全。
2024-11-07 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
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
MultiRefactor: Automated Refactoring To Improve Software Quality
本文提出了一种新的软件维护自动化方法。该工具能够执行26种不同的重构。它还包含大量的度量标准来衡量重构对软件的影响,以及六种不同的基于搜索的优化算法来改进软件。该工具包含用于软件改进的单目标和多目标搜索技术,并完全自动化。本文介绍了该工具的各种功能,它的独特之处,并提出了一些实验研究结果。在五个不同的代码库中对各个指标进行测试,以推断出最有效的质量改进指标。发现与代码的更具体元素相关的度量对于驱动搜索中的变化更有用。单目标的遗传算法也测试对多目标算法,看看如何比较所获得的结果与三个单独的目标。当比较每个目标的最佳解决方案时,多目标方法可以在更短的时间内产生适当的质量改进,从而实现快速的维护周期。
2017-10-16 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
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
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
Federal University of Campina Grande(坎皮纳格兰德联邦大学);Federal University of Alagoas(阿拉戈阿斯联邦大学);Pontifical Catholic University of Rio de Janeiro(里约热内卢天主教 Pontifical 大学)
针对Python动态类型系统导致自动化重构易引入类型错误的问题,本文提出静态分析技术检测重构引入的类型错误,在Rope及主流IDE的重构实现中发现多个已被开发者确认的缺陷,为提升重构工具鲁棒性提供了依据。
2025-07-01 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
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
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
State of Refactoring Adoption: Better Understanding Developer Perception of Refactoring
本研究提出自我确认重构(SAR)概念与分类识别方法,结合评审调查和工业案例,揭示重构评审难点,给出文档化流程建议,为重构相关研究与实践提供支持。
2023-06-09 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
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
RefAgent: A Multi-agent LLM-based Framework for Automatic Software Refactoring
Polytechnique Montreal(蒙特利尔大学)
RefAgent是一种基于多智能体的LLM框架,用于自动化软件重构,通过自我反思和工具调用能力提升重构效率和代码质量。
2026-03-04 cs.AI 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
How to Refactor this Code? An Exploratory Study on Developer-ChatGPT Refactoring Conversations
本研究通过挖掘17,913条开发者与ChatGPT的重构对话,揭示开发者常提出通用重构请求,而ChatGPT回应包含明确意图,并识别出多种提示学习设置,为AI辅助重构协作提供洞见。
2024-02-08 cs.SE
ChatGPT Prompt Patterns for Improving Code Quality, Refactoring, Requirements Elicitation, and Software Design
Vanderbilt University(范德堡大学)
本文以模式的形式提出了软件工程的快速设计技术,以解决使用大语言模型(LLM)时的常见问题,例如ChatGPT自动化常见的软件工程活动,例如确保代码与第三方库解耦,并在实现之前模拟Web应用程序API。本文对软件工程中应用LLM的研究提供了两点贡献。首先,它为软件工程提供了一个模式目录,该目录根据模式解决的问题类型对模式进行分类。其次,它探讨了几个提示模式,已被应用于改善需求获取,快速原型,代码质量,重构和系统设计。
2023-03-11 cs.AI cs.SE
An Empirical Evaluation of Impact of Refactoring On Internal and External Measures of Code Quality
重构是通过改变现有代码的内部结构而不影响其外部行为来改进其设计的过程,其主要目的是提高软件产品的质量。因此,人们相信重构可以提高质量因素,如可理解性、灵活性和可重用性。然而,支持这种假设的经验证据有限。本研究的目的是验证/无效的索赔,重构提高软件质量。选择重构技术的影响进行了评估,使用外部和内部的措施。通过实验评估了10种重构技术,以评估ISO外部质量因素的外部度量:资源利用率,时间行为,可更改性和可分析性,以及5种内部度量:可维护性指数,圈复杂性,继承深度,类耦合和代码行。外部测量的结果没有显示重构处理后代码质量的任何改进。然而,从内部测量,可维护性指数表明重构代码的代码质量比未重构代码的代码质量有所改善,而其他内部测量没有表明重构代码有任何积极的影响
2015-02-12 cs.SE
Predicting the Impact of Batch Refactoring Code Smells on Application Resource Consumption
本文研究了16种代码异味批量重构对31个开源应用CPU和内存利用率的影响,并设计了基于ANN的回归模型,在重构决策前高精度预测资源消耗,实现资源感知的代码异味重构。
2023-06-27 cs.LG cs.SE
Identifying Clusters of Concepts in a Low Cohesive Class for Extract Class Refactoring Using Metrics Supplemented Agglomerative Clustering Technique
面向对象软件的类内聚性低,会增加软件的维护成本。由于偏离设计原则,在初始设计期间以及由于软件退化,可能会将低内聚类引入软件。低内聚类执行应该由两个或多个类完成的操作。低内聚类需要被识别出来,并使用提取类重构来重构,以提高内聚性。在这方面,涉及两个方面;第一个是识别低内聚类,第二个是识别低内聚类中的概念簇,用于提取类重构。在本文中,我们提出了度量补充凝聚聚类技术涵盖上述两个方面。使用Weyuker的属性验证所提出的度量。该方法成功地应用于两个例子和案例研究。
2012-01-08 cs.SE
Continuous Autonomous Refactoring: A Research Roadmap for AI-Driven Code Quality Maintenance
Linköping University(林雪平大学)
该研究提出将LLM驱动的代码重构作为软件维护的持续环节,围绕五个维度构建路线图,明确跨领域关注点,以推动自主重构向系统级质量维护发展。
2026-09-02 cs.SE
Refactoring Practices in the Context of Modern Code Review: An Industrial Case Study at Xerox
现代代码审查是工业和开源项目中常用的基本实践,用于提高软件质量,共享知识,并确保符合编码标准。在代码审查期间,开发人员可以在合并代码库中的代码更改之前检查和讨论各种更改,包括重构活动。到目前为止,代码审查已被广泛研究,以探索其一般挑战,最佳实践和结果,以及社会技术方面。然而,很少有人知道重构活动是如何被审查,感知和实践的。本研究旨在揭示评审员如何决定接受或拒绝提交的重构请求,以及是什么使这种评审具有挑战性。我们提出了一个工业案例研究与24个专业开发人员在施乐公司。特别是,我们研究的动机,文档的做法,挑战,验证,并在代码审查重构活动的影响。我们的研究提供了几个重要的发现。我们的结果报告了开发人员在记录重构以供审查时缺乏适当的程序。我们对评审人员的调查也揭示了一些与理解重构意图以及对软件功能和非功能方面的影响有关的困难。根据我们的发现,我们推荐了一个程序来正确记录重构活动,作为我们调查反馈的一部分。
2021-02-10 cs.SE
Testing Refactoring Engine via Historical Bug Report driven LLM
提出RETESTER框架,利用历史缺陷报告和思维链提示生成重构变体,通过差分测试在Eclipse和IntelliJ IDEA中发现18个新缺陷。
2025-01-22 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
Automatic Clone Recommendation for Refactoring Based on the Present and the Past
当在软件程序中检测到许多克隆时,并非所有克隆对开发人员都同样重要。为了帮助开发人员重构代码并提高软件质量,人们构建了各种工具来根据过去和现在的信息(例如单个克隆的内聚度或克隆对等体的协同进化关系)推荐克隆移除重构。这些工具的存在启发我们建立一种方法,考虑尽可能多的因素,以更准确地推荐克隆。本文介绍了CREC,一种基于学习的方法,通过从软件项目的当前状态和过去的历史中提取特征来推荐克隆。给定一组软件存储库,CREC首先自动提取历史重构的克隆组(R克隆)和未重构的克隆组(NR克隆)来构建训练集。CREC提取了34个特征来表征单个克隆的内容和进化行为,以及克隆对等体的空间、句法和共变关系。有了这些功能,CREC训练了一个分类器,推荐克隆进行重构。我们设计了迄今为止最大的克隆推荐功能集,并对六个大型项目进行了评估。结果表明,我们的方法建议在项目内和跨项目设置中进行重构,F分数分别为83%和76%。CREC在我们的数据集上的表现明显优于最先进的类似方法,后者的F分数分别达到70%和50%。我们还比较了不同因素和不同学习算法的有效性。
2018-07-30 cs.SE
HPM-Frame: A Decision Framework for Executing Software on Heterogeneous Platforms
异构计算是一种重要的计算解决方案,以满足快速增长的系统性能的要求。它通常允许应用程序的主要流程在CPU上执行,而计算密集型任务则分配给一个或多个加速器,如GPU和FPGA。在这样的平台上执行的系统的重构是高度期望的,但也难以执行,主要是由于软件复杂性的固有增加。经过探索,我们已经确定了当前需要一种系统化的方法来支持工程师在重构过程中-从以CPU为中心的应用程序到在异构平台上执行的软件。在本文中,我们介绍了一个决策框架,协助工程师在重构软件的任务,将异构平台。它通过五个步骤涵盖了软件工程生命周期,包括要回答的问题,以便成功地解决与重构过程相关的方面。我们从两个方面评估该框架的可行性。首先,我们通过问卷调查收集从业者的印象、关注和建议。然后,我们进行了一个案例研究,显示了一步一步的应用程序的框架,使用计算机视觉在汽车领域的应用。
2020-12-10 cs.SE
Assessing the Bug-Proneness of Refactored Code: A Longitudinal Multi-Project Study
本文对12个开源项目开展纵向研究,分析不同重构特征与缺陷的长期关系,发现单一重构和顺手式重构反而可能增加缺陷风险,且相关缺陷难以被现有检测技术发现。
2025-05-12 cs.SE
An automatic architecture reconstruction and refactoring framework
各种各样的来源已经注意到,相当一部分重要的软件系统由于不受阻碍的架构侵蚀而失败。这种设计退化导致可维护性低、可测试性差和开发速度降低。软件系统的侵蚀通常是由于对所需的实现架构的理解、文档编制和维护不足造成的。如果期望的架构丢失或恶化加剧,则期望的架构的重建以及该期望的架构与物理架构的重新对准都需要大量的人工分析和实现工作。本文描述了一个自动软件体系结构重构和源代码迁移框架的初步开发。该框架提供了重构软件系统的概念体系结构和自动地将软件系统的物理体系结构迁移到概念体系结构模型的可能性。该方法是实现在一个概念原型,这是能够分析java系统和重构这些系统的概念架构,以及重构系统的概念架构的证明。
2014-07-23 cs.SE
Relating Complexity, Explicitness, Effectiveness of Refactorings and Non-Functional Requirements: A Replication Study
本研究通过将项目数翻倍并验证8,408个重构实例复现Soares等人的研究,考察SAR的复杂性、显式性、有效性及其与非功能需求的关系,发现显式重构更复杂但通常更利于内部质量。
2025-05-12 cs.SE
URegM: a unified prediction model of resource consumption for refactoring software smells in open source cloud
California State University San Marcos(加州州立大学圣马科斯分校);University at Buffalo(布法罗大学)
提出统一回归建模框架URegM,通过真实云环境实验预测代码异味重构对云资源消耗的影响,帮助云服务提供商更有效地规划资源配置与代码重构。
2023-10-22 cs.LG cs.SE