首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 15 毫秒
1.
自动程序修复技术可实现对软件缺陷的自动修复, 并使用测试套件评估修复补丁. 然而因为测试套件不充分, 通过测试套件的补丁可能并未正确修复缺陷, 甚至引入新的缺陷并产生波及效应, 导致自动程序修复生成大量过拟合补丁. 针对这个问题, 本文提出了一种基于数据流分析的过拟合补丁识别方法, 首先将补丁对程序的修改分解为对变量的操作, 然后采用数据流分析方法识别补丁影响域, 并根据补丁影响域选择针对性覆盖准则来识别目标覆盖元素, 进而选取测试路径并生成测试用例实现对修复程序的充分测试, 避免修复副作用的影响. 本文在两个数据集上进行了评估, 实验结果表明, 基于数据流分析的过拟合补丁识别方法可有效提升自动程序修复的正确性.  相似文献   

2.
自动程序修复方法研究进展   总被引:3,自引:3,他引:0  
自动程序修复帮助开发者降低人工修复bug的成本.基于测试集的修复方法旨在生成能够通过测试集的代码补丁,以使程序正常运行.回顾了基于测试集的程序修复的现有文献,按照自动修复方法和实证基础两个方面陈述了研究进展.首先,将已有的自动修复方法划分为3类,分别是基于搜索的、基于代码穷举的和基于约束求解的补丁生成方法;其次,细致地描述了程序修复的实证研究基础以及该研究领域中的争议;然后,简要介绍了程序修复的相关技术作为修复方法的补充;最后做出总结,描述了面临的机遇和挑战.  相似文献   

3.
程序自动修复技术是保证软件质量、提高开发效率的有效手段. 目前, 大多数自动修复工具使用测试用例作为补丁正确性验证的最终方法, 有限的测试用例难以对程序进行充分的测试, 因此自动修复工具生成的补丁集合包含大量的不正确补丁. 为了识别不正确补丁, 我们采用对比缺陷修复前后成功测试的执行路径以及生成测试用例的方法来识别修复补丁的有效性, 以解决自动修复工具精度低的问题. 我们的方法评估了来自6个经典的自动修复工具生成的132个补丁, 并成功地排除了80个不正确的补丁并且没有排除正确的补丁, 这表明我们的方法可以有效地排除不正确补丁, 并且提高自动修复工具的精度.  相似文献   

4.
已有的程序自动化调试研究大多面向工业软件,而学生程序调试具有缺陷数多、类型复杂等特有难点问题,因此,针对学生程序设计应用背景,研究程序自动修复方法,利用模板示例程序指导补丁的演化.改进了遗传编程算法,包括适应度的计算、变异体的生成方式和变异位置及操作的选择方式,使其更加适合修复学生程序.提出了基于示例的静态错误定位方法,能够识别缺陷程序和参考程序差异和可能的变异操作,有效地缩小补丁的搜索空间以提高修复的准确性.提出了基于执行值序列的变量映射方法,以降低变异体的编译错误,提高修复的准确性.在此基础上,设计并实现了示例演化驱动的Java学生程序自动修复系统.实验结果表明,该方法可以修复含有多缺陷学生程序,对于所用的测试集,当学生程序只有1个~2个错误时,修复率将近100%;当含有3个缺陷时,修复率约为70%;当含有4个及以上缺陷时,修复率约为50%.  相似文献   

5.
软件缺陷定位是指找出与软件失效相关的程序元素. 当前的缺陷定位技术仅能产生函数级或语句级的定位结果. 这种粗粒度的定位结果会影响人工调试程序和软件缺陷自动修复的效率和效果. 专注于细粒度地识别导致软件缺陷的具体代码令牌, 为代码令牌建立抽象语法树路径, 提出基于指针神经网络的细粒度缺陷定位模型来预测出具体的缺陷代码令牌和修复该令牌的具体操作行为. 开源项目中的大量缺陷补丁数据集包含大量可供训练的数据, 且基于抽象语法树构建的路径可以有效捕获程序结构信息. 实验结果表明所训练出的模型能够准确预测缺陷代码令牌并显著优于基于统计的与基于机器学习的基线方法. 另外, 为了验证细粒度的缺陷定位结果可以贡献于缺陷自动修复, 基于细粒度的缺陷定位结果设计两种程序修复流程, 即代码补全工具去预测正确令牌的方法和启发式规则寻找合适代码修复元素的方法, 结果表明两种方法都能有效解决软件缺陷自动修复中的过拟合问题.  相似文献   

