A Feature-Oriented Corpus for Understanding, Evaluating and Improving Fuzz Testing
Fuzzing是一种很有前途的安全漏洞检测技术。新开发的模糊器通常根据在易受攻击的程序/二进制文件上发现的错误数量进行评估。然而,现有的语料库通常不捕捉的功能,防止模糊发现错误,导致模糊的利弊评价的结论。一个典型的例子是,Driller比AFL检测到更多的错误,但它的评估无法确定Driller的进步是否源于concolic执行,因为,例如,它在解决数据集的魔法值方面的能力尚不清楚。在本文中,我们提出了解决上述问题的基础上产生语料库的搜索阻碍功能。作为概念验证,我们设计了FEData,这是一个原型语料库,目前专注于四个搜索阻碍功能,以生成用于模糊测试的易受攻击程序。与现有的只能回答“如何”的语料库不同,FEData还可以通过暴露(或理解)模糊器中已识别弱点的原因来进一步回答“为什么”。“为什么”信息是改进模糊器的关键。
2019-05-04 cs.SE
$ω$Test: WebView-Oriented Testing for Android Applications
针对 Android WebView 交互复杂且现有动态测试依赖人工或随机生成的问题,提出 $ω$Test,基于 WebView 专属属性与跨语言动态分析生成事件序列,在 74 个应用中发现 36 个未知缺陷。
2023-06-06 cs.SE
Retrieval-Oriented Code Representations in Agentic Bug Localization
Concordia University(康考迪亚大学)
研究文件级漏洞定位中代码表示的作用,在LCA和SWE数据集上比较五种代码表示,通过实验发现角色感知摘要性价比最佳,结合互补结果和LLM排序可进一步提升效果,案例研究验证技术有效性,强调代码表示应是智能体定位管道的重要设计选择。
2026-07-14 cs.SE
Toward Interactive Bug Reporting for (Android App) End-Users
许多软件错误都是手动报告的,特别是在用户界面中以视觉方式表现出来的错误。最终用户通常通过应用审查网站、问题跟踪器或应用内置的错误报告工具(如果可用)报告这些错误。虽然这些系统具有促进错误报告的各种特征(例如,文本模板或表单),它们通常向最终用户提供有限的指导、具体的反馈或质量验证,这些最终用户通常在报告bug方面缺乏经验,并且提交低质量的bug报告,这导致开发人员在bug报告管理任务中花费过多的精力。我们提出了一个交互式的错误报告系统的最终用户(伯特),实现为一个面向任务的聊天机器人。与现有的错误报告系统不同,Burt提供了基本错误报告元素的指导报告(即,观察到的行为、预期的行为和重现bug的步骤)、即时质量验证以及这些元素的图形化建议。我们为Android实现了一个版本的Burt,并对最终用户进行了实证评估研究,他们报告了先前工作中研究的六个Android应用程序中的12个错误。报告者发现,Burt的指导和自动化建议/澄清是有用的,而且Burt很容易使用。我们发现Burt报告包含的信息质量比通过基于模板的错误报告系统收集的报告更高。报告者告知对Burt的改进包括支持各种措辞来描述bug报告元素和改进的质量验证。我们的工作标志着一个重要的范式转变,从静态到交互式的错误报告的最终用户。
2022-09-21 cs.SE
Identifying Bugs in Make and JVM-Oriented Builds
本文提出 buildfs 模型以建模构建操作规范与实际文件系统行为,形式化定义增量与并行构建中的故障,并通过分析单次完整构建自动发现缺陷,在 Make 和 Gradle 项目中验证了其有效性、高效性及对 Java 构建系统的首创支持。
2020-05-14 cs.SE
Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
我们提出了NOPOL,一种自动修复错误条件语句的方法(即,if-then-else语句)。这种方法将一个有缺陷的程序和一个测试套件作为输入,并生成一个带有条件表达式的补丁作为输出。测试套件需要包含通过测试用例,以模拟程序的预期行为,以及至少一个失败的测试用例,以揭示要修复的错误。NOPOL的过程包括三个主要阶段。首先,NOPOL采用天使修复本地化,以确定在测试执行过程中的条件的预期值。其次,运行时跟踪收集用于收集变量及其实际值,包括原始数据类型和面向对象的特征(例如,空性检查),以用作补丁生成的构建块。第三,NOPOL将这些收集的数据编码成可满足性模理论(SMT)问题的实例,然后将SMT实例的可行解翻译回代码补丁。我们评估NOPOL的22个真实世界的错误(16个错误与错误的IF条件和6个错误与缺少先决条件)在两个大型开源项目,即Apache Commons Math和Apache Commons Lang。这些错误的实证分析表明,我们的方法可以有效地修复错误的IF条件和缺少先决条件。我们说明了NOPOL的能力和局限性,使用真正的错误修复的案例研究。
2018-11-10 cs.SE
PreciseBugCollector: Extensible, Executable and Precise Bug-fix Collection
针对现有缺陷数据集精准度与规模难以兼顾的问题,提出基于缺陷追踪器和缺陷注入器的多语言缺陷收集方法PreciseBugCollector,已构建含百万级缺陷的大规模精准数据集,适配工业场景需求。
2024-03-09 cs.PL cs.SE
On PROGRESS Operation. How to Make Object-Oriented Programming System More Object-Oriented (DRAFT)
实现持久对象的系统必须提供不同的机会,以便在对象存在期间以任意方式更改对象。在现代编程系统中,OO范式的传统实现具有基本的缺点,这使得持久可修改对象的实现变得相当复杂。存在不具有这些缺点的替代实现。在本文中,提供了PROGRESS操作,该操作修改现有继承层次结构中的现有对象。
2013-04-09 cs.PL cs.SE
The concept of class invariant in object-oriented programming
本文提出一种面向对象程序验证的类不变式证明规则,系统解决回调、隐秘访问和引用泄漏三大难题,并能处理文献中的挑战性示例。
2024-01-20 cs.PL cs.SE
From Codebase to Culprit (C2C): Reducing the Search Space for Bugs with Semantic Retrieval and Hierarchical Reinforcement Learning
University of Calgary(卡尔加里大学)
C2C框架结合语义检索与分层强化学习,在文件、函数和代码行多粒度上逐步缩减缺陷搜索空间,实现精确缺陷定位,并在真实Java和Python数据集上提升检索精度与定位准确性。
2026-10-01 cs.LG cs.SE
MUZZ: Thread-aware Grey-box Fuzzing for Effective Bug Hunting in Multithreaded Programs
灰盒模糊测试由于其轻量级的测试工具、快速的覆盖反馈和动态调整策略,已经揭示了真实世界软件中成千上万的漏洞。然而,直接将灰盒模糊应用于依赖于输入的多线程程序可能效率极低。在实践中,多线程相关的错误通常隐藏在复杂的程序流中。同时,现有的灰盒模糊技术没有强调线程交织影响多线程程序的执行状态。因此,主流的灰盒模糊器不能有效地测试多线程程序中的问题段,尽管他们可能会获得高的代码覆盖率统计。为此,我们提出MUZZ,一个新的灰盒模糊技术,在多线程程序中的错误狩猎。MUZZ拥有三种新颖的线程感知插装,即面向覆盖插装、线程上下文插装和调度干预插装。在模糊化过程中,这些工具产生运行时反馈,以强调线程交织引起的执行状态。通过利用动态种子选择和执行策略中的反馈,MUZZ保留了更多有价值的种子,这些种子在多线程上下文中暴露了错误。我们在12个真实世界的软件程序上评估MUZZ。实验表明,MUZZ在多线程相关种子生成和并发漏洞检测方面优于AFL。此外,通过针对生成的种子重放目标程序,MUZZ还揭示了更多的并发错误(例如,数据竞争,线程泄漏)比AFL。MUZZ总共检测到8个新的并发漏洞和19个新的并发错误。在撰写本文时,已为报告的问题分配了4个CVE ID。
2020-07-31 cs.SE
Detect-Localize-Repair: A Unified Framework for Learning to Debug with CodeT5
Salesforce Research Asia(赛富时亚洲研究院)
自动化软件调试是提高软件开发人员生产力的一项重要任务。许多基于神经的技术已经被证明对调试相关的任务有效,例如错误定位和程序修复(或错误修复)。然而,这些技术往往只关注其中之一,或者以阶段性的方式接近它们,忽略了它们之间的相互利益。在这项工作中,我们提出了一种新的统一的\emph{Detect-Localize-Repair}框架的基础上,预先训练的程序设计语言模型CodeT 5无缝地解决这些任务,命名为CodeT 5-DLR。具体来说,我们提出了三个目标,以适应通用CodeT 5调试:一个错误检测目标,以确定是否一个给定的代码片段是错误或没有,一个错误的本地化目标,以确定错误行,和程序修复目标,以翻译错误的代码,其固定的版本。我们在每个任务上评估它,并在Java和Python中的两个新收集的行级调试数据集上进行组合设置。广泛的结果表明,我们的模型显着优于现有的基线从自然语言处理和软件工程域。
2022-12-22 cs.CL cs.SE
Object-Oriented Modeling of Programming Paradigms
对于正确的应用程序,使用编程范式(如函数或逻辑编程)可以极大地提高软件开发的生产力。但是这些强大的范例都与外来的程序设计语言联系在一起,而软件开发的管理要求对单一语言进行标准化。这种困境可以通过以一种新的方式使用面向对象编程来解决。传统的分析方法是采用面向对象的建模方法。在新的方法中,分析确定了应用程序的理想范例;开发从范例的面向对象建模开始。在本文中,我们说明了新的方法,给出面向对象的建模和约束编程的例子。这些例子表明,不再需要在专用于它的语言中体现编程范式。
2006-11-09 cs.PL cs.SE
Using Defect Prediction to Improve the Bug Detection Capability of Search-Based Software Testing
自动测试生成器,如基于搜索的软件测试(SBST)技术,取代了手动编写测试用例的繁琐和昂贵的任务。SBST技术在生成具有高代码覆盖率的测试时是有效的。然而,高代码覆盖率是否足以最大限度地增加发现的bug数量?我们认为,SBST需要集中在有缺陷的领域,而不是在非缺陷的代码领域,以最大限度地发现错误的可能性搜索测试用例。缺陷预测算法提供了有关软件中容易出现错误的区域的有用信息。因此,我们制定了本论文的目标:\textit{Improve the bug detection capability of SBST by incorporating defect prediction information}。为了实现这一目标,我们设计了两个研究目标,即,1)开发一种新的方法(SBST $_{CL}$),该方法基于类有缺陷的可能性将时间预算分配给类,以及2)开发一种新的策略(SBST $_{ML}$)来指导底层搜索算法(即,遗传算法)对一类中的缺陷区域进行优化。通过对Defects4J数据集中434个真实报告的错误进行实证评估,我们证明了我们的新方法SBST $_{CL}$在资源受限的环境中,在时间预算紧张的情况下,比最先进的SBST更有效。
2022-06-14 cs.SE
Challenging Bug Prediction and Repair Models with Synthetic Bugs
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Stanford University(斯坦福大学)
提出BugFarm,利用LLM在注意力最少位置修改代码,生成难以检测和修复的复杂缺陷,评估显示其优于现有方法。
2025-09-09 cs.LG cs.SE
Seeing is Believing: Vision-driven Non-crash Functional Bug Detection for Mobile Apps
本文提出视觉驱动的多智能体协作 GUI 测试方法 Trident,利用 MLLM 理解页面转换与视觉线索,自动检测移动应用非崩溃功能缺陷,并在 590 个缺陷上显著优于 12 个基线。
2024-12-04 cs.SE
Exploring the Capabilities of Vision-Language Models to Detect Visual Bugs in HTML5 <canvas> Applications
针对使用程序化图形的HTML5 <canvas>应用难以检测视觉缺陷的问题,研究提出利用视觉语言模型,结合应用说明、缺陷类型描述及无缺陷截图作为上下文,实现最高100%的单应用视觉缺陷检测准确率。
2025-01-16 cs.SE
Suggest an Aspect-Oriented Design Approach for UML Communication Diagram
统一建模语言(UML)是一种有效的面向对象软件建模语言,目前的面向对象软件设计方法还不成熟,不能很好地描述软件的并发性、容错性、分布性和持久性等非功能性需求。我们的方法建议使用面向方面的软件开发(AOSD)机制来解决的问题,在UML中的通信图的交互只支持面向对象的机制,因此AOSD允许设计程序,是超出了严格的面向对象的,并可能改善的结构和实现。
2013-07-03 cs.PL cs.SE
What is a "bug"? On subjectivity, epistemic power, and implications for software research
本文探讨了软件研究中“bug”定义的主观性与认知权力问题,指出在缺乏完整形式化规约时,现有定义常依赖不完美的代理,并分析了这种模糊性对软件工程研究的影响。
2024-02-13 cs.HC cs.SE
Seamless Object-Oriented Requirements
契约式设计通过将软件需求与实现统一起来,实现了无缝的软件开发。然而,在其纯粹的形式下,契约式设计在契约的表达性、可验证性和可重用性方面留下了一些问题。这些问题大大降低了无缝开发的实用性。本文介绍了无缝面向对象的需求-一种新的无缝开发方法,它建立在契约式设计和现在可用的高级程序证明工具的基础上。文章解释和说明了新的方法,最后定量评估的程度,该方法解决了传统合同的问题。
2019-11-23 cs.PL cs.SE
STEAM: Simulating the InTeractive BEhavior of ProgrAMmers for Automatic Bug Fixing
本文提出名为STEAM的分阶段框架,通过模拟多个程序员在缺陷报告、诊断、补丁生成与验证四个阶段的交互协作行为,利用ChatGPT显著提升了大型语言模型的自动缺陷修复能力,达到了最先进的性能水平。
2023-08-28 cs.SE
ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming
最近的实证研究表明,GenProg的性能并不令人满意,特别是对于Java。在本文中,我们提出了ARJA,一个新的GP为基础的修复方法自动修复的Java程序。具体来说,我们提出了一种新的低粒度补丁表示,适当的搜索子空间的可能错误的位置,操作类型和潜在的修复成分,使GP探索搜索空间更有效。基于这种新的表示,我们制定自动程序修复作为一个多目标的搜索问题,并使用NSGA-II寻找更简单的修复。为了减少计算量和搜索空间,我们引入了一个测试过滤过程,可以加快适应度评估的GP和三种类型的规则,可以应用到避免不必要的操作的代码。此外,我们还提出了一种类型匹配策略,可以通过利用现有语句的语法模式来创建新的潜在修复成分。我们进行了一个大规模的实证评估ARJA及其变种的种子错误和现实世界的错误相比,几个国家的最先进的修复方法。我们的研究结果验证了ARJA中所采用的搜索机制的有效性和效率,也显示了其优于其他方法。特别是,与jGenProg(GenProg for Java的实现)相比,完全遵循冗余假设的ARJA版本可以为两倍以上的bug数量(从27到59)生成测试套件足够的补丁,并为近四倍的数量(从5到18)生成正确的补丁,在Defects 4J中考虑了224个真实世界的bug。此外,ARJA是能够正确地修复几个真正的多位置的错误,很难被修复的大多数现有的修复方法。
2017-12-21 cs.SE
Buggin: Automatic intrinsic bugs classification model using NLP and ML
本文提出Buggin方法,利用NLP技术(seBERT和TF-IDF)结合机器学习算法自动识别缺陷报告中的内在缺陷,实验表明TF-IDF与决策树结合在缺陷标题上取得78%的F1最高分。
2025-04-02 cs.SE
An Exploratory Study of Bug-Introducing Changes: Exploring Relationships in Bug-Introducing Changes Towards Causal Understanding
University of Passau(帕绍大学);Universidad de Los Andes(洛斯安第斯大学)
本研究通过探索软件开发实践中与缺陷引入更改的关系,为理解因果机制提供了基础框架。
2026-02-04 cs.SE
Navigate, Understand, Communicate: How Developers Locate Performance Bugs
背景:性能缺陷可能导致计算效率、功耗和用户体验方面的严重问题。定位这些bug是一项困难的任务,因为开发人员必须判断每个昂贵的操作是否需要或不需要消耗运行时。目的:我们想研究开发人员在定位性能错误时如何浏览代码,理解程序并传达检测到的问题。方法:我们进行了一项定性的用户研究,观察12名开发人员试图修复两个开源项目中记录的性能错误。开发人员使用一个概要分析和分析工具,该工具以列表表示形式直观地描述运行时信息,并嵌入到源代码视图中。结果如下:我们确定了开发人员用于查明bug的典型导航策略,例如,基于运行时消耗的方法调用。可视化和代码的集成帮助开发人员理解错误。可视化数据结构和算法的草图被证明是有价值的外部化和沟通的复杂错误的理解过程。结论:修复性能bug是一个代码理解和导航问题。基于已执行方法的灵活导航特性以及源代码和性能信息的紧密集成支持该过程。
2017-06-30 cs.SE
Large Language Models Based JSON Parser Fuzzing for Bug Discovery and Behavioral Analysis
本研究提出利用大语言模型生成测试用例与变异体,对开源JSON解析器开展模糊测试,以发现潜在漏洞并识别、化解不同解析器间的行为差异,提升JSON解析器的可靠性。
2024-10-30 cs.SE
On the feasibility of automated prediction of bug and non-bug issues
上下文:问题跟踪系统用于跟踪和描述开发过程中的任务,例如,请求功能改进或报告错误。然而,过去的研究表明,报告的问题类型往往与问题的描述不匹配。目的:我们希望了解问题类型预测技术的总体成熟度,目标是预测问题是否是错误,并评估我们是否可以通过合并有关问题的手动指定知识来改进现有模型。方法:我们针对问题的标题和描述训练不同的模型,以说明这些字段之间结构的差异,例如,长度。此外,我们手动检测其描述包含空指针异常的问题,因为这些是问题是错误的强指标。结果如下:我们的方法总体上表现最好,但与基于Facebook AI Research的fastText分类器的文献方法没有显著差异。预测性能的小幅改善是由于我们使用的问题的结构信息。我们发现,以空指针异常的形式使用有关问题内容的信息是没有用的。我们通过标记bug修复提交的例子证明了问题类型预测的有用性。结论:如果用例允许一定数量的遗漏错误报告或预测太多问题(因为错误是可接受的),则问题类型预测可能是一个有用的工具。
2021-10-08 cs.SE
The Foundation Cracks: A Comprehensive Study on Bugs and Testing Practices in LLM Libraries
Xi'an Jiaotong University, China(西安交通大学);Singapore Management University, Singapore(新加坡国立管理学院);University of Massachusetts Amherst, USA(马萨诸塞大学阿姆赫斯特分校);Nanyang Technological University, Singapore(南洋理工大学)
该研究首次针对HuggingFace Transformers和vLLM两类主流LLM库的缺陷特征与测试实践开展实证分析,明确缺陷类型与核心成因,指出现有测试的不足并提出质量保障建议。
2025-06-14 cs.AI cs.SE
An Exploratory Characterization of Bugs in COVID-19 Software Projects
背景:COVID-19大流行的可怕后果影响了COVID-19软件的开发,即,用于分析和缓解COVID-19的软件。COVID-19软件中的漏洞可能是后果性的,因为COVID-19软件项目可能影响公共卫生政策和用户数据隐私。目的:本文的目标是通过对与COVID-19相关的开源软件项目的实证研究,帮助从业者和研究人员提高COVID-19软件的质量。方法:我们使用GitHub上托管的129个开源COVID-19软件项目进行实证研究。接下来,我们对收集到的项目中的550个错误报告进行定性分析,以确定错误类别。结果:我们确定了8个错误类别,其中包括数据错误,即,在COVID-19数据的挖掘和存储过程中发生的错误。已识别的漏洞类别出现在7类软件项目中,包括(i)使用统计建模执行与COVID-19相关的预测的项目,以及(ii)用于设计和实施医疗设备(如呼吸机)的医疗设备软件。结论:根据我们的研究结果,我们倡导通过数据科学从业者和公共卫生专家之间更好的协同作用来构建强大的统计模型。用户跟踪软件中存在安全漏洞,需要开发工具来检测数据隐私侵犯和安全漏洞。
2020-05-31 cs.SE
A Study of Single Statement Bugs Involving Dynamic Language Features
动态语言特征在程序设计语言中广泛可用,以实现可以适应多个使用上下文的功能,从而实现重用。数据绑定、对象关系映射和用户界面构建器等功能可能严重依赖于这些特性。然而,它们的使用有风险和缺点,因为它们影响静态分析和依赖于这种分析的技术(例如错误检测和自动程序修复)的可靠性。由于理解反射代码的潜在困难、编译时安全性的丧失和不正确的API使用,它们还可能使软件更容易出错。在本文中,我们开始量化在Java程序中使用动态语言功能的一些影响,也就是说,使用这些功能相对于一个特定类型的错误称为单语句错误的错误倾向。通过挖掘2,024个GitHub项目,我们发现了139个单语句bug实例(属于10种不同的bug模式),其中最多的bug属于三种特定模式:错误的函数名称,相同的函数更多的参数和更改使用的标识符。这些结果可以帮助从业者量化使用动态技术的风险,而不是替代技术(如代码生成)。我们希望这种分类引起人们对选择可能容易出错的动态API的关注,并为开发人员在设计此类功能的错误检测工具时提供更好的理解。
2022-04-03 cs.SE
Broken Object Level Authorization in the Wild: An Empirical Taxonomy from 100+ Bug Bounty Disclosures
APIsec Research Labs(APIsec 研究实验室)
通过对HackerOne上107份IDOR/不当访问控制报告进行LLM辅助分类,实证分析了BOLA漏洞的分布特征,发现动作级对象BOLA和直接对象引用BOLA是两大主要类型,并揭示了标签计数高估BOLA信号、垂直权限失效及GraphQL全局ID滥用等问题。
2026-05-25 cs.CR cs.SE
Studying the explanations for the automated prediction of bug and non-bug issues using LIME and SHAP
TU Clausthal(克劳斯塔尔工业大学)
上下文:在问题跟踪器中识别报告的问题中的错误对于问题的分类至关重要。机器学习模型已经显示出关于自动化问题类型预测的性能的有希望的结果。然而,除了我们的假设之外,我们对这些模型如何识别bug的了解非常有限。LIME和SHAP是解释分类器预测的常用技术。目的:我们想了解机器学习模型是否为分类提供了合理的解释,并与我们对模型应该学习什么的假设保持一致。我们还想知道预测的质量是否与解释的质量相关。方法:我们进行了一项研究,根据LIME和SHAP解释问题类型预测模型结果的质量对其进行评级。为此,我们评价解释本身的质量,即,如果它们符合我们的期望,如果它们帮助我们理解底层的机器学习模型。
2022-09-15 cs.LG cs.SE
Object-oriented Programming Laws for Annotated Java Programs
面向对象的编程法则已经在不与行为接口规约语言(BISL)相结合的语言的上下文中提出。源代码和接口规范之间的强依赖性可能会在转换程序时造成许多困难。在本文中,我们介绍了一套面向对象的语言,如Java结合Java建模语言(JML)的编程法则。这套法律处理面向对象的功能,同时考虑到他们的规格。有些法律只涉及规约语言的特征。这些定律构成了一组小的转换,用于开发更精细的转换,如重构。
2010-03-25 cs.LO cs.PL cs.SE
Q-PAC: Automated Detection of Quantum Bug-Fix Patterns
本文提出Q-PAC自动化框架,利用抽象语法树、语法过滤器和语义检查在IBM Qiskit量子代码中检测缺陷修复模式,实验验证其有效性,并作为Q-Repair研究议程的第一阶段推动量子软件质量提升。
2023-11-29 cs.SE
Mapping Objects to Persistent Predicates
Prolog逻辑程序设计在许多需要存储知识的系统中被广泛用于提供持久性。用于供应持久性的Prolog编程语言的一些实现具有与其他程序设计语言的双向接口,总体上具有面向对象的编程语言。目前,缺少用于系统开发的工具和框架,这些工具和框架以简单和敏捷的形式使用逻辑谓词持久性。更具体地说,目前需要一个面向对象和逻辑持久性提供程序,允许在主存中操作对象,并且该对象的持久性具有逻辑编程谓词方面。目前的工作介绍了一个面向对象和逻辑持久性提供者的支持对象的序言声明性映射的替代。所提出的替代方案包括逻辑编程谓词与面向对象方法的对应关系,其中对于逻辑编程的每个元素,一个面向对象的元素使其相互作用。逻辑程序设计谓词的面向对象表示提供了对组成知识的元素进行操作的便利。
2017-05-01 cs.LO cs.PL cs.SE
Causal Inference for the Effect of Code Coverage on Bug Introduction
University of Passau(帕绍大学)
本文通过因果推断方法研究代码覆盖率对缺陷引入的影响,分析其剂量-反应关系及非线性模式。
2026-02-03 cs.SE
The OCDF diagram. A metamodel for object-oriented systems visual design
我们提出了一个面向对象系统中的控制和数据流的子类规模建模的元模型。以UML Profiles为表示手段,给出了一个完整的元模型定义,并以一个图应用为例进行了说明。
2014-12-12 cs.SE
Bug Destiny Prediction in Large Open-Source Software Repositories through Sentiment Analysis and BERT Topic Modeling
University of Wisconsin-La Crosse(威斯康星大学拉克罗斯分校)
本研究利用Bugzilla Eclipse项目数据,结合情感分析与BERTopic主题建模,通过CNN和MLP预测Bug的解决时间、修复时间及最终状态,发现情感分析对预测Bug是否被修复尤为有效。
2025-04-22 cs.AI cs.SE
Object-oriented requirements: reusable, understandable, verifiable
需求的可重用性、可理解性和可验证性不足会危及软件项目。实证研究表明,单独提高这些素质几乎没有成功。将面向对象的思想应用到需求中,导致了对需求的统一处理。可重用需求模板的在线库实现了重复的需求结构,为实践统一方法提供了一个起点。
2019-03-16 cs.SE
Visualizing Object-oriented Software for Understanding and Documentation
理解或理解源代码是软件工程的核心活动之一。当程序员维护、迁移、重用、记录或增强源代码时,理解面向对象的源代码是必不可少的。不能更改未理解的源代码。对面向对象源代码的理解是一个困难的问题解决过程。为了编写面向对象软件系统的文档,就需要了解它的源代码。要做到这一点,除了源代码中的量化信息(如类的数量)之外,还需要挖掘源代码依赖关系。本文提出了一种自动化的方法,其目的是通过可视化其源代码的面向对象的软件文档。面向对象的源代码的设计和它的主要特点是在可视化表示。显示包内容、类信息、类之间的关系、方法之间的依赖关系和软件度量。提取的视图对理解和描述面向对象软件是非常有帮助的。这种方法的新颖之处在于利用源代码中的代码依赖性和定量信息,通过一组图有效地记录面向对象的软件。为了验证该方法,它已被应用到几个案例研究。评价结果表明,大多数面向对象的软件系统都已正确地编制了文档。
2016-01-28 cs.SE
Bugs in Large Language Models Generated Code: An Empirical Study
Polytechnique Montréal(蒙特利尔理工学院)
本研究通过分析333个来自主流LLM的代码缺陷,识别出10种缺陷模式,并通过调查验证,为提升LLM生成代码质量提供指导。
2024-03-18 cs.AI cs.SE
InferFix: End-to-End Program Repair with LLMs
软件开发的生存周期深受bug的影响:它们的引入、识别和最终的解决方案占软件成本的很大一部分。这促使软件工程研究人员和从业人员提出不同的方法来自动识别和修复软件缺陷。通过Few-Shot演示学习和指令提示,大语言模型已经适应了程序修复任务,将其视为填充任务。然而,这些模型只专注于学习从公共存储库中挖掘的未分类错误的一般错误修复模式。在本文中,我们提出了InferFix:一个基于transformer的程序修复框架与最先进的静态分析器配对,以修复关键的安全和性能错误。InferFix结合了检索器-通过对比学习目标预训练的Transformer编码器模型,其目的是搜索语义等效的错误和相应的修复;和生成器-一个大语言模型(Codex Cushman)对监督错误修复数据进行微调,并通过错误类型注释和从外部非参数存储器检索的语义相似的修复来增强提示。为了训练和评估我们的方法,我们策划了InferredBugs,这是一个新颖的、元数据丰富的bug数据集,通过对数千个Java和C#存储库的更改历史执行Infer静态分析器来提取。我们的评估表明,InferFix优于强大的LLM基线,在C#中生成修复的前1准确率为65.6%,在Java中为76.8%。我们将讨论InferFix与Infer在微软的部署,Infer提供了一个端到端的解决方案,用于检测,分类和定位错误,以及修复和验证候选补丁,集成在持续集…
2023-03-13 cs.SE
Object Oriented-Based Metrics to Predict Fault Proneness in Software Design
本文研究面向对象软件度量指标与故障倾向性的关系,指出这些指标能有效预测软件故障,但现有研究对最优预测指标尚无一致结论。
2025-04-11 cs.SE
A Fine-grained Data Set and Analysis of Tangling in Bug Fixing Commits
上下文:纠结提交是对软件的更改,可以同时解决多个问题。对于对bug感兴趣的研究人员来说,纠结的提交意味着他们实际上不仅研究bug,还研究与bug研究无关的其他问题。目标:我们希望提高我们对纠缠的流行程度以及在bug修复提交中纠缠的更改类型的理解。方法:我们使用众包方法进行手动标记,以验证哪些更改有助于bug修复提交中每行的bug修复。每条线由四个参与者标记。如果至少有三个参与者同意相同的标签,我们就达成了共识。结果:我们估计,在bug修复提交的所有更改中,有17%到32%修改了源代码以修复潜在问题。然而,当我们只考虑对生产代码文件的更改时,这一比例增加到66%到87%。我们发现,大约11%的线路很难标记,导致参与者之间的积极分歧。由于确认的缠结和我们数据中的不确定性,我们估计3%到47%的数据在没有手动解开的情况下是有噪声的,这取决于用例。结论:缠结提交在bug修复中具有很高的流行率,并且可能导致数据中的大量噪声。先前的研究表明,这种噪音可能会改变结果。作为研究人员,我们应该持怀疑态度,并假设未经验证的数据可能非常嘈杂,直到证明不是这样。
2021-10-13 cs.SE
Event Handling in ET++ - A Case Study in the Algebraic Specification of Object-Oriented Application Frameworks
在这份报告中,我们调查的适用性代数specification技术的复杂的面向对象的系统的模块speci阳离子作为一个例子的事件处理机制的应用框架ET的一部分是speci ed使用的代数specification语言频谱的变体。
2014-09-25 cs.SE
RobOT: Robustness-Oriented Testing for Deep Learning Systems
最近,人们对将软件工程技术应用于深度学习(DL)系统的质量保证的兴趣显著增长。一个流行的方向是深度学习测试,其中对抗性示例(又名~缺陷)通过模糊搜索或在某些测试度量的帮助下的引导搜索来发现。然而,最近的研究表明,现有DL测试方法常用的神经元覆盖度量与模型鲁棒性无关。它也不是检验后模型稳健性置信度的有效度量。在这项工作中,我们提出了一个新的测试框架,称为面向健壮性测试(RobOT)来解决这个差距。RobOT的一个关键部分是定量测量1)每个测试用例在提高模型鲁棒性(通常通过再训练)方面的价值,以及2)模型鲁棒性改进的收敛质量。RobOT利用所提出的度量自动生成测试用例,提高模型的鲁棒性。所提出的指标也是一个强有力的指标,如何以及鲁棒性的改善,通过测试收敛。在多个基准数据集上的实验证实了RobOT在提高DL模型鲁棒性方面的有效性和效率,对抗鲁棒性提高了67.02%,比最先进的DeepGini高出50.65%。
2021-02-13 cs.SE
An Architecture for Making Object-Oriented Systems Available from Prolog
用纯Prolog开发实际应用程序几乎是不可能的。通过XPCE,我们实现了一种将Prolog与外部面向对象系统集成的机制,该机制将这个OO系统变成Prolog的自然扩展。我们描述的设计,以及它如何可以应用到其他外部面向对象系统。
2002-07-12 cs.SE
Properties of Relationships among objects in Object-Oriented Software Design
面向对象的分析和设计是开发系统的现代范例之一。在这个范例中,有几个对象,每个对象扮演一些特定的角色。在识别对象之后,必须识别对象之间的各种关系。本文对对象之间的关系进行了文献综述。关系主要有泛化/特化、聚集和关联三种基本类型,本文给出了关系性质的五种分类法。第一种分类法是基于时态视图的。第二种分类法基于结构,第三种分类法依赖于行为。第四个分类是在数学视图上指定的,第五个分类与接口相关。此外,在案例研究中的关系的属性进行了评估,并提出了几项建议。
2015-11-09 cs.SE
Managing Object-Oriented Integration and Regression Testing
面向对象软件的系统测试比传统软件的测试要复杂得多。特别是高度增量和迭代的开发周期需要更多的更改和部分实现。重新实现的类。在开发过程中,必须进行更多的集成和回归测试,以达到稳定的阶段。在这个演示文稿中,我们提出了一个图表捕捉所有可能的依赖关系和面向对象的程序中的相互作用。然后,我们给出了算法和覆盖标准,以确定集成响应。回归测试策略和所有测试用例将在一些实施后执行。修改活动。最后总结了一些实践经验和体会。
1999-02-05 cs.SE
Educational Insights from Code: Mapping Learning Challenges in Object-Oriented Programming through Code-Based Evidence
本研究通过定性分析与文献综述,将 code smells、SOLID 原则违背与 OOP 学习困难相联系,构建概念图并由专家验证其教学适用性。
2025-07-23 cs.SE
Towards a Precise Semantics for Object-Oriented Modeling Techniques
在本文中,我们提出了一种可能的方法,如何精确的语义面向对象的建模技术可以实现什么可能的好处是,我们概述了主要的建模技术中使用的SysLab项目草图如何精确的语义可以给出,以及如何在开发过程中使用这种语义。
2014-09-24 cs.SE
Feature-Oriented Defect Prediction: Scenarios, Metrics, and Classifiers
在过去的几十年中,已经开发了几种软件缺陷预测技术。这些技术在典型软件资产(如组件和文件)的粒度上预测缺陷。在本文中,我们研究面向功能的缺陷预测:预测缺陷的粒度特征-域实体,代表软件功能,往往横切软件资产。面向故障的缺陷预测可以是有益的,因为:(i)一些特征可能比其他特征更容易出错,(ii)有缺陷的特征的特性可能对预测其他容易出错的特征有用,以及(iii)特征特定的代码可能容易出现由特征交互引起的故障。我们探讨了面向特征的缺陷预测的可行性和解决方案空间。我们的研究依赖于12个软件项目,我们分析了13,685个错误引入和纠正提交,并系统地生成了62,868个训练和测试数据集,以评估分类器,指标和场景。这些数据集是根据我们12个项目的13,685次提交、81次发布和24532次排列生成的,具体取决于所处理的场景。我们讨论了诸如即时(JIT)和跨项目缺陷预测等场景。我们的研究结果证实了面向特征的缺陷预测的可行性。我们发现最好的性能(即,精度和鲁棒性),以及过程和结构度量。令人惊讶的是,单项目JIT和发布级预测的中位AUC-ROC值分别大于95%和90%,这与断言由于训练数据不足而导致性能不佳的研究相反。我们还发现,在12个项目中的一个项目的发布级数据上训练的模型可以预测其他11个项目的特征的缺陷倾向性,AUC-ROC中位数为82%,而无需重新训练。
2021-04-13 cs.SE
Empirical Evidence of Large-Scale Diversity in API Usage of Object-Oriented Software
在本文中,我们研究如何面向对象的类中使用数以千计的软件包。我们专注于“使用多样性”,定义为在同一对象上调用的方法的不同静态可观察组合。我们提出的经验证据表明,有一个显着的使用多样性,许多类。例如,我们在数据集中观察到Java的String有2460种使用方式。我们讨论了这种观察到的多样性和后果的软件工程知识和研究的原因。
2013-08-21 cs.SE
TyPatch: Transforming Patches into Typestate Rules for Kernel Bug Detection
Tsinghua University(清华大学);The University of Hong Kong(香港大学)
TyPatch通过LLM将补丁转为类型状态规则,由共享后端执行,解耦缺陷语义与分析器实现,在Linux v6.16上发现559个漏洞,121个获确认,且生成令牌减少88.3%以上,精确度提升至3.42-14.95倍。
2026-09-15 cs.AI cs.CR cs.OS