- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于变异技术的软件故障修复方法研究
摘 要 程序的可维护性和可靠性已经成为软件产业发展的突出难题,如何快速锁定故障,如何有效修复软件已经成为当前软件工程实践中最重要的活动之一。基于变异的程序故障修复技术,在阐述C程序表达式故障的方法中,利用变异修复机制来辅助修复程序故障,并通过实例故障来验证方法的有效性。
关键词 程序软件 变异技术 故障定位 修复方法
计算机技术的发展,特别是软件技术的广泛应用,越来越多的程序在出现故障后带来了更多维护性难题。软件测试技术的发展,主要针对软件程序运行可靠性问题,从程序故障的锁定及修复中来提升软件质量。美国标准与技术研究所NIST调查显示,软件程序故障修复的成本每年达到595亿美元,约占总GDP的0.6%。程序故障修复作为软件工程实践中的重要内容,在软件修复程序中耗时、费力,且完全依赖于软件开发人员的专业知识和行业经验。这种现象不仅加长了软件开发周期,也阻碍了软件产业的快速发展。因此,积极从软件程序修复技术及理论研究中,就软件行业程序故障修复问题进行探讨,并从软件故障修复实践中来开发自动化修复工具,以改善软件程序故障修复的缺陷。
一、当前软件程序故障修复现状及方法研究
从软件技术开发实践来看,软件程序故障是软件工程的重要内容,当前软件开发人员在面临程序故障修复时,多以手工方式来进行故障定位和修复,使得程序开发周期较长,成本较高。国内外对软件故障修复理论的研究也取得了一定进展,特别是在内存管理、数据结构修复及特定数据类型的故障提示中也取得一定成绩。Dallmeier等人通过对软件运行与失败的差异分析,利用回归测试用例来减少程序修复后产生的新问题;Perkins等人通过不变式监控程序的方法,就汇编级程序错误进行自动检测和修复。然而,这两种方法主要针对条件表达式或监控器软件相关的错误修复。Arcuri等人首次以遗传编程自动修复方法,根据程序规模的扩大,利用遗传编程搜索方法来进行修复,较为适宜单个函数的修复;Weimer等人为了缩小进化算子的搜索空间,采用抽象语法树先对程序进行抽象,再通过基于遗传的编程方法就C语言程序和汇编语言程序进行修复。我国学者何加浪等人在Weimer研究基础上,利用不变量约束来对搜索空间进行简化,并针对测试过程难以覆盖所有功能需求,提出成功测试用例学习的不变量约束来解决该难题;成功测试用例与失败测试用例所执行的路径不同,对于程序故障及修复方法也不一致,反而限制了程序修复的类型;另外,该方法在修复过程中还产生大量无关冗余的代码转换;遗传算法本身的非稳定性,在程序本身的变化中也存在适应性问题。
二、基于变异技术的软件故障修复原理及步骤
(1)基于变异技术的软件故障修复原理。传统基于变异的测试技术是对已知程序,根据变异算子来得到一批程序故障变异体,利用这些变异体来对测试用例集T进行测试。而新的基于变异技术的程序故障修复技术,则是将之作为故障程序,根据变异算子来选择故障程序的变异,从而得到一批变异体,利用已知的测试用例集来对这些变异体进行验证,以得到程序故障修复目标。在制定变异体是否修复软件故障时,首先需要定义变异体的标准,即对于变异体执行完成后的输出结果与期望不一致。任何一个被放弃的变异体都不能是故障程序的正确修复版本,原因是这些变异体曾导致测试用例执行失败。相反,如果一个变异体顺利通过测试用例,说明本变异体被故障程序进行正确修复。通过对这些潜在修复版本的分析,可以帮助程序开发人员得到期望的程序。
(2)故障程序修复实施步骤。基于变异技术的故障程序修复方法,其具体实施步骤表示如下:一是要确定故障类型,利用程序变异技术对某类特定的程序故障进行测试,在修复之前,首先要明确变异修复程序的故障类型。程序设计人员在对程序常见故障类型进行分析,并从发生概率高且危害大的故障类型进行修复,有助于提升软件的修复效果,降低软件开发成本。二是选择合适的变异算子,对于变异算子是基于变异技术的故障修复方法,也是产生变异体的基础。通过导入多元化变异算子,能够从不同类型的故障测试中进行修复,最大化的提升变异体的生成。程序故障修复方法应该能满足不同类型的故障测试,高效的修复方法需要变异修复的代价尽可能小。因此,在对变异算子的设计上,要从执行效率和变异体修复效果上来针对不同程序故障类型进行修复。三是设定变异修复停止条件。在进行变异技术故障修复执行过程中,对于某些特定的程序故障,并不是所有程序故障都能够得到修复,只有当产生并检查一定数量的变异体后,如果找不到对应的修复版本的变异体,则会提示:继续还是停止;如果选择继续,则进行再次修复版本变异体的查找,否则直到找到变异体被检查出,修复程序并不停止。通常情况下,对于修复对象为大型程序软件时,对于变异体的数量要求也较大,如果选择继
文档评论(0)