APP下载

软件缺陷自动修复技术综述∗

2021-11-09姜佳君陈俊洁熊英飞

软件学报 2021年9期
关键词:程序方法

姜佳君,陈俊洁,熊英飞

1(天津大学 智能与计算学部,天津 300350)

2(北京大学 信息科学技术学院 计算机科学技术系 软件研究所,北京 100871)

3(高可信软件技术教育部重点实验室(北京大学),北京 100871)

软件缺陷(software defects)在软件的开发过程中是不可避免的,特别是随着现代信息技术的迅速发展,软件规模在不断增加,软件缺陷的数量也在随之增加.软件缺陷会破坏程序的正常执行,使得程序在某种程度上不能满足其既有的功能要求.严重的软件缺陷不仅会造成企业的重大经济损失,甚至会对人们的生命安全造成重大威胁.因此,及时修复程序中的缺陷十分重要,已经成为软件维护中的一项重要任务.对Linux 开发者的一项调查研究表明,在程序的开发过程中大约一半时间是用在了缺陷修复上[1].然而,修复程序中的缺陷不仅耗时,且容易出错.研究表明:开发者在修复软件缺陷时,有可能会引入新的程序缺陷[2],使得软件缺陷的修复变得更加困难.

软件缺陷自动修复(automatic software repair)技术有希望将开发人员从繁重的修复任务中解脱出来.从2009年开始,软件缺陷自动修复技术成为了一个热门的研究方向,吸引了来自软件工程(software engineering)、程序语言(programming language)、人工智能(artificial intelligence)、形式化验证(formal verification)等多个社区的大量研究人员.已有研究提出了一系列的软件自动修复技术,综合使用了软件分析(software analysis)、启发式搜索(heuristic search)、程序综合(program synthesis)以及机器学习(machine learning)等多种技术手段.缺陷自动修复技术根据程序中的测试或者通过静态分析技术等获……

登录APP查看全文

猜你喜欢

程序方法
学习方法
试论我国未决羁押程序的立法完善
失能的信仰——走向衰亡的民事诉讼程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
用对方法才能瘦
创卫暗访程序有待改进
四大方法 教你不再“坐以待病”!
赚钱方法
捕鱼