在过去的40年里,人们花了大量的精力来测试软件以发现bug。测试是困难的,因为潜在的问题涉及不可确定的问题,如语句可达性。然而,测试不能被忽视。美国国家标准与技术协会(National Institute of Standards and Techniques)估计,软件故障给美国经济造成的损失为600亿美元,表明改进软件测试可以将这一损失至少减少三分之一。6
如果发现bug在技术上要求很高,但在经济上至关重要,那么自动修复bug的难度和价值会有多大呢?这个问题可以在Weimer、Forrest、Le Goues和Nguyen的论文中得到准确的回答。作者使用进化计算来进化补丁来修复bug。他们的工作首次展示了基因编程如何进化补丁来修复真正的bug(这个想法最初是由Arcuri和Yao提出的,他们在玩具程序上做了实验3.).
在软件工程研究和开发社区中,越来越多的人认识到进化计算和相关的基于搜索的优化可以用来寻找软件问题的解决方案。软件工程师经常面临的问题是,可能的需求、设计、测试用例和代码的巨大空间。基于搜索的优化允许他们部署自动搜索这些空间的优化算法,由编码解决方案可取性的适应度函数指导。
基于搜索的优化方法被称为基于搜索的软件工程(SBSE)。4这种方法很受欢迎,因为它非常通用,可以很好地应用于许多不同的软件工程问题。SBSE还可以轻松地处理软件工程场景中常见的多个、冲突的和有噪声的优化目标。使用SBSE,已经证明可以自动搜索平衡成本和收益的需求,最大化内聚和最小化耦合的设计,并找到平衡故障发现和执行时间的测试用例。1,2,5,7
在过去10年里,SBSE的工作加快了步伐,目前已有650多篇论文一个基于搜索的优化在软件工程问题中的各种应用。下面的论文肯定会被看作是SBSE研究历史上的一个重大和切实的突破。作者的工作证明了优化算法能够修复损坏的程序。由于它是自动化的,它可以比任何人类更快地修复错误。例如,在标准设备上,Zune的漏洞在三分钟多一点的时间内就被修补好了。
目前,开发人员和研究人员都对部署进化的程序代码的想法保持谨慎。然而,有了后见之见,我们可以用我们现在应用于编译代码的相同的历史视角来回顾这一点。也就是说,尽管编译后的代码目前被广泛使用,但在人们的记忆中,对于编译后的代码是否值得信任也存在同样的怀疑。如果随着时间的推移,对进化代码的态度发生了类似的变化,那么自动补丁肯定会在这种范式转变中发挥关键作用。
基于搜索的优化技术的成功应用需要仔细配置和调整所使用的算法。可以用来指导搜索的信息越多,搜索结果就越好。作者使用了几种创新的技术来指导他们寻找补丁。他们的方法自动修复软件故障的方式类似于外科医生治疗伤口的方式。为了定位伤口,他们使用积极和消极的测试用例,找到最有可能包含错误的代码段。在补丁过程中采用的一个重要见解是使用所谓的“整形手术”;作者不是从零开始开发补丁,而是从具有类似功能的现有代码部分开始开发补丁。改进后的补丁随后使用去除死代码的技术进行整理,从而确保整洁和有效的伤口愈合。
所有这些阶段将在接下来的论文中详细描述。作者演示了他们的自动补丁技术的应用,并给出了令人信服的结果,以显示它如何发现和修复真正的错误。考虑到前面提到的软件错误的巨大成本,肯定不可能夸大这项工作可能产生的潜在影响。
1.Afzal, W., Torkar, R.和Feldt, R.非功能系统属性的基于搜索测试的系统回顾。信息。Softw。51技术。,(2009), 957976。
2.Ali, S., Briand, l.c., Hemmati, H.和Panesar-Walawege, R.K.基于搜索的测试用例生成的应用和实证研究的系统回顾。IEEE反式。Softw。Eng。(2010年,出现)。
3.Arcuri, A.和Yao, X.自动修复软件错误的一种新的协同进化方法。在IEEE进化计算大会论文集(香港,二八年六月十六日),162168。
4.基于搜索的软件工程的现状和未来。软件工程的未来。L. Briand和A. Wolf, Eds。IEEE计算机科学出版社加利福尼亚州阿拉米托斯,342357。
5.基于搜索的软件测试数据生成:一项调查。Softw。测试、验证与可靠性, 2(2004年6月),105156。
a.来源:SBSE存储库位于http://www.sebase.org/sbse/publications/.
DOI: http://doi.acm.org/10.1145/1735223.1735248
©2010 acm 0001-0782/10/0500 $10.00
允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。
数字图书馆是由计算机协会出版的。版权所有©2010 ACM, Inc。
没有发现记录