S3 – Semantics of Software Systems
In diesem vom European Research Council mit einem Advanced Grant geförderten Projekt entwickelt CISPA-Faculty Prof. Dr. Andreas Zeller zusammen mit seinem Team Software-Bots, die Softwaresysteme automatisch testen, debuggen und überwachen - alle Arten von Systeme, überall und jederzeit.
©ERC
Was, wenn wir Software-Bots hätten, die unermüdlich unsere Softwaresysteme testen, debuggen und überwachen? IT-Mitarbeiter sind teuer und rar. Warum also können wir langweilige, sich wiederholende Tätigkeiten wie Testen und Debuggen nicht weiter automatisieren? Das Problem ist, dass uns computerlesbare Spezifikationen (so genannte Oracles) dafür fehlen, was das System tun oder nicht tun sollte. Dieses Oracle-Problem ist seit Jahrzehnten ein Hindernis für die automatische Testgenerierung, die zuverlässige Reparatur von Software und die genaue Überwachung von Software.
Aufbauend auf bahnbrechenden Forschungsarbeiten zur Ableitung von Eingabesprachen von Systemen führt S3 einen einheitlichen Ansatz zum automatischen Lernen von Oracles ein. Es nimmt ein gegebenes Softwaresystem, schlussfolgert und dekodiert seine Eingaben und Ausgaben und führt Experimente durch, um Modelle zu extrahieren, wie sich das System verhält, indem es seine Semantik durch Vorhersage von Ausgabemerkmalen für die gegebenen Eingabemerkmale erfasst. Diese Modelle, die so genannten Systeminvarianten, ermöglichen die vollständige Automatisierung wichtiger Softwareentwicklungsaktivitäten:
Systeminvarianten kodieren Sprachen zur automatischen Generierung von Testeingaben und bieten Oracles zur Überprüfung von Testergebnissen: “In the TLS server, the <payload> in the <heartbeat-response> must be the same as in the <heartbeat-request>.”
Systeminvarianten ermöglichen die Eingrenzung der Ursachen für Softwareverhalten (“The X.509 public key certificate is not recognized if <subject-name> contains a zero byte”). Generierte Tests und Oracles gewährleisten eine zuverlässige automatische Reparatur.
Systeminvarianten ermöglichen es, abnormales Verhalten zur Laufzeit zu erkennen (“In log4j, logging a <user-agent> containing "${jndi:<url>}" opens <url>”). Problematische Abfragen können isoliert und untersucht werden, bis das Problem behoben ist.
Künftig würden Tests, Fehlersuche und Überwachung von Software-Bots übernommen, die das Softwareverhalten autonom untersuchen, Probleme melden und ihren menschlichen Kolleg:innen Maßnahmen vorschlagen. Damit erhöhen sie die Produktivität der Entwickler:innen und die Zuverlässigkeit der Software.
©ERC
Was, wenn wir Software-Bots hätten, die unermüdlich unsere Softwaresysteme testen, debuggen und überwachen? IT-Mitarbeiter sind teuer und rar. Warum also können wir langweilige, sich wiederholende Tätigkeiten wie Testen und Debuggen nicht weiter automatisieren? Das Problem ist, dass uns computerlesbare Spezifikationen (so genannte Oracles) dafür fehlen, was das System tun oder nicht tun sollte. Dieses Oracle-Problem ist seit Jahrzehnten ein Hindernis für die automatische Testgenerierung, die zuverlässige Reparatur von Software und die genaue Überwachung von Software.
Aufbauend auf bahnbrechenden Forschungsarbeiten zur Ableitung von Eingabesprachen von Systemen führt S3 einen einheitlichen Ansatz zum automatischen Lernen von Oracles ein. Es nimmt ein gegebenes Softwaresystem, schlussfolgert und dekodiert seine Eingaben und Ausgaben und führt Experimente durch, um Modelle zu extrahieren, wie sich das System verhält, indem es seine Semantik durch Vorhersage von Ausgabemerkmalen für die gegebenen Eingabemerkmale erfasst. Diese Modelle, die so genannten Systeminvarianten, ermöglichen die vollständige Automatisierung wichtiger Softwareentwicklungsaktivitäten:
Systeminvarianten kodieren Sprachen zur automatischen Generierung von Testeingaben und bieten Oracles zur Überprüfung von Testergebnissen: “In the TLS server, the <payload> in the <heartbeat-response> must be the same as in the <heartbeat-request>.”
Systeminvarianten ermöglichen die Eingrenzung der Ursachen für Softwareverhalten (“The X.509 public key certificate is not recognized if <subject-name> contains a zero byte”). Generierte Tests und Oracles gewährleisten eine zuverlässige automatische Reparatur.
Systeminvarianten ermöglichen es, abnormales Verhalten zur Laufzeit zu erkennen (“In log4j, logging a <user-agent> containing "${jndi:<url>}" opens <url>”). Problematische Abfragen können isoliert und untersucht werden, bis das Problem behoben ist.
Künftig würden Tests, Fehlersuche und Überwachung von Software-Bots übernommen, die das Softwareverhalten autonom untersuchen, Probleme melden und ihren menschlichen Kolleg:innen Maßnahmen vorschlagen. Damit erhöhen sie die Produktivität der Entwickler:innen und die Zuverlässigkeit der Software.
Mehr zum Ziel, den Herausforderungen und der Vorgehensweise im Projekt S3 verrät der Forschunsgantrag, den Andreas Zeller beim ERC eingereicht hat. Hier lässt sich das Dokument einsehen und kann als Inspiration für weitere Forschungsvorhaben dienen.
Mehr zum Ziel, den Herausforderungen und der Vorgehensweise im Projekt S3 verrät der Forschunsgantrag, den Andreas Zeller beim ERC eingereicht hat. Hier lässt sich das Dokument einsehen und kann als Inspiration für weitere Forschungsvorhaben dienen.
CISPA-Faculty Prof. Dr. Andreas Zeller hat es wieder geschafft - er erhält einen zweiten ERC Advanced Grant in Höhe von 2,5 Millionen Euro! In dieser Folge erzählt er uns von seiner Vision, alle Software der Welt automatisch testbar zu machen, wie er es geschafft hat, den Europäischen Forschungsrat davon zu überzeugen, sein neues Projekt S3 zu finanzieren, und wie sein Softwaretest-Tool der gesamten Gesellschaft zugutekommen wird.
Wir suchen:
Postdocs, die ihr unabhängiges Forschungsprogramm mit S3-Techniken kombinieren möchten, und
Doktorand:innen, die an einigen der im Antrag beschriebenen S3-Themen arbeiten möchten.
Das CISPA und Andreas' Gruppe bieten ein florierendes Ökosystem, das sich ganz der bahnbrechenden Forschung widmet. Kontaktiere Andreas Zeller oder bewirb dich direkt hier: