基本信息来源于合作网站,原文需代理用户跳转至来源网站获取       
摘要:
当开发人员面对大量缺陷报告无从入手的时候,自动程序修复(Automatic Program Repair,APR)可以成功完成其中一些缺陷的自动修复,从而有效减少开发人员的程序调试时间.因此自动程序修复逐渐成为当前软件维护领域中的一个研究热点并取得了一定的研究进展.该文通过对权威期刊和会议进行检索,搜集了100余篇相关论文,从现有自动程序修复的研究历程、该方法中的重要问题以及国内外相关研究团队及成果等几个方面对该领域进行了系统的总结.其中基于测试用例的自动程序修复方法是当前一种主流方法,其通过配套测试用例集来评估生成补丁的质量.论文将这类方法细分为三个阶段:软件缺陷定位阶段、生成补丁阶段和补丁评估阶段.其中软件缺陷定位阶段是自动程序修复的基础,其目标是尽可能精确识别出可能含有缺陷的语句.生成补丁阶段一般通过预先定义的修改操作对缺陷语句进行修改,代码修改操作在设定时可以考虑修复程序的自身代码、开源项目的代码或者问答网站中的知识等.补丁评价阶段则对生成的候选补丁进行评估,直到找到一个补丁可以使得所有测试用例均执行通过,并随后借助开发人员的人工分析进行最终确认.在上述三个阶段中,生成补丁阶段是自动程序修复方法的核心,论文将已有补丁生成方法细分为三类:基于搜索的方法、基于语义的方法和其他类型方法.其中基于搜索的方法在搜索空间内通过搜索生成补丁,并借助配套测试用例集对该补丁进行验证,经典的方法包括GenProg、PAR、AE、RSrepair等;基于语义的方法则借助语义信息来合成补丁,主要基于符号执行和约束求解,经典的方法包括SemFix、DirectFix、Angelix、Nopol等;而不属于上述两类方法的研究工作则被归于其他类型的方法,经典的工作包括基于问答网站和开源项目托管网站挖掘来生成补丁.而补丁评价阶段是自动程序修复方法研究的争议焦点,近两年研究人员更多关注正确补丁在搜索空间中的分布和补丁的正确性.特别是针对减少补丁的验证花销和提高补丁质量的问题做出了进一步的探索.随后论文针对特定领域的自动程序修复方法进行了总结,包括并发缺陷、数据库缺陷、空指针缺陷、数据结构缺陷、内存泄漏缺陷等的自动修复方法.其中重点分析了针对并发缺陷的自动修复方法,将已有研究工作分为数据竞争的自动修复、原子性违背的自动修复、顺序违背的自动修复和死锁的自动修复.然后论文总结了自动程序修复方法在有效性评估中经常使用的缺陷库,不难看出ManyBugs、Intro-Class、Simens程序集和Defect4J是目前使用最多的缺陷库.为了方便研究人员更好的与自己提出的修复方法进行比较,论文搜集了目前已经共享的自动程序修复工具并给出了相关参考文献和具体下载地址.接着论文对国内外在程序自动修复领域比较活跃的研究小组进行了总结,并对每个研究组的主要贡献进行了总结,以方便国内外研究人员对他们的后续研究工作进行及时跟踪.最后总结全文,并依次从缺陷定位、补丁生成和评估、缺陷数量和类型、特定领域的缺陷修复以及缺陷修复在工业界中的应用这五个维度对未来的研究工作进行了展望.
推荐文章
基于变异技术的程序故障自动化修复方法
变异技术
故障定位
故障自动化修复
面向程序自动修复的缺陷分类方法研究
软件缺陷
程序自动修复
缺陷分类
技术集成
API文档缺陷自动检测和修复方法
Java API文档
程序异常
修复建议
基于变型空间代数的自动程序修复方法
自动程序修复
变型空间代数
归纳学习
上下文无关文法
生成树
内容分析
关键词云
关键词热度
相关文献总数  
(/次)
(/年)
文献信息
篇名 自动程序修复方法研究述评
来源期刊 计算机学报 学科 工学
关键词 自动程序修复 软件缺陷定位 基于搜索的软件工程 约束求解 并发程序缺陷修复
年,卷(期) 2018,(3) 所属期刊栏目 软件技术与理论
研究方向 页码范围 588-610
页数 23页 分类号 TP311
字数 24456字 语种 中文
DOI 10.11897/SP.J.1016.2018.00588
五维指标
作者信息
序号 姓名 单位 发文数 被引次数 H指数 G指数
1 陈翔 南通大学计算机科学与技术学院 64 475 12.0 19.0
2 王赞 天津大学软件学院 15 126 7.0 11.0
3 樊向宇 天津大学软件学院 3 61 3.0 3.0
4 郜健 天津大学软件学院 1 8 1.0 1.0
5 傅浩杰 天津大学软件学院 1 8 1.0 1.0
传播情况
(/次)
(/年)
引文网络
引文网络
二级参考文献  (183)
共引文献  (103)
参考文献  (31)
节点文献
引证文献  (8)
同被引文献  (25)
二级引证文献  (7)
1976(1)
  • 参考文献(0)
  • 二级参考文献(1)
1982(1)
  • 参考文献(0)
  • 二级参考文献(1)
1988(1)
  • 参考文献(0)
  • 二级参考文献(1)
1990(1)
  • 参考文献(0)
  • 二级参考文献(1)
1992(1)
  • 参考文献(0)
  • 二级参考文献(1)
1993(1)
  • 参考文献(0)
  • 二级参考文献(1)
1994(2)
  • 参考文献(0)
  • 二级参考文献(2)
1996(1)
  • 参考文献(0)
  • 二级参考文献(1)
1997(1)
  • 参考文献(1)
  • 二级参考文献(0)
2000(3)
  • 参考文献(0)
  • 二级参考文献(3)
2001(1)
  • 参考文献(0)
  • 二级参考文献(1)
2002(3)
  • 参考文献(0)
  • 二级参考文献(3)
2003(2)
  • 参考文献(1)
  • 二级参考文献(1)
2005(4)
  • 参考文献(1)
  • 二级参考文献(3)
2006(8)
  • 参考文献(1)
  • 二级参考文献(7)
2007(4)
  • 参考文献(0)
  • 二级参考文献(4)
2008(10)
  • 参考文献(1)
  • 二级参考文献(9)
2009(11)
  • 参考文献(1)
  • 二级参考文献(10)
2010(24)
  • 参考文献(2)
  • 二级参考文献(22)
2011(22)
  • 参考文献(4)
  • 二级参考文献(18)
2012(22)
  • 参考文献(3)
  • 二级参考文献(19)
2013(49)
  • 参考文献(4)
  • 二级参考文献(45)
2014(18)
  • 参考文献(2)
  • 二级参考文献(16)
2015(16)
  • 参考文献(4)
  • 二级参考文献(12)
2016(5)
  • 参考文献(4)
  • 二级参考文献(1)
2017(2)
  • 参考文献(2)
  • 二级参考文献(0)
2018(5)
  • 参考文献(0)
  • 二级参考文献(0)
  • 引证文献(4)
  • 二级引证文献(1)
2018(5)
  • 引证文献(4)
  • 二级引证文献(1)
2019(6)
  • 引证文献(3)
  • 二级引证文献(3)
2020(4)
  • 引证文献(1)
  • 二级引证文献(3)
研究主题发展历程
节点文献
自动程序修复
软件缺陷定位
基于搜索的软件工程
约束求解
并发程序缺陷修复
研究起点
研究来源
研究分支
研究去脉
引文网络交叉学科
相关学者/机构
期刊影响力
计算机学报
月刊
0254-4164
11-1826/TP
大16开
中国科学院计算技术研究所(北京2704信箱)
2-833
1978
chi
出版文献量(篇)
5154
总下载数(次)
49
论文1v1指导