Detailseite
Projekt Druckansicht

Selbstreparierende Programme ("Autofix")

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2008 bis 2011
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 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-Verfahren Sachbeihilfen
Internationaler Bezug Schweiz
Beteiligte Person Professor Dr. Bertrand Meyer
 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung