Statistical complexity of software systems represented as multi-layer networks
针对软件系统复杂性缺乏实证度量的问题,本文提出采用统计复杂性指标,基于多层网络建模并通过模拟与理论比较验证,以洞察系统组织结构与涌现行为。
2025-03-29 cs.SE
Software Cognitive Information Measure based on Relation Between Structures
认知复杂性测度是基于认知信息学基础上对人类理解源代码的难度进行量化。该学科基于基本的软件因素(即输入、输出和内部处理架构)推导出认知复杂性。一种将粒度计算集成到称为结构化认知信息度量(SCIM)的新度量中的方法。所提出的措施统一和重组的复杂性因素类似于人类的认知过程。然而,根据软件的方法论和变量的范围,变量的信息复杂度数(ICN)取决于变量值的变化,认知复杂度有多种测量方法。本文定义了范围信息复杂度(SICN),提出了基于软件功能分解的认知复杂度,并通过Weyuker的9个性质进行了理论验证。
2013-04-01 cs.SE
From Complexity Measurement to Holistic Quality Evaluation for Automotive Software Development
近年来,软件在汽车领域的作用和重要性发生了巨大变化。能够系统地评估和管理软件质量变得更加重要。然而,在实践中,我们仍然发现一个很大程度上静态的方法来衡量软件质量的基础上预定义的复杂性度量与静态阈值来满足。我们建议使用一个更灵活的框架,它系统地根据开发项目的目标和背景导出度量和评估规则。
2021-10-27 cs.SE
The more Product Complexity, the more Actual Effort? An Empirical Investigation into Software Developments
[背景]软件工作量预测方法和模型通常假设软件产品复杂度和开发工作量之间存在正相关关系。然而,从我们使用COCOMO81数据集的经验中可以看到相互矛盾的观察结果,即产品复杂性和实际工作量之间的负相关性。[Aim鉴于我们对所观察到的现象是否是巧合的怀疑,本研究试图调查产品复杂性的增加是否会导致软件开发项目中的上述反直觉趋势。[方法:]将一种改进的关联规则挖掘方法应用于转换后的COCOMO81数据集。为了减少分析的噪声,该方法使用恒定的前因(复杂性增加,而工作量减少)来挖掘潜在的后果与修剪。[结果]实验分别从一般、嵌入和有机项目数据中挖掘出4条、5条和7条关联规则。挖掘规则的后果建议两个主要方面,即人的能力和产品规模,在这项研究中特别关注。[结论]复杂性与努力程度的负相关在特定条件下并非巧合。在软件项目中,产品复杂性与其他因素(如程序员能力和分析员能力)之间的相互作用不可避免地会在削弱产品复杂性对实际开发工作的实际影响方面发挥“摩擦”作用。
2015-09-28 cs.SE
Software Cognitive Complexity Measure Based on Scope of Variables
本文定义了一个程序结构的数学模型。本文定义的程序结构数学模型提供了对程序结构的统一数学处理,揭示了程序是当前语句与前一语句之间嵌入的二元关系的大而有限的集合。然后,将程序看作是一个组合列表和多个语句按照一定的组合规则的逻辑组合。我们还定义了范围信息复杂度数(SICN),并提出了基于软件功能分解的认知复杂度,包括理论验证,通过九个Weyuker的性质。
2014-09-17 cs.SE
Rethinking complexity for software code structures: A pioneering study on Linux kernel code repository
人工智能(AI)的最新进展显示出在各种复杂任务中减轻人类负担的巨大潜力。从软件工程的角度来看,人工智能技术可以在开发的许多基本方面看到,例如源代码理解,其中实现了最先进的模型来自动提取和表达代码片段的含义。然而,这些技术仍在努力解决和理解工业代码中的复杂结构,因此远离现实世界的应用。在目前的工作中,我们建立了一个创新的和系统的框架,强调在代码理解和进一步的软件工程的复杂性问题。在从最新的Linux内核源代码中自动收集数据汇集的基础上,我们通过令牌提取和关系解析将代码结构建模为复杂网络。对复杂性的全面分析进一步揭示了基于网络的代码表示的密度和规模。我们的工作从工业强度的软件代码构建了第一个大规模数据集,用于下游软件工程任务,包括代码理解,并首次将复杂网络理论纳入软件开发的代码级调查。从长远来看,所提出的方法可以在整个软件工程过程中发挥重要作用,通过重新定义和拥抱复杂性来支持软件设计,编码,调试,测试和维护。
2021-03-01 cs.SE
Lessons from Formally Verified Deployed Software Systems (Extended version)
Constructor Institute of Technology(Constructor 理工学院);IRIT CNRS UMR5505, University of Toulouse(图卢兹大学 IRIT CNRS UMR5505);CRAN CNRS UMR 7039, University of Lorraine(洛林大学 CRAN CNRS UMR 7039)
本文通过分析多个已部署的正式验证系统,探讨了形式验证技术在实际软件开发中的应用现状、技术实现及行业启示。
2026-01-19 cs.SE
A Complexity measure based on Requirement Engineering Document
研究表明,软件质量的准确评估是软件开发中的主要问题.此外,这种估计取决于软件固有的复杂程度,即复杂性。本文试图实证证明所提出的复杂性,这是基于IEEE需求工程文件。高质量的SRS是高质量软件的先决条件。需求工程文档(SRS)是针对特定环境执行某些特定功能的特定软件产品、程序或程序集的规范。到目前为止给出的各种复杂性度量都是基于软件的代码和认知度量值的。因此,这些指标对代码开发人员没有任何影响。考虑到基于代码的方法的缺点,该方法在SDLC过程中冻结需求后立即识别软件的复杂性。建议的复杂性措施比较以及与既定的复杂性措施。最后,该趋势可以验证所提出的措施的结果。最后,基于需求的复杂性度量可以用来了解拟议软件的复杂性之前,实际实施的设计,从而节省成本和人力浪费。
2010-06-14 cs.SE
The Emergence of Software Diversity in Maven Central
Maven工件是不可变的:上传到Maven Central上的工件不能被删除或修改。开发人员升级其库的唯一方法是发布新版本。因此,Maven Central会累积所有在那里发布的库的所有版本,并且声明对库的依赖关系的应用程序可以选择任何版本。在这项工作中,我们假设Maven工件的不变性和选择任何版本的能力自然支持Maven Central中软件多样性的出现。我们分析了代表73,653个库的所有版本的1,487,956个工件。我们观察到,超过30%的库有多个版本,这些版本被最新的工件积极使用。在流行库的情况下,超过50%的版本被使用。我们还观察到,超过17%的库有几个版本,这些版本的使用率明显高于其他版本。我们的研究结果表明,Maven Central中工件的不变性确实支持存储库中库版本之间的持续多样性。
2019-03-14 cs.SE
A Survey of Software Engineering Practices in Turkey (extended version)
背景:了解行业中使用的软件工程实践和技术的类型是很重要的。在每个软件团队和公司中进行的软件工程实践的类型和成熟度方面有很宽的范围。为了描述在软件公司中进行的软件工程实践的类型,在不同的国家和地区进行了各种调查。土耳其有一个充满活力的软件行业,重要的是要描述和了解该行业的软件工程实践的状态。目标:我们的目标是描述和掌握土耳其软件行业软件工程实践类型的高级观点。在这项研究中,我们调查的软件工程实践包括:软件需求、设计、开发、测试、维护、配置管理、发布计划和支持实践。目前的调查是在土耳其软件行业背景下进行的最全面的调查。方法:为了实现上述目标,我们系统地设计了一个在线调查46个问题,根据我们过去的经验,在加拿大和土耳其的背景下,并使用软件工程知识体系(SWEBOK)。来自土耳其软件行业的202名执业软件工程师参加了调查。我们分析和报告在本文中的问题的结果。只要有可能,我们还会将我们的调查趋势和结果与2010年在加拿大软件行业进行的类似调查结果进行比较。
2014-12-16 cs.SE
Estimation of Defect proneness Using Design complexity Measurements in Object- Oriented Software
软件工程不断面临着软件包日益复杂和软件生产过程中缺陷和缺点数据水平不断提高的挑战。这就要求有新的发明和方法来实现更可重用、更可靠、更易于维护和更高质量的软件系统,并对软件生成过程进行更深层次的控制。质量和生产率确实是控制任何工业过程的两个最重要的参数。成功的控制系统的实施需要一些测量手段。软件度量在软件开发过程的管理方面起着重要的作用,如更好的规划,评估改进,资源分配和减少不可预测性。涉及早期发现潜在问题、生产力评估和评估外部质量因素(如可重用性、可维护性、缺陷倾向性和复杂性)的过程至关重要。在这里,我们讨论的CK度量和估计模型的应用,以预测外部质量参数,优化设计过程和生产过程中所需的质量水平。提出了一种新的面向对象系统设计级缺陷倾向性估计方法,建立了CK度量与缺陷倾向性指数之间的关系模型。一个多功能的估计方法捕捉CK度量和软件模块的缺陷倾向水平之间的相关性。
2010-01-20 cs.SE
Interactive Complexity: Software Metrics from an Ecosystem Perspective
现在,即使是最微不足道的应用程序也是在数百万行库、API和程序设计语言代码之上编写的,因此,设计软件时存在的许多复杂性已经被抽象掉,以便程序员能够主要关注业务逻辑。由于每个应用程序都严重依赖于其设计运行的生态系统,无论是局限于本地系统还是包括对通过网络连接的机器的依赖,测量这些系统的复杂性不再仅仅通过观察应用程序内部的代码来完成;我们还需要考虑其外部交互。在考虑安全问题时,这一点尤为重要,因为我们的医疗保健,金融和汽车依赖于复杂的软件系统。我们提出了互动的复杂性,它提供了一个量化的措施,如何交织的系统部分。一些最著名的软件复杂性度量是CK度量套件中的度量;这些度量是为测量面向对象系统而设计的,但我们相信它们可以用来帮助测量软件系统的交互。我们的实验结果表明,在一个版本中修复的错误数量与足够规模的系统中这些指标的价值之间存在很强的相关性。
2017-11-28 cs.SE
Framework for Version Control & Dependency Link of Components & Products in a Software Product Line
软件产品线涉及从现有核心资产(通常称为组件)组装产品,并在生产过程中不断增加核心资产。这个思想在基于组件的体系结构的软件开发方面已经变得至关重要。由于在软件产品线上,人们必须同时处理大量的产品和组件,因此需要制定一种策略,这将有助于存储组件和产品信息,以便可以轻松地跟踪它们,以便进一步开发。这种存储策略应反映产品和组件之间的关系,以便可以追溯与组件相关的产品历史,反之亦然。本文提出了一种基于树结构的软件产品线中构件和产品的存储策略。该策略将使我们能够存储有关组件和产品的重要信息,以及它们的组成和使用关系。我们实现了这一概念,并模拟了软件产品线环境。
2015-07-24 cs.SE
A Query Language for Software Architecture Information (Extended version)
本文提出架构信息查询语言AIQL,使利益相关者能够从数字架构孪生中获取最新且定制的架构信息,并通过四个应用场景和用户研究验证其功能、可扩展性与易用性。
2023-07-04 cs.SE
Metrics for Evolution of Aspect Oriented Software
面向方面软件开发(Aspect-OrientedSoftwareDevelopment,AOSD)是一种很有前途的软件开发方法,它通过将横切关注点从核心功能中分离出来,为提高软件的模块性提供了强有力的技术。由于演化是任何软件可持续性的主要要求,因此有必要量化其影响。为了量化,定义度量标准是必不可少的,这些度量标准将捕获面向方面(AO)软件的演变。还需要比较不同版本软件的度量值,以推断AO软件的演化动态。这需要识别在不同版本中添加、删除或修改的工件,并研究这些类型的更改的结果。本文定义了一组新的度量标准来衡量面向方面软件的发展。作为一个案例研究,一个方面重构的软件,AJHotDraw已被选中,并分析了其四个版本的能力,随着时间的推移而发展。
2020-10-17 cs.SE
Incremental Bounded Model Checking for Embedded Software (extended version)
程序分析在嵌入式系统开发中处于主流的边缘。基于有界模型检验的自动化验证工具在行为需求的形式化验证、发现运行时错误和自动化测试用例生成等方面有着广泛的应用。现有的嵌入式软件的工业工具使用现成的有界模型迭代,并应用它来验证程序与越来越多的解绕。这种方法不必要地浪费时间重复已经完成的工作,并且无法利用增量SAT求解的能力。本文报告了软件模型检查器CBMC的扩展,以支持增量有界模型检验和它的成功集成与工业嵌入式软件验证工具BTC EmbeddedTester。我们提出了一个广泛的评估大型工业嵌入式程序,这表明,增量有界模型检验削减运行时间的一个数量级相比,标准的非增量方法,使应用程序的形式化验证大型和复杂的嵌入式软件。
2014-09-20 cs.SE
Introducing High School Students to Version Control, Continuous Integration, and Quality Assurance
针对软件工程教学起步晚的问题,本文记录了面向有AP计算机科学基础的高中生设计小组项目,教授版本控制、持续集成等技能,使其能为开源科学计算项目编写有效自动化测试的实践经验。
2023-10-05 cs.SE
Should I Bug You? Identifying Domain Experts in Software Projects Using Code Complexity Metrics
在任何足够复杂的软件系统中,都有专家,他们对系统的某些部分有着比其他部分更深刻的理解。然而,并不总是清楚这些专家是谁,以及他们可以为系统的哪些特定部分提供帮助。我们提出了一个框架,以引起开发人员的专业知识,并建议专家分析复杂性措施随着时间的推移。此外,团队可以检测到目前没有专家或只有少数专家的软件部分,并采取预防措施以保持集体代码知识和所有权。我们在一家中等规模的公司采用了这种先进的方法。结果进行了评估与调查,比较感知和计算的专业知识的开发人员。我们表明,聚合代码度量可用于识别不同的软件组件的专家。在90%以上的情况下,开发人员将确定的专家评为可接受的候选人。
2018-09-20 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
Energy-Aware Decision Making in Software Stack Upgrades
Eastern Switzerland University of Applied Sciences (OST)(东瑞士应用科学大学);Zurich University of Applied Sciences (ZHAW)(苏黎世应用科学大学)
提出一种系统方法,通过自动化基准测试评估Spring Boot和JVM版本组合对应用能耗的影响,发现升级可显著改变能耗,为软件维护决策提供依据。
2026-05-26 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
On the Relationship between Software Complexity and Security
这项工作的目的是讨论软件的复杂性方面,同时展示其与安全性的关系。复杂性是软件的重要组成部分;然而,许多研究表明,它们增加了软件系统的脆弱性,并在程序中引入错误。许多开发人员在试图理解软件的复杂组件时面临困难。当软件中的对象被用于设计更复杂的对象同时在系统中创建分层复杂性时,软件中的复杂性增加。然而,开发人员有必要努力将复杂性降至最低,因为复杂性的增加会在软件中引入安全风险,这可能会对政府或私人组织造成严重的经济和声誉损失。它甚至对人造成身体伤害,在过去几年中发现了各种安全漏洞导致严重后果的例子。因此,保持结构的低复杂性和简单设计至关重要。不同的开发人员倾向于在系统中引入故意的复杂性,以便他们不必编写相同的程序两次;然而,随着安全性需求的不断增加,软件组织的问题越来越多。
2020-02-10 cs.CR cs.SE
A Bayesian Network Approach to Assess and Predict Software Quality Using Activity-Based Quality Models (Conference Version)
评估和预测软件质量的复杂概念在实践和研究中仍然具有挑战性。基于活动的质量模型将这一复杂的概念分解为更具体的定义,更精确的关于系统、过程和环境的事实,以及它们对在系统上执行的活动和与系统一起执行的活动的影响。然而,这些模型缺乏可操作性,无法用于质量评估和预测。贝叶斯网络(BN)已被证明是一种可行的手段,评估和预测纳入变量的不确定性。本文介绍了如何基于活动的质量模型可以用来推导BN模型的质量评估和预测。所提出的方法证明了使用公开数据的概念证明。
2016-11-30 cs.SE
Triple Graph Grammars for Multi-version Models
像传统的软件项目一样,模型驱动的软件工程中的项目需要对开发工件的多个版本进行充分的管理,重要的是允许暂时的不一致。在模型驱动的软件工程的情况下,所采用的版本控制方法还必须处理不同工件(即不同模型)通过自动模型转换链接的情况。在本报告中,我们提出了一种技术,用于联合处理多个版本的源模型转换为相应版本的目标模型,这使得使用更紧凑的表示,可以提供更好的执行时间的转换和进一步的分析操作。我们的方法是基于著名的形式主义的三重图文法和先前介绍的编码模型版本的历史称为多版本模型。除了显示我们的方法的正确性相对于三重图语法的标准语义,我们进行了实证评估,证明了潜在的好处执行时间性能。
2023-01-02 cs.SE
Development Effort Estimation in Free/Open Source Software from Activity in Version Control Systems
工作量估计模型是软件管理中的一个基本工具,用于预测与软件开发相关的资源、约束和成本。对于自由/开放源码软件(FOSS)项目,工作量估算尤其复杂:专业开发人员与偶尔的志愿开发人员一起工作,因此整体工作量(以人月计)变得非常难以确定。这项工作的目标是根据开发人员工作的历史数据,为自由和开放源码软件项目开发一个简单的工作估算模型。该模型由开发人员直接反馈,以确保其准确性。在从6个大型FOSS项目中提取了数千名开发人员的个人发展概况之后,我们要求他们填写一份问卷,以确定他们是否应该被视为他们所工作的项目的全职开发人员。他们的反馈被用来微调工作阈值的值,超过该阈值的开发人员可以被视为全职。在收到的1,000多份调查问卷的帮助下,我们能够确定样本中每个项目的提交阈值,该阈值将全职开发人员与非全职开发人员区分开来。并且最小化I型和II型错误。我们最终提供了将我们的模型应用于使用版本控制系统的FOSS项目的指南和工具。
2022-03-18 cs.SE
Mutant Density: A Measure of Fault-Sensitive Complexity
软件代码复杂度是一个研究得很好的属性,以确定软件组件的健康。然而,现有的代码复杂性度量没有直接考虑代码的易出错性方面。我们提出了一个称为突变密度的指标,其中我们使用突变作为在代码中引入人为错误的方法,并计算每行可能的突变数量。我们将展示如何使用此度量标准来对现实生活中的软件项目进行有用的分析。
2021-04-25 cs.SE
Measuring Software Innovation with Open Source Software Development Data
本文提出基于 GitHub 开源软件开发活动的软件创新度量方法,通过分析 JS、Python 和 Ruby 生态中依赖增长与发布复杂性,发现语义版本控制信号而非技术变更驱动了依赖增长,需结合生态文化等因素加权以准确捕捉创新动态。
2025-06-30 cs.SE
Evaluation of Reusability in Aspect Oriented Software using Inheritance Metrics
面向方面的软件开发(AOSD)是一种有效地将横切功能(关注点)捕获为称为方面的独立单元的方法。类和方面的继承在定义封装单元中起着至关重要的作用。因此,它是必不可少的,以定量捕捉的影响,继承AOSD使用设计级的指标,并推断出更高层次的质量属性,可重用性。一个应用程序自动化的过程中,一个典型的大学已经开发,以研究使用继承的影响,在一个方面化AO应用程序的版本。提出了一套度量继承的表现形式。设计并开发了一个面向方面的软件复用性度量工具AOSRM,用于计算所提出的度量值。基于获得的度量值的Java和ANOJ版本的案例研究应用程序,继承在ANOJ版本的软件的可重用性表现出积极的影响。
2020-12-01 cs.SE
An Empirical Study of the Relationships between Code Readability and Software Complexity
The University of New Orleans(新奥尔良大学)
代码可读性和软件复杂性是重要的软件质量度量,影响其他软件度量,如可维护性,可重用性,可移植性和可靠性。本文提出了一个实证研究之间的关系代码可读性和程序复杂性。这些结果来自对35个Java程序的分析,这些程序涵盖了23种不同的代码结构。分析包括六个可读性指标和两个复杂性指标。我们的研究从经验上证实了现有的智慧,即可读性和复杂性是负相关的。应用机器学习技术,我们还识别和排名那些代码结构,大大影响代码的可读性。
2019-08-30 cs.LG cs.SE
Improving the Testability of Object-oriented Software during Testing and Debugging Processes
可测试性是在程序中存在错误的情况下,测试是否会检测到错误的概率。如何有效地发现故障取决于软件的可测试性。许多研究人员提出了定性和定量的技术来提高和衡量软件的可测试性。在文献中,大量的可靠性增长模型已被用于评估和衡量软件在测试和运行阶段的定量质量评估。了解软件故障分布及其复杂性可以提高软件的可测试性。通过了解故障分布和故障复杂度,可以使测试工作量的分配变得容易,这将简化从软件中发现故障的过程。因此,软件的可测试性将得到改善。文中给出了该模型的参数以及不同复杂度的故障在软件中所占的比例,并利用在开源环境下开发的两个面向对象软件MySQL for python和Squirrel SQL Client的故障数据进行了估计
2013-08-15 cs.SE
The Software Garden
本文介绍了一种实用的方法,开发定制的HPC软件产品,使用存储库和工具独立于操作系统称为“花园”。从产品到底层操作系统发行版库的所有依赖关系都被小心地切断,将软件包与系统升级引起的不稳定性隔离开来,并确保在不同版本的Linux上进行可重复的确定性构建。该方法还保证了软件产品的多个版本可以共存并正确运行,极大地方便了升级和回滚。该方法是第一个已知的系统,暴露所有过去的软件版本的设计师,并支持确定性的单一软件包回滚,而不影响其他安装的软件。最后给出了该方法在C++语言中构建一个高性能交易系统的应用。
2013-05-01 cs.SE
A New Complete Class Complexity Metric
软件复杂性度量对于最小化软件维护成本至关重要。包级和系统级的复杂性不能在没有类级复杂性的情况下测量。这项研究解决了类的复杂性度量。本文研究了现有的类复杂性度量方法,提出了一种新的类复杂性度量方法CCC(Complete class complexity metric)。CCC度量,然后分析评估Weyuker的性质。
2014-03-22 cs.SE
Abstractness, specificity, and complexity in software design
抽象是软件设计的基本概念之一。因此,为形成软件系统的大量工件确定适当的抽象级别是软件工程的组成部分。然而,软件设计中抽象的本质,特别是它与同样重要的概念(如复杂性,特殊性或通用性)的相互关系,今天还没有完全理解。作为一个步骤,更好地了解所涉及的权衡,本文提出了一个区别的抽象成两种类型,有不同的影响的特异性和复杂性的文物。我们讨论了这两种类型的抽象在软件设计中的作用,并解释了抽象性,特异性和复杂性之间的相互关系。此外,我们用多个例子说明了所提出的区别的好处,并描述了我们的研究结果对软件设计活动的后果。
2017-09-05 cs.PL cs.SE
Lost in Zero Space -- An Empirical Comparison of 0.y.z Releases in Software Package Distributions
专用于特定程序设计语言的开放源码软件包的分发通过允许软件项目依赖于这种可重用软件包所提供的功能来促进软件开发。软件项目的健康状况可能会受到它所依赖的软件包的成熟度的影响。所使用的软件包版本号提供了其成熟度的指示。带有0.y.z版本号的软件包通常被认为处于初始开发阶段,这表明它们可能不太稳定,并且依赖于它们可能被认为是不太健康的。在本文中,我们实证研究了四个开源软件包发行版(Cargo,npm,Packagist和RubyGems)在何种程度上0.y.z软件包发行版和>=1.0.0软件包发行版的行为不同。我们量化了0.y.z版本的流行程度,我们探索了软件包在初始开发阶段的持续时间,我们比较了0.y.z和>=1.0.0软件包版本的更新频率,我们研究了其他软件包需要0.y.z版本的频率,我们评估了语义版本是否尊重对它们的依赖,我们比较了托管在GitHub上的0.y.z和>=1.0.0包存储库的一些特征。除此之外,我们观察到包发行版比语义版本控制对0.y.z版本的要求更宽松,并且许多0.y.z版本实际上可以被视为成熟的包。因此,版本号并不能很好地指示软件包发布的成熟度。
2021-01-04 cs.SE
PVAC: Package Version Activity Categorizer, Leveraging Semantic Versioning in a Heterogeneous System
本研究提出系统方法和原型工具 PVAC,通过解析语义化版本控制细节并利用三个组件对异构包管理器生态系统中的版本活动进行分类与定量评分,在 Debian 和 Ubuntu 数据集上验证了其准确性与有效性。
2025-05-31 cs.SE
Connecting Software Metrics across Versions to Predict Defects
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学计算机软件新技术国家重点实验室);Department of Computer Science and Technology, Nanjing University(南京大学计算机科学与技术系);Institute for Interdisciplinary Information Sciences, Tsinghua University(清华大学交叉信息研究院)
准确的软件缺陷预测可以帮助软件从业者有效地将测试资源分配到容易出现缺陷的模块上。在过去的几十年里,人们一直致力于建立准确的缺陷预测模型,包括开发质量缺陷预测器和建模技术。然而,目前广泛使用的缺陷预测,如代码度量和过程度量不能很好地描述软件模块如何改变项目的发展,我们认为这是重要的缺陷预测。为了解决这一问题,本文提出使用连续软件版本中的历史版本序列作为缺陷预测器。此外,我们利用递归神经网络(RNN),一种流行的建模技术,以HVSM作为输入来构建软件预测模型。实验结果表明,在大多数情况下,所提出的HVSM为基础的RNN模型有一个显着更好的努力意识的排名效率比常用的基线模型。
2017-12-28 cs.LG cs.SE
An insight into the technical debt-fix trade off in software backporting
本研究分析三个软件生态系统87个仓库的向后移植数据,发现约4.3%的向后移植引入技术债务,不同生态系统债务分布阶段及开发者因素存在差异,揭示了稳定版本向后移植中技术债务产生的规律。
2025-11-12 cs.SE
Systematic Detection of Energy Regressions in Software Version Histories
University of Namur(那慕尔大学);Delft University of Technology(代尔夫特理工大学)
本文提出EnergyTrackr方法,通过对5个Java项目1932次提交的评估,验证其可高效检测提交间能量退化,二分算法效率优于线性算法,可助力开发者优化软件能耗。
2026-10-14 cs.SE
Microservice Architectures for Advanced Driver Assistance Systems: A Case-Study
近年来的技术进步稳步增加了汽车内部软件系统的复杂性,而自动驾驶的持续发展将进一步加剧这种情况。这导致了一定程度的复杂性,推动了现有车辆软件架构和系统设计的极限。通过将软件结构更改为基于服务的体系结构,其他领域的公司成功地管理了不断增加的复杂性,并创建了一个更加敏捷和面向未来的开发过程。本文介绍了一个案例研究,研究将复杂的驾驶辅助功能的软件架构更改为微服务架构的可行性和可能的影响。完整的过程进行了描述,从软件环境和相应的要求,其次是实施,并最终测试的描述。此外,本文还对汽车用例的微服务架构进行了高级评估。结果表明,只要认真遵循微服务架构的原则,微服务架构可以减少复杂性和耗时的流程步骤,并使汽车软件系统为即将到来的挑战做好准备。
2019-02-25 cs.SE
Unveiling Hybrid Cyclomatic Complexity: A Comprehensive Analysis and Evaluation as an Integral Feature in Automatic Defect Prediction Models
本文提出了一种考虑继承复杂度的新颖指标Hybrid Cyclomatic Complexity(HCC),通过开源项目数据实验验证了其作为缺陷预测模型特征的有效性,并强调了区分类复杂度与继承复杂度的必要性。
2025-04-01 cs.SE
Navigating the Complexity of Generative AI Adoption in Software Engineering
本文通过混合方法研究生成式AI在软件工程中的采用,提出HACAF理论模型,发现兼容性是早期采用的主要驱动因素,挑战了传统技术接受理论,为AI工具设计与组织实施提供见解。
2024-01-04 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
Change Management and Version Control of Scientific Applications
科学应用的发展过程在很大程度上依赖于科学进步和实验研究成果。因此,处理频繁的变化是科学软件开发人员面临的主要问题之一。考虑到在HP-SEE项目的科学家中进行的调查结果,变更管理和版本控制软件过程的实施是不可避免的。在本文中,我们提出了软件工程原则,应包括在开发过程中,以改善版本控制和变更管理。此外,我们提出了一些具体的建议,以实施,从而使已经普遍接受的模板和方法略有修改。科学家实践的发展步骤不应被完全取代,但需要用适当的实践、文件和正式方法加以补充。我们还强调列入这两个进程的理由以及不适用这两个进程可能产生的后果。
2014-05-08 cs.SE
Empirical Confirmation (and Refutation) of Presumptions on Software
代码度量很容易定义,但不容易证明。很难证明一个度量是有效的,即,测量的数值意味着模糊定义的任何东西,但关键的软件属性,如复杂性和可维护性。本文采用统计分析和测试的方法来检验一些关于软件行为和度量的“可信”假设。其中包括在任何代码度量的应用中隐含的可靠性假设,以及软件工件中的变化幅度与其版本号的变化相关的假设。将一套36个指标用于试验,我们证实了大多数假设。出乎意料的是,我们表明,一些指标的可靠性的很大一部分,可以观察到,即使在随机变化的架构。另一个令人惊讶的结果是,布尔值度量往往在较小的软件版本增量中比在主要增量中更频繁地翻转它们的值。
2012-01-15 cs.SE
Exploring Viable Algorithmic Options for Automatically Creating and Reconfiguring Component-based Software Systems: A Computational Complexity Approach (Full Version)
基于协同的开发(CBD)是一种降低创建软件系统成本的流行方法。然而,目前尚不清楚《生物多样性公约》核心组成部分的选择和调整活动在多大程度上可以有效和可靠地自动运作,也不清楚在何种情况下(如果有的话)《生物多样性公约》比其他软件开发办法更可取。在本文中,我们使用计算复杂性分析,以确定和比较的计算特性的全自动组件为基础的软件系统创建和重新配置的从头设计,组件选择,组件选择与适应。我们的研究结果表明,这些方法都可以实现有效和可靠地运行在一个完全自动的方式,无论是在一般或相对于一些限制软件系统,系统要求,组件和组件的适应。我们还给出了所有这些方法都可以实现有效和可靠操作的限制。因此,本文说明了如何不同类型的计算复杂性分析(特别是,参数化的复杂性分析)可以用来系统地探索算法的选择,实现自动活动在软件工程。
2022-05-10 cs.CC cs.SE
A Comprehensive Study on Software Aging across Android Versions and Vendors
本文分析了软件老化的现象-即,从长远来看,性能逐渐下降和资源枯竭-在Android OS的研究旨在突出,如果,以及在何种程度上,来自不同供应商的设备,在各种使用条件和配置,受到软件老化和系统的哪些部分是主要的贡献者。结果表明,软件老化系统地确定了用户感知的响应能力的逐渐丧失,以及物理内存的不合理消耗。分析表明,由于工作量因素和运行应用程序的类型,以及由于供应商的定制,老化趋势存在差异。此外,我们分析了几个系统级指标,以追溯软件老化影响的主要原因。我们发现,臃肿的Java容器是软件老化的重要因素,并且通过容器级别的微恢复解决方案来减轻老化是可行的。
2020-05-23 cs.PF cs.SE
Model-Driven Development of Complex Software: A Research Roadmap
模型驱动工程(Model-Driven Engineering,MDE)一词通常用于描述软件开发方法,其中创建软件系统的抽象模型并将其系统地转换为具体的实现。在本文中,我们给出了目前的研究在MDE的概述,并讨论了一些必须解决的主要挑战,以实现软件开发的MDE愿景。我们认为,充分实现MDE的愿景可能不可能在近期到中期,主要是因为涉及的邪恶的问题。另一方面,试图实现这一愿景将提供一些见解,这些见解可用于显著缩小不断发展的软件复杂性与用于管理复杂性的技术之间的差距。
2014-09-22 cs.SE
Navigating the Socio-Technical Complexity Challenge in Quantum Software Ecosystems
University of Jyväskylä(于韦斯屈莱大学);University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
本文针对量子计算环境选择面临的挑战,运用设计科学研究方法,通过社会技术视角构建评估框架,引入引力阱及其属性、社会技术需求等结构,经示例案例演示评估,推动了量子生态系统理论及实践指导发展。
2026-07-17 cs.SE
Introducing Artificial Intelligence Agents to the Empirical Measurement of Design Properties for Aspect Oriented Software Development
面向方面的软件开发(AOSD)方法的支持者已经做了大量的工作,使用定量评估来显示其采用的积极影响。对方法的结构化评估需要一个定义明确的质量模型。本文提出了一种基于人工智能智能体的方面化质量评价模型。该模型已应用于现有的面向对象和面向方面的案例研究应用程序,大学自动化软件的等效版本。软件设计属性的具体指标已使用不同版本的人工智能智能体进行测量,并用于推断对质量的影响。基于最初的测量,它被发现,方面化的质量模型中定义的所有三个质量属性都有积极的改善。由于方面化的影响,演化和可重用性的属性在质量上有了显著的提高。
2020-10-17 cs.SE
An approach for improving the concept of Cyclomatic Complexity for Object-Oriented Programming
软件复杂性度量对于满足复杂软件的需求具有重要作用。圈复杂度是目前已提出和研究的三个度量指标之一,它们分别是:代码行、Halstead测度和圈复杂度。虽然圈复杂性是非常流行的,但也服务于一些问题,这些问题已被确定并在本研究工作中以表格形式显示。它缺乏面向对象程序设计中对象类间耦合的计算,只根据条件语句计算复杂度。因此,需要改进基于耦合的圈复杂度概念。论文包括所提出的算法来处理上述问题。
2014-12-19 cs.SE
Current Concepts in Version Control Systems
我们给读者一个全面的概述状态的版本控制软件工程领域,描述和分析的概念,体系结构的方法和研究,并包括在目前广泛使用的版本控制系统,并提出一些可能的未来研究方向。
2014-05-14 cs.SE
Reusability and Modifiability in Robotics Software (Extended Version)
CIFASIS (CONICET-UNR)(CIFASIS(CONICET-UNR));Universidad Nacional de Rosario (UNR)(罗萨里奥国立大学(UNR))
本研究基于过程控制架构风格与设计模式开发除草机器人微控制器软件,通过8种设计模式解决30个问题得到133个模块,提升了组件复用性与程序可修改扩展性,且经实证验证12千行C++实现无效率损耗。
2024-09-11 cs.RO cs.SE
Hierarchical Complexity: Measures of High Level Modularity
软件是人类最复杂的工作之一;大型系统可能有数千万行源代码。然而,复杂性很少在最低级别的代码之上测量,有时是源代码文件或低级别的模块。在本文中,一个层次的方法进行了探讨,以找到一组指标,可以衡量更高层次的组织。然后,这些指标被用于一些流行的免费软件包(总计超过2500万行代码),以检查它们的效率和一致性。
2011-05-11 cs.SE
RefDiff: Detecting Refactorings in Version Histories
重构是一种众所周知的技术,被软件工程师广泛采用,以改进设计并使系统能够进化。了解在代码更改中应用了哪些重构操作对于理解软件演化、调整软件组件、合并代码更改和其他应用程序是有价值的信息。在本文中,我们提出了RefDiff,这是一种自动化方法,可以识别git存储库中两个代码修订之间执行的重构。RefDiff采用了基于静态分析和代码相似性的方法来检测13种常见的重构类型。在使用分布在7个Java项目中的448个已知重构操作的Oracle进行的评估中,我们的方法实现了100%的精确度和88%的召回率。此外,我们的评估表明,RefDiff比现有的最先进的方法具有更高的精度和召回率。
2017-04-05 cs.SE