Unveiling process insights from refactoring practices
软件理解和维护活动,如重构,据说会受到软件复杂性的负面影响。用于度量软件产品和过程复杂性的方法已经在文献中进行了彻底的讨论。然而,对这两个维度之间可能存在的联系的认识,特别是对使用过程视角的好处的认识,还有很长的路要走。目的:提高对重构任务中开发人员活动和软件复杂性之间联系的理解,即通过评估使用过程挖掘方法和工具从IDE收集的过程度量是否适合于准确分类不同的重构实践和由此产生的软件复杂性。方法:我们从一个软件产品中挖掘源代码度量,在一个质量改进任务被并行地交给(117)个软件开发人员后,组织在(71)个团队中。同时,我们从他们的IDE工作会话(320)中收集事件,并使用流程挖掘来建模他们的流程并提取相应的度量。结果如下:大多数使用插件进行重构的团队(JDeodorant)比只使用Eclipse本机特性执行重构的团队更有效地降低了软件复杂性,并且流程更简单。我们能够找到适度的相关性(43%)之间的软件圈复杂度和过程圈复杂度。重构方法和圈复杂度预测的最佳模型分别有92.95%和94.36%的准确率。结论:我们的方法与程序设计语言、地理位置或开发实践无关。最初的发现是令人鼓舞的,并导致我们建议从业者可以使用我们的方法在其他开发任务,如缺陷分析和单元或集成测试。
2020-10-29 cs.SE
Early Career Developers' Perceptions of Code Understandability. A Study of Complexity Metrics
该研究针对216名1-4年经验的早期职业开发者开展实证研究,探究McCabe圈复杂度与认知复杂度对代码可理解性的预测效果,发现二者预测能力一般且无法预测问题严重度,建议不让早期开发者独立做代码评审。
2024-07-15 cs.SE
On the Importance and Shortcomings of Code Readability Metrics: A Case Study on Reactive Programming
良好的结构和可读的源代码是维护软件和开发人员之间成功协作的先决条件。静态分析可以自动提取代码复杂性和可读性指标,这些指标可以用来突出代码中的潜在改进,以获得高质量的软件并作为教育工具为开发人员加强良好实践。这假设可靠的可读性度量,因为代码可读性有点主观,所以获得这些度量并不容易。最近的研究已经产生了越来越复杂的模型,用于预测人类主要以过程和面向对象为重点的可读性,而函数式和声明式语言以及语言扩展则因为它们通常被认为会导致更简洁和可读的代码而有所进步。在本文中,我们调查现有的复杂性和可读性指标是否反映了这种智慧,或者可读性的概念及其组成部分是否需要根据程序设计语言的变化进行大修。因此,我们比较传统的面向对象和反应式编程的代码复杂性和可读性的案例研究。响应式编程声称可以提高代码质量,但很少有研究从经验上证实这些说法。我们将一个面向对象的开源项目重构为一个反应式候选项目,并使用圈复杂度和两个最先进的可读性度量标准将可读性与原始项目进行比较。需要更详细的调查,但我们的研究结果表明,圈复杂度和可读性在反应性候选人中同时显着下降,这似乎是违反直觉的。我们解释并证实了为什么可读性指标可能需要调整,以更好地适应流行的编程风格,而不是命令式和面向对象,以更好地满足人类的期望。
2021-10-28 cs.SE
Towards Bridging Formal Methods and Human Interpretability
该研究针对人类对标记迁移系统(LTS)设计的理解缺乏量化研究的问题,提出7项相关度量指标,通过实验验证4项指标与人类理解度的相关性,并将Albin复杂度用于设计修复工具,显著缩短理解时间,提升形式化设计可解释性。
2025-06-11 cs.SE
The Correlation among Software Complexity Metrics with Case Study
人们对软件质量的要求越来越高,因此不同规模的软件都在快速增长,以处理软件的质量问题。软件复杂性度量是利用软件的一些内部属性或特征来了解它们对软件质量的影响的度量之一。在本文中,我们涵盖了一些更有效的软件复杂性度量,如圈复杂性,代码行和Hallstead复杂性度量。本文介绍了它们对软件质量的影响。并对两者之间的相关性进行了探讨和分析。最后以一个真实数据集为例,揭示了它们与错误数的关系。
2014-08-20 cs.SE
Aspects of complexity in automotive software systems and their relation to maintainability effort. A case study
本研究以Scania AB的两个大型车载软件系统为对象开展案例研究,明确了影响可维护性工作量的内外部复杂性来源,验证了复杂性作为可维护性工作量代理指标的有效性,并提出需构建涵盖内外维度的复杂性度量体系。
2025-05-19 cs.SE
Rethinking Code Complexity Through the Lens of Large Language Models
School of Computer Science, Shanghai Jiao Tong University(上海交通大学计算机学院)
针对传统复杂度指标与LLM感知难度不匹配的问题,提出基于语义非线性的熵引导语义组合层次复杂度度量LM-CC,实验证明其与LLM性能强相关且语义保持的复杂度降低能提升下游任务表现。
2026-05-27 cs.SE
Systematic Method for Path-Complete White Box Testing
本文提出了一种系统的、与语言无关的、用于白盒测试的寻找覆盖顺序程序代码的最小路径集的方法。执行集合中的所有路径也确保语句覆盖。执行错误标记代码中有问题的区域。该方法从程序的UML活动图开始。该图被转换为有向图:图的节点替代决策点和动作点;图的有向边替代动作箭头。独立路径的数量等于图的容易计算的圈复杂度。将向量与每条路径相关联创建路径向量空间。路径的独立性等价于向量的线性独立性。只要测试路径空间的任何基就足以完成这个过程。提出了一种有效的基路径选择算法。
2005-03-21 cs.SE
Rethinking Cognitive Complexity for Unit Tests: Toward a Readability-Aware Metric Grounded in Developer Perception
本文提出面向单元测试的测试感知认知复杂度度量CCTR,整合断言密度、注解角色等结构与语义特征,并在15,750个由EvoSuite和LLM生成的测试套件上验证其能更准确地反映开发者感知的可读性与工作量。
2025-08-22 cs.SE
AI-Driven Code Refactoring: Using Graph Neural Networks to Enhance Software Maintainability
Campbellsville university(坎贝尔斯维尔大学)
本研究探索将图神经网络(GNNs)用于代码重构以提升软件可维护性,通过分析大规模数据集并与现有方法对比,GNNs在准确率、复杂度和耦合度优化上表现更优,为软件工程提供了可扩展的AI驱动方案。
2025-04-14 cs.AI cs.LG cs.SE
Evolution analysis of software quality metrics in an open-source java project: A case study on TestNG
本研究使用Understand工具提取并分析了开源Java框架TestNG连续五个版本的11个面向对象质量度量,揭示了其结构演化趋势,表明其通过持续重构已变得更稳定易维护,为类似项目提供了代码质量维护建议。
2025-05-28 cs.CE cs.SE
Quantifying the Impact on Software Complexity of Composable Inductive Programming using Zoea
Zoea Ltd.(佐亚有限公司);London South Bank University(伦敦南岸大学)
在Zoea程序设计语言中实现的可组合归纳编程是软件开发的一种简单的声明式方法。在语言层面上,Zoea显然比所有主流语言都要简单。然而,到目前为止,我们只有轶事证据表明,用Zoea制作的软件也比用传统语言制作的等效软件简单。本文介绍了Zoea中实现的等效代码的软件复杂性的定量比较的结果,也在传统的程序设计语言。这项研究使用了一套不同的编程任务,从一个流行的程序设计语言chrestomathy。结果相对程序的复杂性,使用两个既定的指标,也为相对程序的大小。结果发现,Zoea程序的复杂性约为传统语言等效程序的50%,平均大小相等。结果表明,目前的程序设计语言(相对于软件需求)是软件复杂性的最大贡献者,通过归纳编程方法可以避免显着的复杂性。
2020-05-17 cs.AI cs.PL cs.SE
When Do Program-of-Thoughts Work for Reasoning?
本文提出 CIRS 衡量代码结构与逻辑复杂度对 LLM 推理能力的影响,并设计自动合成分层算法用于数学指令生成和代码数据过滤。
2023-12-18 cs.AI cs.CL cs.LG
Turaco: Complexity-Guided Data Sampling for Training Neural Surrogates of Programs
MIT CSAIL(麻省理工学院计算机科学与人工智能实验室);Purdue University(普渡大学)
本文提出Turaco方法,通过程序分析评估不同执行路径的学习复杂度,并据此指导训练数据采样比例,从而提升程序神经代理模型的准确率。
2023-09-21 cs.LG cs.PL cs.SE
Software Cognitive Complexity Measure Based on Scope of Variables
本文定义了一个程序结构的数学模型。本文定义的程序结构数学模型提供了对程序结构的统一数学处理,揭示了程序是当前语句与前一语句之间嵌入的二元关系的大而有限的集合。然后,将程序看作是一个组合列表和多个语句按照一定的组合规则的逻辑组合。我们还定义了范围信息复杂度数(SICN),并提出了基于软件功能分解的认知复杂度,包括理论验证,通过九个Weyuker的性质。
2014-09-17 cs.SE
Automatizing Software Cognitive Complexity Reduction through Integer Linear Programming
本文针对代码认知复杂度降低问题,提出将重构操作序列建模为整数线性规划,利用高效求解器替代穷举枚举,以实现在大规模程序中的最优解。
2024-02-08 cs.CC cs.SE
Evaluating Software Contribution Quality: Time-to-Modification Theory
本文提出修改时间(TTM)理论,通过测量代码引入到首次修改的时间间隔来量化代码质量与持久性,为软件工程提供捕获代码库演化的动态指标,可用于预测维护需求、优化绩效评估并减少技术债务。
2024-10-15 cs.SE
Multi-objective Integer Linear Programming approach for Automatic Software Cognitive Complexity Reduction
University of Málaga(马拉加大学);Ayesa Advanced Digital Services Limited (ASDA)(阿耶萨高级数字服务有限公司)
本文提出多目标整数线性规划方法,用于自动降低软件的认知复杂度,通过平衡代码行数与复杂度来提升代码可维护性。
2026-01-29 cs.CL cs.SE