基于搜索的软件自动修复关键技术

来源 :中国矿业大学 | 被引量 : 2次 | 上传用户:pan303
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件修复是软件工程的核心问题,是软件测试和维护中耗费成本最多的活动,软件如果能够自动修复,无疑将大幅降低人力和资源的投入,提高软件的质量,从而增强其市场竞争力。尽管人们已经提出了多种支持软件自动修复的方法和技术,然而已有的研究结果表明,当前自动修复技术还处于初级阶段,自动修复的效率和能力有待提高。本文将基于搜索的软件工程应用于软件自动修复中,结合已有的软件测试、维护技术,提出软件自动修复框架,并研究其中的关键技术,解决缺陷定位、选择性测试、自动程序修复,以及回归测试问题,并依据这些问题的领域知识,给出基于搜索的求解方法。取得的主要研究成果如下:(1)针对不同开发方式且具有一定规模软件的缺陷定位问题,以含开源代码软件为研究对象,提出一种变粒度缺陷定位技术。该技术定位缺陷时,先基于程序的结构信息构造粗粒度语句块,并利用语句块的执行关系划分程序为若干语句块等价类;然后,基于语句块等价类的怀疑度,得到最有可能存在缺陷的语句块等价类;最后,基于语句块的怀疑度,从上述等价类中,选择最有可能包含缺陷的语句块。所提方法的好处是,减少了需要检查的语句块数量,从而提高了缺陷定位的效率,增强了缺陷定位的适用性。(2)针对选择性测试问题,给出用于回归测试集生成的路径选择新方法。在以分支覆盖作为覆盖准则的前提下,首先,以若干路径形成的集合作为决策变量,以路径最少、覆盖的分支最多,以及包含的未覆盖路径最少为目标,建立路径选择问题的3目标优化模型;然后,采用遗传算法求解上述模型时,设计了基于目标重要性的个体评价策略;最后,基于已有的测试数据与选择的路径之间的覆盖关系,确定需要生成的测试数据。采用该方法选择的路径,能够充分利用已有测试信息,可以覆盖更多的分支,需要生成的测试数据更少,选择性测试消耗的时间更短。(3)针对程序的自动修复问题,构造多阶段多目标的优化模型,并给出基于改进遗传规划生成有效补丁的方法。为此,利用缺陷定位的结果,分解程序修复为若干疑有缺陷的程序实体的修复过程,并通过提出的一致度测度以及约束函数,建立每一阶段修复子问题的带约束多目标优化模型;然后,在已有的补丁生成方法的基础上,利用提出的个体评价策略指导遗传规划进化过程,并减少被选测试用例的执行次数,降低对源程序的执行成本。该方法有效的提升了程序修复的效率,提高了获得正确补丁的概率。(4)针对回归测试问题,基于路径相关性,提出求解回归测试数据生成问题的新方法,以高效的进化生成可用于回归测试的测试数据集。该方法根据路径与节点的相关矩阵,首先进行目标路径排序,并基于路径相关性,建立新的覆盖影响路径的回归测试数据生成问题的数学模型;其次,结合遗传算法对上述模型求解时,利用穿越已有目标路径的测试数据,编码后取代进化种群的部分个体。所提方法能够充分利用已有的测试信息,有效提高进化生成测试数据的效率。本论文所做的工作为软件自动修复提供了新的思路,丰富了基于搜索的软件工程理论,提高了软件自动修复的效率和能力,保证了软件的质量,增强了软件的可信度,具有重要的理论意义和实际应用价值。
其他文献
摘要:《时间序列分析》是医学院校中应用统计学专业的一门专业必修课程。基于学生的培养目标要求、学生知识背景及就业需求,分析《时间序列分析》课程教学现状,并探讨了实践课教学过程中案例、软件的选择及考核方式等问题,从而期望能达到提高教学效果的目的。  关键词:《时间序列分析》;医学院校;案例;R软件  中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)35-0203-02
随着对海洋资源探测开发的需求不断增加以及对水中作业的需要,智能水下机器人(Autonomous Underwater Vehicle,AUV)技术的发展正日益受到国内外重视,水声探测是目前各种水下
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield