Selbstreparierende Programme ("Autofix")
Final Report Abstract
Hat ein Programm einen Fehler, muss es repariert werden - eine Arbeit, die Entwickler viel Zeit und Aufwand kosten kann. Ist es auch möglich, ein Programm zu reparieren, und zwar so, dass es anschließend korrekt arbeitet? Im Projekt „Selbstreparierende Programme" sind Dr. Andreas Zeller (Universität des Saarlandes) und Dr. Bertrand Meyer (ETH Zürich) dieser Frage nachgegangen, gefördert durch die DFG und die Schweizer Hasler-Stiftung. Ihr Ansatz zur automatischen Programmkorrektur basiert auf der Idee, dass Programme im Normalfall stets dieselben Abläufe zeigen und dieselben Eigenschaften erfüllen - Abläufe und Eigenschaften, die im optimalen Fall vom Programmierer als sogenannte Spezifikation vorgegeben sind. Mit Hilfe dieser Spezifikation lassen sich mögliche Reparatur-Kandidaten leicht bewerten: Nur solche Reparaturen sind zulässig, die auch die Spezifikation erfüllen. Durch diesen Ansatz konnten in Fallstudien fast die Hälfte der Programmfehler vollautomatisch korrekt repariert werden; Anwendungsgebiet war die Programmiersprache Eiffel, in der Funktionen mit Spezifikationen des korrekten Verhaltens versehen sind. Ein weiteres Projektziel war die Anwendung in Fällen, wo keine Spezifikation, sondern nur eine Menge von Software-Tests vorlag - was das Gros der herkömmlichen Programmierung ausmacht. Hier konnte das Projekt das hochgesteckte Ziel der korrekten automatischen Reparatur leider nicht erfüllen, dafür aber wichtige Grundlagen für vollautomatische Testerzeugung und Erlernen von Spezifikationen legen. Die Arbeiten haben das Gebiet der automatischen Fehlerreparatur nachhaltig beeinflusst und zählen heute zu den meistzitierten Veröffentlichungen im Gebiet.
Publications
- 2009. Generating Fixes from Object Behavior Anomalies. In Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering (ASE ’09). IEEE Computer Society, Washington, DC, USA, 550-554
Valentin Dallmeier, Andreas Zeller und Bertrand Meyer
(See online at https://dx.doi.org/10.1109/ASE.2009.15) - 2010. Automated fixing of programs with contracts. In Proceedings of the 19th international symposium on Software testing and analysis (ISSTA ’10). ACM, New York, NY, USA, 61-72
Yi Wei, Yu Pei, Carlo A. Furia, Lucas S. Silva, Stefan Buchholz, Bertrand Meyer und Andreas Zeller
(See online at https://dx.doi.org/10.1145/1831708.1831716) - 2010. Generating test cases for specification mining. In Proceedings of the 19th international symposium on Software testing and analysis (ISSTA ’10). ACM, New York, NY, USA, 85-96
Valentin Dallmeier, Nikolai Knopp, Christoph Mallon, Sebastian Flack und Andreas Zeller
(See online at https://dx.doi.org/10.1145/1831708.1831719) - 2012. Automatically Generating Test Cases for Specification Mining. IEEE Trans. Softw. Eng.38, 2 (March 2012), 243-257
Valentin Dallmeier, Nikolai Knopp, Christoph Mallon, Gordon Fraser, Sebastian Flack und Andreas Zeller
(See online at https://doi.org/10.1109/TSE.2011.105) - 2014. Automated Fixing of Programs with Contracts. IEEE Trans. Softw. Eng. 40, 5 (May 2014), 427-449
Yu Pei, Carlo A. Furia, Martin Nordio, Yi Wei, Bertrand Meyer und Andreas Zeller
(See online at https://doi.org/10.1109/TSE.2014.2312918)