作业

论文标题:基于二次定位策略的软件故障定位

作者:王林章等人

作者单位/个人主页 计算机软件新技术国家重点实验室(南京大学)

论文档次:软件学报-ei工程检索

论文引用量:1

1、摘要:

 软件中不可避免的存在缺陷,缺陷自动修复工作能提高软件质量。缺陷修复大都遵循3个步骤:缺陷定位,修复项生成、选择及验证。但现有自动修复方法的修复率和正确性低,为解决这一问题,提出了一种基于程序合成的C/C++程序缺陷自动修复方法。

2、问题是什么?

   在修复真实缺陷时,现有的修复技术存在着修复率低,无法保证修复结果的正确性。

3、项目背景

 程序缺陷自动修复技术可以根据给定的错误程序自动生成程序修复候选项,进而修复程序中的缺陷.其修复过程中产生的补丁可以直接用于修改程序,也可以帮助开发人员改进代码。其中,修复真实缺陷,一直以来是程序缺陷自动修复研究的目标。

近年来,程序合成技术和机器学习、深度学习等AI 技术不断进步,在软件工程中有着广泛的应用.这两项技术的发展在解决程序自动修复问题有了新的应用。

4、解决方案

作者首先通过人工整理常见的缺陷模式和程序频谱两种方法对缺陷进行定位,得到缺陷的位置。在总结缺陷模时,作者人工给出修复方法并与缺陷模式配对。对通过缺陷模式定位到的缺陷,作者直结使用之前总结的修复方法生成候选项。对于使用程序频谱确定的缺陷位置,作者将缺陷处前面的序列化数据作为书写结构模型的输入,通过LSTM模型预测缺陷处的书写结构来得到多个修复候选项。在得到缺陷候选项时,作者通过程序合成工具SKETCH来进行候选项验证。

5、作者的核心思想、创新点

作者为解决修复率低的问题,通过两种方法进行缺陷定位,然后针对不同的方法应用不同的候选项生成。针对正确率低,通过程序合成工具SKETCH的修复选项选择与确认方法来解决。

6、实验及结论

由于SKETCH 合成工具仅能处理小规模的问题,因此这篇文字的实验对象主要是学生作业程序。学生作业程序都是小规模程序,同时可能会包含一些相似的错误。作者收集了南京大学2016-2107年<程序设计>课程作业作为实验对象。

在实验中主要讨论三个问题:1.该方法修复效果如何?2.跟别的方法相比有哪些优势?3.实际的缺陷定位结果如何?针对1和2两个问题,作者通过与GenProg 和AE 两个方法比较:文中方法能够修复大部分缺陷,比GenProg 和AE两个方法修复率和正确率高。对于问题3,作者通过人工检查,发现文中方法能定位到所有缺陷。

7、启发

在进行缺陷定位时,使用多个缺陷定位方法可以提高缺陷的覆盖率。在生成缺陷修复候选项时,通过人工总结的方法生成候选项时一种不错的方法。另外通过预测方法生成候选项的思路可以应用在今后的工作上。文字通过程序合成的方法来验证候选项,相比较于测试用例的方法有更好的扩展性。

posted @ 2021-02-07 10:16  程翔宇  阅读(78)  评论(0编辑  收藏  举报