6.
纪涛  齐玉华  毛晓光 《计算机科学》2014,41(9):88-90,124
虽然缺陷定位技术和软件错误自动修复技术已经得到一定的发展,但是软件的修复工作仍然需要程序员投入大量的时间和精力。大多数开发者仍然使用传统调试技术(例如断点)来进行手工的调试,缺陷定位技术的研究成果并没有较好地运用到实际的修复工作中。近来,软件错误自动修复技术得到了快速的发展和广泛的关注。在软件错误自动修复工作中,利用缺陷定位技术自动定位错误代码是必需的,而定位的精度直接影响到补丁的生成,从而对修复的效果产生较大的影响。GenProg-FL工具可以接受不同的缺陷定位技术去自动修复故障程序。同样,使用GenProg-FL可以从软件自动修复的角度评估现有的基于程序谱的缺陷定位技术定位的有效性。  相似文献   

7.
《软件工程师》2017,(2):1-3
软件在开发和维护的过程中均可能产生软件缺陷,如果能够成功自动修复部分缺陷,则可以有效减少程序调试时间,避免损失。软件自动修复是一个新兴课题,尚存在很多需要解决的问题。本文首先介绍了软件自动修复的概念,并提出了基于搜索的软件自动修复的框架;接着,从缺陷定位、搜索策略、测试数据生成三个方面概括了基于搜索的软件自动修复面临的主要挑战,以及需要解决的一些关键问题;最后,总结全文并指出下一步的工作。所提框架及其关键问题的探讨,有助于软件自动修复技术的进一步研究和在工业生产中的推广应用。  相似文献   

8.
C语言执行效率高,使用范围广泛,然而存在的安全问题也日益突出。内存错误是C程序中常见的缺陷,严重时将导致系统崩溃。传统的人工修复内存错误耗费大量人力物力,并可能在修复过程中引入新的错误。针对这个问题,提出了一种基于跟踪机制的程序自动修复方法。构建包含程序文件中变量作用分布的作用域树;提出基于全局指针的跟踪机制,通过插入全局指针跟踪发生错误的分配内存在程序中的状态;基于全局指针自动生成补丁,利用作用域树定位缺陷修复位置从而来安全地修复内存错误。基于上述过程,实现了原型工具DTSFix,并在开源程序中对其进行了评估。实验结果表明,DTSFix能够有效检测并修复程序中的真实缺陷而且不产生副作用。  相似文献   

9.
孙昌爱  吴思懿  张守峰  付安 《软件学报》2024,35(6):2844-2862
BPEL (business process execution language)是一种可执行的Web服务组合语言. 与传统程序相比, BPEL程序在编程模型、执行方式等方面存在较大差异. 这些新特点使得如何定位并修改测试阶段发现的BPEL程序故障成为挑战, 面向传统软件的故障修复技术难以直接应用于BPEL程序. 从变异分析角度出发, 提出一种基于模板匹配的BPEL程序故障修复方法BPELRepair. 为了克服基于变异分析的故障修复技术计算开销高的缺点, 从补丁生成、测试用例选择以及终止条件3个角度提出多种优化策略. 开发一个BPEL故障修复支持工具, 提高故障修复的自动化程度与效率. 采用经验研究的方式, 评估所提故障修复技术及优化策略的有效性. 实验结果表明, 所提故障修复方法能够成功修复约53%的BPEL程序故障; 所提优化策略能够显著降低搜索匹配、补丁程序验证、测试用例执行与故障修复等方面的开销.  相似文献   

10.
周风顺  王林章  李宣东 《软件学报》2019,30(5):1243-1255
在计算机软件中,程序缺陷不可避免且极有可能造成重大损失.因此,尽早发现并排除程序中潜在的缺陷,是学术界和工业界的普遍共识.目前的程序缺陷自动修复方法大都遵循缺陷定位、修复候选项生成、选择及验证的流程,但在修复实际程序时存在修复率低、无法保证修复结果的正确性等问题.提出了一种基于程序合成的C/C++程序缺陷自动修复方法.首先,从满足相同规约的程序集中,通过人工整理的方式总结错误模式及其对应的修复方法,使用重写规则表达错误模式,在此基础上实现了基于重写规则和基于程序频谱的缺陷定位方法,得到程序中可能的缺陷位置;其次,基于重写规则,使用修复选项生成方法得到缺陷的修复选项,同时,通过深度学习的方式学习正确程序的书写结构,帮助预测错误程序错误点应有的语句结构,通过这两种方式提高候选项质量,进而提高修复率;最后,在选择验证过程中,使用程序合成的方法将样例程序作为约束,保证合成后代码的正确性.基于上述方法实现了原型工具AutoGrader,并在容易出错、缺陷典型的学生作业程序上进行了实验,结果显示,该方法对学生作业程序中的缺陷有着较高的修复率,同时也能保证修复后代码的正确性.  相似文献   

11.
面向程序自动修复的缺陷分类方法研究*   总被引:1,自引:0,他引:1  
程序自动修复是近年软件工程的研究热点,但其发展难以满足工业应用的要求。分析了自动修复技术的局限性,引入了缺陷分类的思想,并与正交缺陷分类方法相结合,提出了面向软件自动修复的缺陷分类方法(APRDC)。基于APRDC提出了自动修复技术集成的思想。实验中将基于APRDC与基于随机的自动修复技术集成工具作了比较。实验结果表明基于APRDC方法的自动修复技术的集成提高了修复效果,同时也表明了APRDC方法的有效性。  相似文献   

12.
在传统调试过程中,缺陷定位通常作为程序修复的前置步骤.最近,一种新型调试框架(统一化调试)被提出.不同于传统调试中缺陷定位和程序修复的单向连接方式,统一化调试首次建立了定位与修复之间的双向连接机制,从而达到同时提升两个领域的效果.作为首个统一化调试技术,ProFL利用程序修复过程中伴随产生的大量补丁执行信息逆向地提升已...  相似文献   

13.
葛毅  茅兵  谢立 《计算机科学》2009,36(1):252-255
软件漏洞攻击威胁日益严重.其中基于内存腐败漏洞的攻击最为普遍,如缓冲区溢出和格式化串漏洞.提出一种针对内存腐败漏洞攻击的自动错误定位方法.基于内存更新操作记录,可以回溯找到程序源代码中腐败关键数据的语句,从而提供有益的信息修复漏洞并生成最终补丁.  相似文献   

14.
姜佳君  陈俊洁  熊英飞 《软件学报》2021,32(9):2665-2690
软件缺陷是软件开发和维护过程中不可避免的.随着现代软件规模的不断变大,软件缺陷的数量以及修复难度随之增加,为企业带来了巨大的经济损失.修复软件缺陷,成为了开发人员维护软件质量的重大负担.软件缺陷自动修复技术有希望将开发者从繁重的调试中解脱出来,近年来成为热门的研究领域之一.搜集了94篇该领域最新的高水平论文,进行了详细的分析和总结.基于缺陷修复技术在补丁生成阶段所使用的技术手段不同,系统性地将软件自动修复技术分为4大类,分别是基于启发式搜索、基于人工模板、基于语义约束和基于统计分析的修复技术.特殊地,根据对近几年最新研究的总结,首次提出了基于统计分析的技术分类,对已有分类进行了补充和完善.随后,基于对已有研究的分析,总结了该领域研究所面临的关键挑战及对未来研究的启示.最后,对缺陷修复领域常用的基准数据集和开源工具进行了总结.  相似文献   

15.
李斌  贺也平  马恒太 《软件学报》2019,30(2):244-265
程序自动修复技术能够有效地降低软件维护成本,是近年来学术研究的热点问题.待修复程序规约的刻画,对自动修复过程具有至关重要的作用.从规约的角度对程序自动修复问题和技术进行了分析梳理.从待修复程序是否具有完整的程序规约,将现有修复问题分为不完全规约、完全规约和半完全规约这3大类待修复问题.以3类抽象问题为线索,梳理了不同前提假设下修复技术面临的核心问题、问题之间的联系和技术体系中的逻辑关系.分析了不完全规约程序修复问题中高精度补丁生成、规约补全和补丁择优等问题,梳理了完全规约程序修复问题中内存泄漏、资源泄露、并发错误中的数据竞争、原子性违背、顺序违背和死锁,配置错误以及特定性能错误等具体问题及研究进展,整理了半完全规约程序修复问题中多种形式的修复具体问题及研究进展.最后分析了程序自动修复面临的机遇和挑战.  相似文献   

16.
基于机器学习的软件修复方法可以降低软件缺陷修复成本,无须人工干涉而自动修复软件缺陷,但不同的缺陷修复软件对不同类型缺陷的修复偏好不明确,且缺乏针对性而无法充分发挥深度学习模型的作用;为此在研究缺陷分类的基础上,研究几种具有代表性基于深度学习的软件自动修复方法对不同类型的缺陷总的修复概率,并比较分析不同学习模型对于修复不同类型缺陷的修复偏好,后续可以更好地进行模型选择以及软件自动修复工作。实验结果表明,基于深度学习的软件自动修复方法倾向于修复IF语句类型、方法语句类型、return语句类型的缺陷。基于自编码器的软件自动修复方法倾向于修复IF语句类型的缺陷,基于LSTM的编码器-解码器的修复方法倾向于修复与方法语句类型相关的缺陷,而基于CNNs的编码器-解码器的修复方法则对IF语句类型、方法语句类型以及return语句类型这三种类型缺陷的修复偏好相差不大。  相似文献   

