自动化程序修复技术及影响分析

来源 :东南大学 | 被引量 : 2次 | 上传用户:nihao136
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着现代软件产业规模的逐渐增大,程序修复已经成为软件开发和维护过程中消耗资源最多的活动之一。自动化程序修复技术旨在利用计算机高效的处理能力代替传统程序修复活动中繁重的人工劳动。因其美好的实现愿景,自动化程序修复技术自诞生以来受到了学术界和工业界的广泛关注。经过近10年的发展,虽然自动化程序修复领域涌现出了很多优秀的技术方法,如Gen Prog、AE等技术均在其验证实验中表现出了很好的修复效果,但目前仍缺少对自动化程序修复全面的实证研究,不同的目标程序规模、测试用例和修复技术等因素如何影响修复效果仍不明确。因此,本文基于5种主要的修复技术,对其在25种不同的测试用例组合条件下修复180个不同的程序错误的过程开展大规模的实证研究,根据实验数据来探索修复过程中的各项因素如何影响最终的修复效果,并进一步分析现有修复技术存在的缺陷。实验数据显示,现有自动化程序修复技术在修复较大规模程序的错误时易出现成功率和效率大幅度下降的问题,这主要有两方面原因:一是候选补丁的搜索空间过大,修复技术难以搜索到正确补丁;二是程序错误过于复杂,修复技术无法生成正确补丁。以这两方面缺陷为切入点,本文分别提出了基于变异分析的迭代程序修复技术和架构导向的多点程序修复技术,旨在提升现有技术对较大规模程序的修复效果。本文的主要成果包括如下三个方面:(1)本文通过广泛的实证研究,分析了目标程序、测试用例和自动化程序修复技术等因素对修复效果的影响,并进一步总结现有技术存在的缺陷。实验结果显示,现有自动化程序修复技术针对小规模故障程序修复时效果较好,但应用到大规模程序时,实验中的修复技术均出现了成功率和执行效率大幅度下降的问题。在针对大规模故障程序的修复过程中,现有技术暴露出了搜索空间剧增导致难以找到正确补丁,以及补丁生成规则过于简单导致无法生成正确补丁的问题。实验选取的5种自动化程序修复技术中,Brute-force在小规模程序上修复效果最好;而在较大规模故障程序上,修复效率相对最高的是Kali,修复成功率相对最高的是AE。Gen Prog因其候选补丁可能包含多个修改操作,可以用于修复一些其他技术难以修复的程序错误。RSRepair的修复效率仅次于Kali,但其修复成功率在5种修复技术中最低。研究测试用例数量的影响时,我们发现增加正确测试用例的数量,虽然可以减少过度拟合补丁的生成数量,但并不能帮助修复技术发现更多的成功修复补丁;而增加失败测试用例的数量,既可以减少过度拟合补丁的生成数量,也可以在一定程度上提高成功修复补丁的生成数量。最后,本文还分析了这5种自动化程序修复技术生成的正确补丁的分布,发现除RSRepair以外,其余4种修复技术均能够在前50%的搜索空间内找到80%的正确补丁。(2)为解决由候选补丁的搜索空间过大所导致的修复成功率较低的问题,本文提出一种基于变异分析的迭代程序修复技术,将修复过程划分为初始修复、基于变异分析的错误定位和迭代修复三个阶段。该技术在初始修复阶段使用一种效率较高的修复技术,若其没能找到正确补丁,则在错误定位阶段将候选补丁视为变异分析中的变异体,根据初始修复的补丁验证信息重新定位可疑语句,并将定位结果用于迭代修复。迭代修复阶段使用一种成功率较高的修复技术,受益于更精确的错误定位结果,其搜索空间内的候选补丁排序得到了优化;同时,迭代修复技术使用语义等价性检测方法,在迭代修复的搜索空间内消除了初始修复阶段已验证过的及其语义等价的失败候选补丁,大幅度减少了迭代修复搜索空间内候选补丁的数量。两方面措施共同应用,使得迭代的修复过程的搜索空间得到了优化。实验结果显示,基于变异分析的迭代程序修复技术能够有效提升修复成功率,其真实成功率为15%,而AE与Kali的真实成功率分别为10%和7%;本文还进一步分析了两种定位技术的适用场景,发现变异分析过程中存在测试用例正确执行的现象时使用迭代修复(MUSE)技术效果更好,反之则使用迭代修复(Metallaxis)技术更好。(3)为解决由候选补丁的修复能力不足所导致的修复成功率较低的问题,本文提出一种架构导向的多点程序修复技术。该技术利用基于变异分析的错误定位方法和基于程序目录的架构设计规则空间提取方法来获得可疑语句集在架构层面的隐形联系,用于定位多个修复点,并融合来源于多个修复点的修改操作来生成修复能力更强的候选补丁。实验结果显示,架构导向的多点程序修复技术相比于Kali和AE技术具有更高的修复成功率,且能够针对Wireshark-37190-37191中复杂的真实程序错误生成成功修复补丁;由于错误定位阶段的变异分析过程时间消耗较大,补丁生成阶段的补丁数量也较多,导致多点程序修复的效率偏低。本文通过对自动化程序修复的实证研究,综合分析了修复过程中各个因素对修复效果的影响,并进一步总结了现有技术在修复较大规模程序时存在的缺陷,为自动化程序修复技术的改进提供了重要的数据支撑。本文针对现有技术修复大规模程序时搜索不到正确补丁和无法生成正确补丁这两个普遍存在的问题,分别提出了两种改进的修复技术,虽然两种技术因为变异分析本身的高消耗导致整体执行效率偏低,但实验结果显示两种技术均能够有效提升修复成功率,在一定程度上缓解这两方面问题。
其他文献
提出一种基于小波域的自适应运动补偿图像压缩算法。该算法利用小波变换的多分辨率特性,对经小波分解后的每个子带图像信号进行多分辨率运动估值(MRME)和多分辨率运动补偿(MRMC)处理,有效消除图像的冗余,增加可扩展能力,从而获得较高的图像压缩比。
目前饲养母猪众多,由于饲养管理水平不当,使一部分母猪营养过剩而肥胖,或营养不良而消瘦,甚至年龄过大的老年猪;还有一部分是由于母猪骨盆发育不全,产道狭窄、胎儿过大,以及母猪患上
随着体育运动的逐渐发展,我们的运动训练机制也在不断的完善,每一个项目之间都逐渐形成了对应的训练机制。在此同时,由于我们在茶学角度研究不断的深入,相关理论也不断的成熟,我们
市委、市政府制订出台了《关于实施万名青年大学生创业计划的意见》(以下简称《意见》)。昨天,市政府召开新闻发布会,对《意见》指导思想、目标任务、扶持政策、保障措施等作了详
学位
免疫失败是指经某种药物或疫苗接种的动物,由于某一种或某几种原因造成接种疫苗后群体或个体未达到预期免疫效果,在该疫苗的有效保护期内,仍然发生了该疫病,或者预定时间内经检测
4月23日,中国移动通信研究院(以下简称中移研究院)召开无线接入网绿色演进国际研讨会,提出了面向绿色演进的新型无线接入网架构C—RAN。据介绍,此次发布的C—RAN架构在技术组成上,
加强医疗机构内部治理,规范医疗机构经济活动,让群众享有价格合理、质量优良的医疗服务,有效解决群众看病难、看病贵这一热点问题,是医务工作者的共同目标。作者就如何有效实
市场经济高度演化形式是知识经济,其竞争的背后实质是人才的竞争,只有人才才是企业最主要的战略资源。企业竞争的胜负,取决于其是否拥有更多的优秀人才,而如何管理优秀人才就显得
近年来,我院应用胃镜术取出胃内异物近40余例.包括子弹壳、钥匙链、筷子(半截)、药品包装铝片、水果刀、牙刷、硬币、铝勺、口腔科专用小钻头、鸡肋骨、四颗假牙.物体均较大
采用高性能微控制器和FPGA(field-programmable gate array)组合硬件平台,进行以太网数字影像数据的接收、满足IRIG106(inter range instrumentation group106)遥测标准的PCM(pulse code modulation)编程、IRIG-B时间码转换与配置、高速数据调度管理和多类型信号电平输出的硬件电路设计和制作。通过实验室和用户