Detailseite
EMPEROR: Lernen der Ursachen von Programmverhalten
Fachliche Zuordnung
Softwaretechnik und Programmiersprachen
Förderung
Förderung seit 2015
Projektkennung
Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 261444241
Jegliches Programmverhalten wird durch bestimmte Eingaben ausgelöst.Welche Teile einer Eingabe lösen bestimmtes Verhalten aus, und auf welcher Weise geschieht das?Mit dem EMPEROR-Projekt möchten wir auf automatischer Weise Erklärungen für Programmverhalten erzeugen, insbesondere für Programmfehler.Zu diesem Zweck verwenden wir (1) Grammatiken, welche Eingaben in einzelne Elemente trennen; (2) das Lernen von statistischen Beziehungen zwischen Eigenschaften von Eingabeelementen und Programmverhalten; und (3) systematische Tests, um abgeleitete Assoziationen unter Einbeziehung interner Eigenschaften der Programmausführung zu festigen oder zu widerlegen.Als Ergebnis erhalten wir einen Ansatz, welcher (1) automatisch die (Eingabe-) Bedingungen ableitet, unter denen ein bestimmtes Verhalten ausgelöst wird: "Das Programm schlägt fehl, wenn die E-Mail-Adresse ein Hochkommata enthält"; (2) das Programmverhalten von Interesse durch automatisch generierte Testfälle (re)produziert: "andr'e@foo.com"; und (3) Ursache-Wirkungs-Beziehungen anhand von Ausführungseigenschaften automatisch generierter Testfälle erzeugt und verfeinert: "Die Eingabe "foo'''''''''@bar.com" verursacht eine Rekursionstiefe von mehr als 128, was zu einem Absturz führt."EMPEROR ist der Nachfolger vom EMPRESS-Projekt, in dem wir gezeigt haben, dass statistische Beziehungen zwischen Eingabeelementen und Programmverhalten existieren und wie diese in prototypischen Implementierungen für das Testen und Debugging verwendet werden können. EMPEROR übernimmt die Ansätze von EMPRESS und vereinheitlicht sowie erweitert sie in einem einzelnen modularen Ansatz, der weit über einfache statistische Beziehungen hinausgeht. Durch das Lernen und Verfeinern von prädiktiven und generativen Modellen kann EMPEROR Beziehungen mit beliebigen Eigenschaften der Programmeingabe ableiten und somit unser Verständnis dafür verbessern, wie und warum Software sich so verhält, wie sie sich verhält.
DFG-Verfahren
Sachbeihilfen