Automated Fixing of Programs with Contracts

Automated Fixing of Programs with Contracts
复制标题

DOI:
10.1145/1831708.1831716
复制
发表时间:
2010-07
影响因子:
7.4
通讯作者:
Yu Pei;Carlo A. Furia;M. Nordio;Yi Wei;Bertrand Meyer;Andreas Zeller
Yu Pei;Carlo A. Furia;M. Nordio;Yi Wei;Bertrand Meyer;Andreas Zeller
中科院分区:
计算机科学1区
文献类型:
--
作者:
Yu Pei;Carlo A. Furia;M. Nordio;Yi Wei;Bertrand Meyer;Andreas Zeller

文献摘要

被引文献

相似文献

本文介绍了Autofix,这是一种自动调试技术,可以修复通用软件中的故障。为了提供高质量的修复建议并启用整个调试过程的自动化,自动框架依赖于合同形式(例如前后条件)中的简单规范元素的存在。使用合同增强了动态分析技术的精度,用于故障检测和定位,并用于验证修复。然后,唯一需要的用户输入自动装载支撑工具是通过合同注释的错误程序。该工具根据其适用性的估计,生成了对故障排名的经过验证的修复程序的集合。在广泛的实验评估中,我们在不同的成熟度和质量(实施和合同)的四个代码库中应用了自动框,以超过200个故障。自动FOFIX成功地修复了42%的故障,在大多数情况下,与那些合理的程序员相当的质量更正会产生;使用的计算资源很小,每次修复时间的平均时间低于20分钟的商品硬件。这些数字与自动化程序修复中的最新技术相比有利,并证明自动框方法成功适用于减少现实情况下的调试负担。
This paper describes AutoFix, an automatic debugging technique that can fix faults in general-purpose software. To provide high quality fix suggestions and to enable automation of the whole debugging process, AutoFix relies on the presence of simple specification elements in the form of contracts (such as pre and post conditions). Using contracts enhances the precision of dynamic analysis techniques for fault detection and localization, and for validating fixes. The only required user input to the AutoFix supporting tool is then a faulty program annotated with contracts; the tool produces a collection of validated fixes for the fault ranked according to an estimate of their suitability. In an extensive experimental evaluation, we applied AutoFix to over 200 faults in four code bases of different maturity and quality (of implementation and of contracts). AutoFix successfully fixed 42% of the faults, producing, in the majority of cases, corrections of quality comparable to those competent programmers would write; the used computational resources were modest, with an average time per fix below 20 minutes on commodity hardware. These figures compare favorably to the state of the art in automated program fixing, and demonstrate that the AutoFix approach is successfully applicable to reduce the debugging burden in real-world scenarios.