An Integer Programming Model for Embedding Social Values into Software Requirement Selection
现有的软件需求选择方法主要集中在优化软件产品的经济价值,而忽略了其社会价值及其对社会的长期影响。然而,社会价值观也很重要,需要在软件需求选择中加以考虑。此外,社会价值的软件需求可能会改变存在或不存在的其他需求,由于这些需求之间的价值依赖。这些依赖关系是不精确的,很难在软件项目中指定。本文提出了一种将社会价值观和社会价值观之间的依赖关系整合到软件需求选择中的可重用程序设计(IP)模型。我们进一步,占社会价值观的不精确性和它们之间的依赖关系,使用模糊图的代数结构。
2020-03-09 cs.SE
Modeling Library Dependencies and Updates in Large Software Repository Universes
第三方开源软件(OSS)的流行(重用)证明了托管存储库(如maven)对当今软件开发的影响。更新库至关重要,最近的研究强调了与老化的OSS库相关的漏洞。迁移到更新的库的决定可能是微不足道的(安全威胁),也可能是复杂的(评估适应更改所需的工作)。通过利用“智慧的软件库人群”,我们提出了一个简单而有效的方法来推荐“同意”库更新。我们的Software Universe Graph(SUG)对库依赖性进行建模,并从超级存储库中挖掘更新信息,以提供不同的度量和可视化,帮助做出更新决策。为了进行评估,我们首先从6,374个maven独特工件的188,951个节点构建了一个SUG。然后,我们将展示如何通过真实世界的例子来应用我们的指标和可视化。作为扩展,我们展示了SUG如何比较不同超级存储库之间的依赖关系。从100个GitHub应用程序的样本中,我们的方法发现,平均79%相似的重叠依赖组合存在于maven和github超级存储库世界之间。
2017-09-14 cs.SE
Dependency-Aware Software Requirements Selection using Fuzzy Graphs and Integer Programming
软件需求选择的目标是在满足项目约束条件的前提下,找到一个最优的需求子集。但是需求的值可能取决于最优子集中其他需求的存在或不存在。然而,这种价值取向是不精确的,难以捕捉。在本文中,我们提出了一种基于整数规划和模糊图的方法来考虑值的依赖性和它们的不精确性在软件需求选择。所提出的方法,称为依赖性感知软件需求选择(DARS),由三个部分组成:(i)用于从用户偏好识别值依赖性的自动化技术,(ii)基于模糊图的建模技术,其允许捕获值依赖性的不精确性,以及(iii)一种考虑用户偏好和从这些偏好中识别的价值依赖性以降低软件项目中价值损失的风险的线性规划(ILP)模型。我们的工作是通过研究一个现实世界的软件项目进行验证。结果表明,我们提出的方法减少了软件项目中的价值损失,并可扩展到大的需求集。
2020-03-11 cs.SE
When AI Models Become Dependencies: Studying the Evolution of Pre-Trained Model Reuse in Downstream Software Systems
研究预训练模型作为依赖在软件系统中的演变,发现其变化模式与传统库不同,更倾向于后期添加且积累而非替换,变化频率较低但更常有明确理由。
2026-04-20 cs.SE
Not All Dependencies are Equal: An Empirical Study on Production Dependencies in NPM
现代软件系统通常是通过利用其他人以库和包的形式编写的代码来构建的,以加速其开发。虽然使用第三方软件包有很多好处,但软件项目往往依赖于大量的软件包。因此,开发人员面临着通过保持项目依赖性的最新和无安全漏洞来维护项目依赖性的艰巨挑战。然而,在生产环境中,项目依赖关系会对项目的安全性构成威胁,这种情况有多频繁?我们使用Node Package Manager(npm)对100个JavaScript项目进行了实证研究,以量化项目依赖关系发布到生产环境的频率,并分析其特征及其对安全性的影响。我们的结果表明,只有不到1%的已安装依赖项被发布到生产环境。我们的分析表明,软件包的功能不足以决定它是否会被发布到生产环境。事实上,59%的已安装依赖配置为运行时依赖,并没有在生产中使用,而28.2%的依赖配置为开发依赖在生产中使用,揭穿了依赖管理的两个常见假设。调查结果还表明,大多数安全警报针对的是生产中未使用的依赖项,这使得它们极不可能对软件的安全性构成风险。我们的研究揭示了依赖管理更复杂的一面:并非所有的依赖都是平等的。生产中使用的安全性对安全性暴露更敏感,应优先考虑。然而,当前的工具在识别生产依赖性方面缺乏适当的支持。
2022-08-29 cs.SE
Dependency-Aware Software Release Planning through Mining User Preferences
考虑用户偏好是优化软件发布价值的决定性因素。这是因为用户对软件功能的偏好指定了这些功能的价值,从而决定了发布的价值。然而,软件的某些功能可能会鼓励或阻止用户更喜欢(选择或使用)其他功能。因此,软件功能的价值可能会受到其他功能的积极或消极影响。这种影响被称为与值相关的特征(需求)依赖性。价值相关的依赖关系需要考虑在软件发布计划,因为它们影响的最佳子集的功能选择的发布计划模型的价值。因此,我们提出了考虑价值相关的功能依赖关系,在软件发布规划,通过挖掘用户的喜好,软件功能。我们已经证明了所提出的方法的有效性和实用性,通过研究一个现实世界的软件项目。
2017-02-18 cs.SE
Visually Analyzing Company-wide Software Service Dependencies: An Industrial Case Study
本文介绍 SAP 内部开发的力导向服务依赖可视化与过滤工具,总结其在严格时间约束下通过最小可行产品和快速反馈迭代实现内部采用,并支持服务退役与数据驱动决策。
2023-08-22 cs.SE
Insights into Dependency Maintenance Trends in the Maven Ecosystem
本文使用Goblin框架定量分析Neo4j数据集,发现依赖较少的版本更易错过发布,而最新版本依赖新鲜度为正,表明管理效能更优,有助于改善生态健康。
2025-03-28 cs.SE
ARTENOLIS: Automated Reproducibility and Testing Environment for Licensed Software
动机:自动测试代码变更是持续集成的一个基本特性。对于开源代码,没有许可的依赖关系,存在各种持续集成服务。基于约束的重建和分析(COBRA)是一套用于计算建模的开源代码,依赖于许可软件。一个新的自动化框架的持续集成在半许可证的环境中需要开发的COBRA社区和相关工具的COBRA。结果如下:ARTENOLIS是一个通用的基础设施软件应用程序,它实现了开源软件与许可依赖项的持续集成。它使用主从框架,在多个操作系统和多个版本的许可软件依赖项上测试代码。ARTENOLIS确保COBRA工具和相关工具中代码的稳定性、完整性和跨平台兼容性。可用性和实施:可通过artenolis.lcsb.uni.lu免费访问持续集成服务器,该服务器是再现性和测试基础设施的核心。持续集成框架代码位于/.ci目录中,位于存储库的根目录下,可在github.com/opencobra/cobratoolbox上免费获得。
2017-12-01 cs.SE
Why feature dependencies challenge the requirements engineering of automotive systems: An empirical study
汽车软件系统中的功能依赖和功能交互是错误和缺陷行为的主要来源。为了克服这些问题,存在许多方法,专注于在系统设计的早期阶段对这些功能依赖性进行建模。然而,只有很少的实证研究,报告在工业软件系统中的这种依赖性的程度,以及如何在工业发展的背景下考虑它们。在本文中,我们分析了一个真正的汽车软件系统的功能架构,旨在评估未来车辆的功能之间的相互作用的程度,意识和重要性。我们的研究结果表明,在功能架构中,至少有85%的分析车辆功能相互依赖。它们还表明,当开发人员仅在架构级别上建模时,他们并不知道大量的这些依赖关系。因此,开发人员提到需要更精确的功能交互规范,例如,进行全面的影响分析。这些结果挑战了目前的开发方法,并强调需要一个广泛的建模功能及其依赖关系的需求工程。
2017-08-29 cs.SE
Analyzing Maintenance Activities of Software Libraries
针对工业应用中开源库维护风险,提出自动监控直接与传递依赖维护活动的方法,减少人工并提升安全性。
2025-04-23 cs.SE
DepsRAG: Towards Agentic Reasoning and Planning for Software Dependency Management
DepsRAG是一个多智能体框架,通过构建包含直接和传递依赖的知识图谱并结合RAG与Critic-Agent反馈机制,辅助开发者对软件依赖进行推理,实验表明其准确率提升三倍。
2024-10-22 cs.SE
The Code the World Depends On: A First Look at Technology Makers' Open Source Software Dependencies
针对当前开源软件依赖图景不明、难以确定优先级修复包的问题,研究调查108家主流科技厂商的公开OSS依赖信息,梳理信息可及性与细节,识别高频依赖包,为填补相关认知空白迈出第一步。
2024-04-17 cs.CR cs.SE
DepMiner: A Pipelineable Tool for Mining of Intra-Project Dependencies
由于各种原因,依赖性分析被认为是软件工程的一个重要领域。有大量的工具为软件开发人员和架构师提供帮助。对项目间和项目内依赖关系的分析可以帮助提供关于整个开发过程的各种见解。然而,目前缺乏一种工具,可以支持研究人员以最适合进一步分析的格式提取项目内依赖关系数据。在本文中,我们介绍DepMiner -一个开源的,语言无关的工具,挖掘详细的依赖关系数据从源代码,广泛的静态分析功能的行业标准IDE的基础上。DepMiner可以轻松集成到任意挖掘管道中,以进行涉及项目内依赖关系的大规模源代码处理工作。它很容易扩展,以支持其他语言的源代码,不同的分析粒度,以及其他特定于使用的需求。
2021-04-19 cs.SE
Software Dependencies 2.0: An Empirical Study of Reuse and Integration of Pre-Trained Models in Open-Source Projects
Queen's University(女王大学);Socket Inc.(Socket公司);Purdue University(普渡大学)
本研究通过分析开源项目中预训练模型的重用与集成,揭示软件依赖2.0的结构、重用流程及与其他组件的交互。
2026-02-18 cs.AI cs.SE
Visualizing Object-oriented Software for Understanding and Documentation
理解或理解源代码是软件工程的核心活动之一。当程序员维护、迁移、重用、记录或增强源代码时,理解面向对象的源代码是必不可少的。不能更改未理解的源代码。对面向对象源代码的理解是一个困难的问题解决过程。为了编写面向对象软件系统的文档,就需要了解它的源代码。要做到这一点,除了源代码中的量化信息(如类的数量)之外,还需要挖掘源代码依赖关系。本文提出了一种自动化的方法,其目的是通过可视化其源代码的面向对象的软件文档。面向对象的源代码的设计和它的主要特点是在可视化表示。显示包内容、类信息、类之间的关系、方法之间的依赖关系和软件度量。提取的视图对理解和描述面向对象软件是非常有帮助的。这种方法的新颖之处在于利用源代码中的代码依赖性和定量信息,通过一组图有效地记录面向对象的软件。为了验证该方法,它已被应用到几个案例研究。评价结果表明,大多数面向对象的软件系统都已正确地编制了文档。
2016-01-28 cs.SE
An ML-based Approach to Predicting Software Change Dependencies: Insights from an Empirical Study on OpenStack
École de Technologie Supérieure;Université du Québec à Montréal(魁北克大学蒙特利尔分校)
针对OpenStack中软件变更依赖识别滞后且耗时的问题,提出利用两个ML模型预测变更间依赖可能性及确切依赖对的半自动化方法,性能优异且具有良好top-k召回率。
2025-08-08 cs.LG cs.SE
Bomfather: An eBPF-based Kernel-level Monitoring Framework for Accurate Identification of Unknown, Unused, and Dynamically Loaded Dependencies in Modern Software Supply Chains
本文提出基于 eBPF 的内核级框架 Bomfather,通过实时透明捕获软件构建依赖并计算加密哈希与构建 Merkle 树,解决传统依赖跟踪不准确的问题,生成更精确的 SBOMs 和 ADGs,降低供应链风险。
2025-03-03 cs.CR cs.OS cs.SE
Beyond Dependencies: The Role of Copy-Based Reuse in Open Source Software Development
本研究利用 World of Code 基础设施测量了开源软件中基于拷贝的复用普遍程度及影响因素,发现该复用方式普遍存在且受项目规模、文件类型和时间影响,为未来提升复用效率与降低风险的研究奠定基础。
2024-09-07 cs.SE
ZTD$_{JAVA}$: Mitigating Software Supply Chain Vulnerabilities via Zero-Trust Dependencies
本文提出零信任依赖方法,将NIST ZTA应用于软件应用,设计了系统ZTD$_{SYS}$与Java原型ZTD$_{JAVA}$,以低成本有效防御软件供应链漏洞。
2024-12-20 cs.CR cs.SE
Promises and Perils of Mining Software Package Ecosystem Data
本文综述了挖掘软件包生态系统数据的承诺与风险,探讨了依赖网络获取、边界界定、未使用依赖检测、开发者识别等挑战,并强调了跨语言泛化问题。
2023-05-29 cs.SE
Towards Understanding Third-party Library Dependency in C/C++ Ecosystem
第三方库(TPL)经常在软件中重用,以降低开发成本和上市时间。但是,外部库依赖性可能会在主机应用程序中引入漏洞。图书馆的依赖性问题已经引起了相当大的关注。许多包管理器,如Maven,Pip和NPM,被提议用于管理TPL。此外,大量的努力已经投入到研究语言生态系统中的依赖关系,如Java,Python和JavaScript(C/C++除外)。由于缺乏统一的C/C++包管理器,现有的研究对C/C++生态系统中的TPL依赖了解甚少,特别是在大规模的情况下。为了深入理解C/C++生态系统中的TPL依赖,本文收集了现有的TPL数据库、包管理工具和依赖检测工具,总结了C/C++项目的依赖模式,构建了一个全面而精确的C/C++依赖检测器。使用我们的检测器,我们从GitHub上包含24 K C/C++存储库的大型数据库中提取依赖关系。基于提取的依赖关系,我们提供了实证研究的结果和发现,其目的是了解第三方物流的依赖关系的特点。我们进一步讨论了C/C++依赖管理的意义以及未来软件工程研究人员和开发人员在库开发、软件组合分析和C/C++包管理等领域的研究方向。
2022-09-20 cs.SE
Formalisation and Analysis of Component Dependencies
这套理论提出了一个形式化的Isabelle/HOL+Isar组件之间的数据依赖关系。该方法允许分析面向系统的有效检查的系统结构:它的目的是详细说明一个具体的系统,系统(或系统模型)的哪些部分是必要的检查给定的属性。
2014-05-13 cs.SE
Policy-driven Software Bill of Materials on GitHub: An Empirical Study
本研究通过挖掘GitHub软件仓库,分析政策驱动型软件物料清单(SBOM)的现状,发现热门仓库中仅0.56%含此类SBOM,其依赖项存在2202个唯一漏洞、22%缺许可信息,为SBOM助力安全评估与许可管理提供参考。
2025-09-01 cs.SE
Augmenting Software Bills of Materials with Software Vulnerability Description: A Preliminary Study on GitHub
本文针对SBOMs缺乏软件漏洞信息的问题,提出用项目依赖项暴露的CVE信息增强40个开源项目的SBOMs,并通过提交pull requests和问卷调查进行评估,反馈表明该方法具有实用价值。
2025-05-27 cs.SE
Evolving Collaboration, Dependencies, and Use in the Rust Open Source Software Ecosystem
开源软件(OSS)在工业、研究和政府中广泛传播。OSS代表了一种有效的开发模式,因为它以可扩展的方式利用了许多开发人员的分散努力。由于OSS开发人员在相互依赖的模块上独立工作,他们以生态系统的形式创建了一个更大的整体,留下了他们的贡献和合作的痕迹。从这些跟踪中获得的数据使大规模分散协作工作的研究成为可能。我们展示了Rust生态系统中数万名开发人员的活动数据,以及他们的库之间不断发展的依赖关系。这些数据涵盖了开发人员对Rust库的七年贡献,可用于重建生态系统的开发历史,例如不断增长的开发人员协作网络或依赖网络。这些数据还辅以下载量和受欢迎程度的统计数据,跟踪随着时间的推移使用和成功的动态。总的来说,这些数据全面反映了生态系统的几个方面。
2022-11-23 cs.SE cs.SI
A Comparative Study of Vulnerability Reporting by Software Composition Analysis Tools
背景:现代软件使用许多第三方库和框架作为依赖项。这些依赖关系中的已知漏洞是潜在的安全风险。因此,软件组合分析(SCA)工具越来越多地被从业者采用,以跟踪脆弱的依赖关系。目的:本研究的目标是了解不同SCA工具在漏洞报告方面的差异。了解现有SCA工具在分析方面是否存在差异以及差异如何,可以帮助安全从业人员选择正确的工具并确定未来的研究需求。方法:我们通过比较9个行业领先的SCA工具对一个大型Web应用程序OpenMRS的分析报告,提出了一个深入的案例研究,OpenMRS由Maven(Java)和npm(JavaScript)项目组成。结果:我们发现这些工具在漏洞报告方面各不相同。在所研究的工具中,Maven报告的脆弱依赖项的数量从17到332不等,npm项目从32到239不等。同样,Maven工具报告的已知漏洞数量从36到313不等,npm项目从45到234不等。我们对工具结果的手动分析表明,漏洞数据库的准确性是SCA工具的关键区别。结论:我们建议从业者目前不应依赖任何单一工具,因为这可能导致遗漏已知漏洞。我们指出了SCA领域的两个研究方向:i)建立框架和指标来识别依赖漏洞的误报; ii)构建自动化技术来持续监控来自开源包生态系统的漏洞数据。
2021-09-01 cs.SE
On the Threat of npm Vulnerable Dependencies in Node.js Applications
软件漏洞对我们日常依赖的软件系统有很大的负面影响。有关软件漏洞的报告总是描绘出一幅严峻的画面,一些报告显示,83%的组织依赖于易受攻击的软件。然而,我们的经验使我们相信,在宏伟的计划中,这些软件漏洞的影响可能比报告的要小。因此,我们进行了一项研究,以更好地了解Node.js应用程序中使用的npm漏洞包的威胁。我们根据软件包的生命周期为软件包中的漏洞定义了三个威胁级别,其中,如果软件包漏洞在依赖应用程序中使用时被隐藏或仍然未知,则将其分配为低威胁级别(t),如果漏洞在t时被报告但尚未发布,则为中等威胁级别,如果在t时公开宣布,则为高威胁级别。然后,我们进行了一项实证研究,涉及6,673个真实世界,活跃和成熟的开源Node.js应用程序。我们的研究结果显示,虽然67.93%的受检查的应用程序依赖于至少一个易受攻击的软件包,但这些受影响的应用程序中94.91%的易受攻击的软件包被归类为具有低威胁。此外,我们发现,在被归类为具有高威胁的易受攻击的软件包的情况下,正是应用程序缺乏更新使得它们易受攻击,即,真正的问题并不是脆弱性的存在。此外,我们在应用程序生命周期的不同阶段验证了我们的研究结果,发现我们的研究结果仍然成立。我们的研究认为,当涉及到软件漏洞时,事情可能并不像看起来那么糟糕,考虑漏洞威胁是关键。
2020-09-18 cs.SE
Dependency Practices for Vulnerability Mitigation
本研究分析npm生态系统中450多个漏洞和20多万个受感染包,利用9个特征构建预测模型,识别快速修复漏洞的依赖包,帮助开发者缓解供应链漏洞风险。
2023-10-11 cs.SE
Uncovering Hidden Inclusions of Vulnerable Dependencies in Real-World Java Projects
Paderborn University(帕德博恩大学);SAP Labs(SAP实验室);SAP SE(SAP公司);Fraunhofer IEM(弗劳恩霍夫IEM研究所)
Unshade通过结合元数据扫描的效率和基于代码的扫描能力,揭示现实世界Java项目中隐藏的易受攻击依赖项,发现大量未被传统方法检测到的漏洞。
2026-01-30 cs.CR cs.SE
Exploring the SECURITY.md in the Dependency Chain: Preliminary Analysis of the PyPI Ecosystem
Faculty of Information and Communication Technology, Mahidol University(玛希隆大学信息通信技术学院);Graduate School of Science and Technology, Nara Institute of Science and Technology (NAIST)(奈良先端科学技术大学院大学理工学研究科);Graduate School of Information Science and Technology, The University of Osaka(大阪大学情报理工学研究科)
本研究分析了PyPI生态中SECURITY.md文件对依赖管理的影响,发现其与更模块化和功能丰富的项目相关,促进了主动依赖管理。
2025-11-27 cs.SE
Evolution of ROOT package management
ROOT是一个庞大的代码库,具有一组复杂的构建时依赖关系; ROOT的“核心”和全面部署之间的编译时间有很大的差异。我们目前的内部ROOT包和外部包的“延迟构建”的结果。这使得能够提供一个“轻量级”的ROOT核心,随后通过构建额外的模块来扩展ROOT的功能。作为这项工作的一部分,我们改进了将ROOT代码分离为具有最小依赖性的不同模块和包。这种方法为用户提供了更好的灵活性,并且可以组合各种构建功能,而无需从头开始重新构建。依赖性是软件中,特别是HEP软件生态系统中常见的问题。我们想讨论工件管理(“延迟安装”)系统的改进,作为“依赖地狱”问题的解决方案。HEP软件栈通常由多个具有依赖关系的子项目组成。开发模式往往是分散的,独立的和不连贯的子项目。我们认为,软件的设计应利用现有的其他软件组件,或已设计和实施用于其他地方的软件组件,而不是“重新发明轮子”。在我们的贡献中,我们将介绍我们的方法与一组示例和用例一起ROOT的工件管理系统。
2019-06-11 cs.SE
Static Code Analysis of Multilanguage Software Systems
使用静态代码分析来识别多语言软件系统的依赖调用图是具有挑战性的。开发当今系统所使用的不同语言通常具有不同的词法、语法和语义规则,这使得彻底的分析变得困难。此外,它们在组件内部和组件之间提供不同的模块化和依赖机制。最后,它们促进和--或要求各种框架提供不同的服务集,这些服务集引入了隐藏的依赖关系,这些依赖关系是当前静态代码分析方法所看不到的。在本文中,我们确定了五个重要的挑战,静态代码分析必须克服多语言系统,我们提出了要求,以处理它们。然后,我们提出了这些需求的解决方案来处理JEE应用程序,它将服务器端Java源代码与许多客户端Web方言(例如,JSP,JSF),同时依赖于框架(例如,Web和EJB容器)创建隐藏的依赖关系。最后,我们通过开发一套工具来分析JEE应用程序,构建依赖调用图,并将这些工具应用于两个示例JEE应用程序,来评估我们的解决方案的实现。我们的评估表明,我们的工具可以解决所确定的挑战,并提高召回识别多语言的依赖关系相比,标准的JEE静态代码分析,因此,间接提出的要求是有用的,以建立多语言的静态代码分析。
2019-06-03 cs.SE
Dirty-Waters: Detecting Software Supply Chain Smells
针对使用开源依赖的项目难以及时察觉软件供应链风险的问题,本文提出软件供应链坏味道概念与检测工具Dirty-Waters,经多版本JavaScript项目验证其能有效识别大量风险点,为供应链安全防护提供明确指引。
2024-10-21 cs.CR cs.SE
A Comprehensive Study on the Impact of Vulnerable Dependencies on Open-Source Software
Universidade Federal de Campina Grande(坎皮纳格兰德联邦大学)
本研究分析了开源软件中依赖项漏洞的严重性、持续性和分布,发现大多数编程语言中易受攻击的依赖项具有传递性,关键漏洞平均持续超过一年才被修复。
2025-12-03 cs.CR cs.SE
On the Security Blind Spots of Software Composition Analysis
针对软件成分分析中因代码克隆、遮蔽产生的隐藏依赖漏洞检测难题,提出轻量级Maven仓库漏洞克隆检测方法,检出数百个现有SCA工具遗漏的漏洞,推动多个CVE条目更新。
2023-10-09 cs.SE
Forecasting the risk of software choices: A model to foretell security vulnerabilities from library dependencies and source code evolution
本文提出一个白盒轻量级模型,通过形式化源代码演化与库依赖,在库级别预测软件项目未来面临CVE披露的概率,辅助项目特定技术决策与生态系统健康度量。
2024-11-17 cs.CR cs.ET cs.SE
Modeling Interconnected Social and Technical Risks in Open Source Software Ecosystems
开源软件生态系统由数千个相互依赖的库组成,用户可以将它们组合起来产生巨大的效果。最近的工作指出了这些系统中的两种风险:bug和漏洞等技术问题可以通过依赖链接传播,并且相对较少的开发人员负责维护即使是最广泛使用的库。然而,对软件生态系统中的系统性风险进行更全面的诊断应该考虑这些社会和技术风险源如何相互作用并相互放大。出于观察,同一个人保持依赖网络内的几个库,我们提出了一个方法框架来衡量软件生态系统中的依赖关系和开发人员的功能的风险。在我们的模型中,随着开发人员的离开和上游依赖关系的失败,库失败的可能性会增加。我们将我们的方法应用于来自Rust生态系统的数据,突出了几个在只考虑技术依赖时被忽视的系统重要库。我们比较潜在的干预措施,寻求更好的方法来部署有限的开发人员资源,以改善整体生态系统的健康和软件供应链的弹性。
2022-05-10 cs.SE cs.SI
Slicing Event Traces of Large Software Systems
对由许多访问共享资源的进程组成的大型软件系统进行调试是一项非常困难的任务。许多商业系统在系统执行期间记录基本事件以用于事后分析。然而,大型和长时间运行的系统的事件跟踪可能非常庞大。分析此类事件跟踪以识别错误行为的来源可能非常繁琐、容易出错且效率低下。在本文中,我们提出了一种新的技术切片事件轨迹作为一种手段,减少分析的事件数量。该技术识别可能影响观察到的不正确系统行为的事件。为了识别影响事件,识别事件之间的几种类型的依赖关系。这些依赖关系是从事件跟踪中自动确定的。为了提高切片的精度,我们建议使用额外的依赖关系,称为因果依赖关系,这可以进一步减少切片事件跟踪的大小。我们的初步经验表明,这种切片技术可以显着减少分析的事件跟踪的大小。
2001-01-11 cs.PL cs.SE
Complex Dependencies in Large Software Systems
从复杂适应系统理论的角度分析了两个大型开源软件系统。对于这两个系统,完整的依赖图的构造和它们的性质是一致的随机增长的假设。特别是,传入链接是根据Zipf定律分布的两个系统。使用小世界标准的有向图,它表明,相反,在文献中的要求,这些软件系统不具备小世界属性。此外,有人认为,小世界属性是没有任何特别的优势,在一个标准的分层架构。最后,建议的特征向量中心性可以发挥重要作用,在决定哪些开源软件包中使用的关键任务的应用程序。这是因为仅仅知道传入链接的绝对数量不足以决定一个包对整个系统的重要性,相反,链接包的重要性也起着重要的作用。
2009-09-16 cs.SE nlin.AO physics.soc-ph
On the Effect of Transitivity and Granularity on Vulnerability Propagation in the Maven Ecosystem
重用软件库是现代软件工程的支柱。到2022年,平均每个Java应用程序依赖于40个第三方库。依赖这些库会使项目暴露于潜在的漏洞,并可能使应用程序及其用户处于危险之中。不幸的是,对软件生态系统的研究表明,受此类漏洞影响的项目数量正在增加。以前的调查通常会根据依赖关系级别来推断依赖关系,但我们认为这会大大增加受影响项目的实际数量。在这项工作中,我们研究了传递性和粒度对Maven生态系统中漏洞传播的影响。在我们的研究方法论中,我们收集了3 M最新Maven软件包的大型数据集。我们获得了这个数据集的完整的可传递依赖集,构建了整个程序调用图,并进行了可达性分析。这种方法允许我们识别实际上受到使用易受攻击的依赖关系影响的Maven包。我们的实证结果表明:(1)当且仅当所有的传递依赖都被考虑时,我们的数据集中大约1/3的包被识别为脆弱的。(2)只有不到1%的软件包在其依赖项中具有到易受攻击代码的可达调用路径,这远远低于基于依赖项的简单分析。(3)限制所解析的依赖关系树的深度可能是减少昂贵的细粒度(脆弱性)分析的计算时间的有用技术。我们讨论了我们的工作的影响,并为研究人员和从业人员提供可操作的见解。
2023-01-19 cs.SE
Code Arcades: 3d Visualization of Classes, Dependencies and Software Metrics
本文提出 Code Arcades 三维代码可视化方法,通过可配置分组、多粒度软件度量和交互式渲染引擎,提升开发者对大规模源代码结构与复杂性的理解。
2025-09-27 cs.GR cs.HC cs.SE
Inter-Package Dependency Networks in Open-Source Software
本研究分析了开源软件中包间层次的复杂网络,其中包依赖关系通常跨越项目和开发团队。我们审查复杂的网络确定在“较低”的抽象层次,然后制定一个描述的软件组件的相互作用在包的水平,一个相对“高”的抽象层次。通过从两个来源挖掘开源软件存储库,我们经验性地表明,在这种粒度下的模块耦合在这两种情况下都创建了一个小世界和无标度网络。
2004-11-29 cs.SE
Analyzing the Evolution of Inter-package Dependencies in Operating Systems: A Case Study of Ubuntu
本文提出 DepEx 框架,在二进制文件层面分析操作系统包间依赖关系及其演化,并通过对 Ubuntu 2005 至 2023 年间 84 个版本的系统研究,揭示了包管理演化趋势,为提升软件稳定性、性能及降低维护迁移风险提供支持。
2023-07-10 cs.SE
Towards Compatibly Mitigating Technical Lag in Maven Projects
针对Maven项目依赖升级中技术滞后与兼容性风险难以平衡的问题,提出新型工具LagEase,在减少技术滞后的同时避免破坏性变更和臃肿依赖,实验证明其优于Dependabot。
2025-04-02 cs.SE
DepGraph: Localizing Performance Bottlenecks in Multi-Core Applications Using Waiting Dependency Graphs and Software Tracing
本文解决的挑战,了解等待之间的依赖关系的线程和硬件资源完成任务所需的。其目标是通过检测系统级阻塞依赖引起的潜在瓶颈来提高软件性能。在本文中,我们使用一个系统级的跟踪方法来提取一个等待依赖图,显示了所有交错的线程和资源之间的任务执行的故障。该方法允许开发人员和系统管理员快速发现总执行时间如何在其交互线程和资源之间分配。最终,该方法有助于检测瓶颈并突出其可能的原因。我们的实验表明,所提出的方法在几个行业级用例的有效性。三个性能异常进行了分析和解释,使用所提出的方法。对方法效率的评估表明,强加的开销从未超过10.1%,因此使其适用于生产环境。
2021-03-08 cs.SE
Vulnerable Open Source Dependencies: Counting Those That Matter
背景技术背景:脆弱的依赖关系是当今开源软件生态系统中的一个已知问题,因为OSS库高度互连,开发人员并不总是更新其依赖关系。目标:在本文中,我们的目标是提出一个精确的方法,结合基于代码的补丁分析与信息构建,测试,更新日期,并从代码库中提取的组,因此,迎合了正确分配开发和审计资源的工业实践的需求。实验方法:为了了解所提出的方法的行业影响,我们考虑了SAP在其软件中使用的200个最流行的OSS Java库。当考虑所有库版本时,我们的分析包括10905个不同的GAV(组,工件,版本)。研究结果:我们发现,受已知漏洞影响的依赖项中约有20%没有部署,因此,它们不会对所分析的库构成危险,因为它们在实践中无法被利用。被分析的库的开发人员能够修复(实际上负责)82%的已部署的易受攻击的依赖项。绝大多数(81%)易受攻击的依赖项可以通过简单地更新到新版本来修复,而我们的样本中有1%的易受攻击的依赖项被停止,因此可能需要昂贵的缓解策略。结论:我们的案例研究表明,正确的计数允许软件开发公司接收有关其库依赖关系的可操作信息,因此,正确分配昂贵的开发和审计资源,这是在扭曲的测量情况下效率低下。
2018-08-29 cs.CR cs.SE
An Empirical Comparison of Dependency Network Evolution in Seven Software Packaging Ecosystems
几乎每一种流行的程序设计语言都带有一个或多个包管理器。由这样的包管理器分发的软件包形成大的软件生态系统。这些打包生态系统包含大量定期更新的包版本,并且与其他包版本有许多依赖关系。虽然打包生态系统对各自的开发人员社区非常有用,但它们面临着与规模、复杂性和进化速度相关的挑战。典型的问题是向后不兼容的软件包更新,以及依赖于已经过时或不活动的软件包的风险。本文使用libraries.io数据集对七个不同规模和年龄的包装生态系统的包依赖网络演变之间的相似性和差异性进行了定量实证分析:Cargo for Rust,CPAN for Perl,CRAN for R,npm for JavaScript,NuGet for.NET平台,Packagist for PHP和RubyGems for Ruby。我们提出了新的指标来捕捉这些依赖网络的增长,易变性,可恢复性和脆弱性,并使用这些指标来分析和比较它们的演变。我们观察到,依赖网络往往会随着时间的推移而增长,无论是在大小和软件包更新的数量,而少数软件包负责大部分的软件包更新。大多数软件包依赖于其他软件包,但只有一小部分软件包占大多数反向依赖。我们观察到一个高比例的脆弱的软件包,由于高和越来越多的传递依赖。这些发现有助于评估软件包依赖网络的质量,并通过依赖管理工具和强加的政策来改善它。
2017-10-13 cs.SE
Mapping Out the HPC Dependency Chaos
高性能计算(HPC)软件栈已经变得非常复杂,一些应用程序的依赖关系多达数百个。打包、分发和管理这种规模的软件栈在任何地方都是一项复杂的工作。HPC系统处理深奥的编译器、硬件和一系列不常见的组合。在本文中,我们将探讨包装软件的机制,以找到自己的依赖关系的背景下,分类的软件分布,并讨论他们的好处和陷阱。我们讨论了使用这些组合堆栈引起的一些常见问题的解决方法,并介绍了Shrinkwrap:一种用于生成直接从精确位置以精确顺序加载其依赖项的二进制文件的解决方案。除了简化二进制文件的使用之外,在我们的评估中,这种方法还将大型动态链接MPI应用程序的加载速度提高了7倍。
2022-11-11 cs.MS cs.SE
Software graphs and programmer awareness
在面向对象软件中,类型之间的依赖关系可以被看作是有向图,类型作为节点,依赖关系作为边。这类图的入度分布和出度分布有很大不同的形式,前者类似于幂律分布,后者类似于指数分布。这种效应似乎与应用程序或类型关系无关。一个简单的生成模型,提出了探索的命题,即差异的出现,因为程序员知道的出度的类型,但不是它的入度。该模型再现了这两种分布,并与在12个不同Java应用程序中的14种不同类型关系中观察到的分布进行了比较。
2008-02-16 cs.PL cs.SE
Do Automatic Comment Generation Techniques Fall Short? Exploring the Influence of Method Dependencies on Code Understanding
针对自动注释生成技术忽略方法依赖的问题,提出依赖感知技术HelpCOM,通过引入辅助方法信息提升注释质量,实验与调查证明其显著优于基线方法并增强了代码可理解性。
2025-04-28 cs.SE
Can Network Analysis Techniques help to Predict Design Dependencies? An Initial Study
ISISTAN, CONICET-UNICEN(ISISTAN,阿根廷国家科学与技术研究理事会-国立拉普拉塔大学中心)
软件系统的模块之间的依赖程度是表征其设计结构及其随时间演化能力的关键属性。一些设计问题通常与模块之间不期望的依赖性相关。能够预测这些问题对开发人员来说非常重要,这样他们就可以及早计划维护和重构工作。然而,现有的工具仅限于检测不需要的依赖关系,一旦它们出现在系统中。在这项工作中,我们调查模块依赖是否可以预测(在它们实际出现之前)。由于模块结构可以被看作是一个网络,即依赖图,我们利用网络特征来分析这种结构的动力学。特别是,我们应用链接预测技术,这项任务。我们使用链接预测和机器学习技术对两个跨多个版本的Java项目进行了评估,并评估了它们在识别从项目版本到下一个版本的新依赖关系方面的性能。结果,虽然初步的,表明链接预测方法是可行的包依赖。此外,这项工作为进一步开发依赖预测的软件特定策略提供了机会。
2018-08-08 cs.LG cs.SE
A Soundness and Precision Benchmark for Java Debloating Tools
针对 Java 去臃肿工具,构建包含 59 个测试用例的 Deblometer 基准,评估 Deptrim、JShrink 和 ProGuard,发现所有工具均存在移除必要构造导致的不正确性问题,需改进以保障软件可靠性。
2025-10-23 cs.SE
Towards a Software Architecture Description for Tax Compliance
Technische Hochschule Nürnberg Georg Simon Ohm(纽伦堡乔治·西蒙·欧姆应用技术大学);Kolabri GmbH(Kolabri有限公司);Blekinge Institute of Technology(布莱金厄理工学院);fortiss
本研究提出一种基于组件、依赖、所有权和管辖权的极小化架构视点,构建包含2518个组件和16533个依赖的工业微服务系统视图,通过税务专家评估发现架构描述能揭示跨境复用但无法支持法律意义上的税务评估。
2026-06-15 cs.SE