17.
陈理国  刘超 《软件学报》2014,25(6):1169-1179
在软件系统中,缺陷定位是缺陷修复的一个关键环节,如果能将缺陷自动定位到很小的范围,将会极大地降低缺陷修复的难度.基于高斯过程提出了一种缺陷定位方法(GPBL),即针对每个缺陷,向开发人员推荐这个缺陷可能存在于哪些源文件中,从而帮助开发人员快速修复缺陷.为了验证方法的有效性,采集了开源软件Eclipse 和Argouml 中的数据,实验结果表明,高斯过程缺陷定位的查全率和查准率平均分别为87.16%和78.90%.与基于LDA的缺陷定位方法进行比较,表明高斯过程更能准确定位缺陷的位置.  相似文献   

18.
徐同同  刘逵  夏鑫 《软件学报》2024,35(1):136-158
软件漏洞是计算机软件系统安全方面的缺陷, 给现代软件及其应用数据的完整性、安全性和可靠性带来巨大威胁. 人工治理漏洞费时且易错, 为了更好应对漏洞治理挑战, 研究者提出多种自动化漏洞治理方案, 其中漏洞自动修复方法近来得到研究者广泛关注. 漏洞自动修复技术旨在辅助开发人员修复漏洞, 涵盖漏洞根因定位、补丁生成、补丁验证等功能. 现有工作缺乏对漏洞修复技术系统性的分类与讨论, 为了促进漏洞修复技术发展, 加深研究人员对漏洞修复问题的认知理解, 对现有漏洞修复方法技术的理论、实践、适用场景和优缺点进行全面洞察, 并撰写了漏洞自动修复技术的研究综述. 主要内容包括: (1)按照修复漏洞类型不同整理归纳特定类型漏洞的修复方法以及通用类型漏洞的修复方法; (2)按照所采用的技术原理将不同修复方法进行分类与总结; (3)归纳漏洞修复主要挑战; (4)展望漏洞修复未来发展方向.  相似文献   

19.
基于克隆选择算法的面向程序路径测试数据生成方法   总被引:1,自引:1,他引:0  
面向程序路径的测试数据自动生成技术是软件测试自动化的关键技术之一.文中结合程序分支函数叠加法和克隆选择算法的全局搜索性,提出一种基于克隆选择算法的面向程序路径测试数据生成方法.希望能够借助克隆选择算法具有多样性、记忆性、可实现快速全局优化搜索的优点,设计一种新的面向程序路径的测试数据自动生成方法.对算法的原理和实现做了详细描述,并将其与传统的基于遗传算法、模拟退火算法来实现软件测试数据自动生成方法进行实验对比,证实了该方法能较快地生成指定路径的测试数据.  相似文献   

20.
一种基于遗传算法的多缺陷定位方法   总被引:1,自引:0,他引:1  
王赞  樊向宇  邹雨果  陈翔 《软件学报》2016,27(4):879-900
基于程序频谱的缺陷定位方法可以有效地辅助开发人员定位软件内部缺陷,但大部分已有自动化方法在解决多缺陷定位问题时表现不佳,部分效果尚可的方法因复杂度较高或需要开发人员较多交互而仍需进一步改善.为改善上述问题,提出一种基于遗传算法的多缺陷定位方法 GAMFal,具体来说:首先基于搜索的软件工程思想对多缺陷定位问题进行建模,构建了候选缺陷分布的染色体编码方式,并基于扩展的Ochiai系数计算个体的适应度值;随后使用遗传算法在解空间中搜索具有最高适应度值的候选缺陷分布,在终止条件被满足后返回最优解种群;最后根据这个种群对程序实体进行排序.这样开发人员可以依次对程序实体进行检查并最终确定多个缺陷的具体位置.实证研究以Siemens套件中的7个程序和Linux的3个程序(gzip、grep和sed)作为评测对象,并扩展传统的定位方法评测标准EXAM至EXAMF和EXAML,通过与其他经典的缺陷定位方法(Tarantula、Improved Tarantula及Ochiai)进行对比,并通过Friedman检测和最小显著性差异测试可得,提出的GAMFal方法在整体定位效率方面优于传统方法,且需要更少的人工交互.除此之外,GAMFal的执行时间也在可接受的范围之内.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司    京ICP备09084417号-23

京公网安备 11010802026262号