Project Details
Selbstreparierende Programme ("Autofix")
Applicant
Professor Dr.-Ing. Andreas Zeller, Ph.D.
Subject Area
Software Engineering and Programming Languages
Term
from 2008 to 2011
Project identifier
Deutsche Forschungsgemeinschaft (DFG) - Project number 91732276
Viele Software-Probleme haben beschämend gewöhnliche Ursachen – eine falsch benannte Variable, ein fehlender Aufruf, eine ein Mal zu oft oder zu wenig ausgeführte Schleife, oder falsche Behandlung von Grenzfällen. In dieser Arbeit schlagen wir vor, für diese Probleme automatisch Korrekturen zu erzeugen: Schlägt ein Programm fehl, suchen wir nach einfachen Korrekturen, die den Fehler beheben. Unser Ansatz ist robust und setzt auf Laufzeit-Prüfungen und Regressionstests um den Fehler zu lokalisieren und um zu vermeiden, während der Korrektur neue Fehler einzuführen. Er ist zudem vollautomatisch, womit er im Moment des Fehlschlagens gestartet werden kann – und so tatsächlich das Programm während seiner Ausführung repariert. Unser Ansatz basiert auf fünf Bausteinen. Erstens helfen Laufzeitprüfungen durch Design by Contract beim Lokalisieren von Fehlern und bei der Prüfung potentieller Reparaturen. Zweitens benutzen wir einen Regressionstest, um das Einführen neuer Fehler zu vermeiden. Drittens beobachten wir Ausführungen, um zu lernen, welche Objekt-Zustände mit welchen Operationen zu erreichen sind. Für Situationen, in denen Contracts nicht verfügbar oder nicht ausreichend sind, benutzen wir dynamische Invarianten aus der Testsuite, um die bestmögliche Reparatur zu finden – nämlich diese, die fehlschlagende Läufe am meisten und funktionierende Läufe am wenigsten beeinflusst. Schließlich lernen wir aus der Fehlergeschichte, wie bestimmtes Programmverhalten in der Vergangenheit korrigiert wurde, um so ebenfalls die Suche zu beschleunigen.
DFG Programme
Research Grants
International Connection
Switzerland
Participating Person
Professor Dr. Bertrand Meyer