Laufzeitverifikation Martin Möser Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 1
Einführung / Motivation Autonome Systeme Komplexes Ein-/Ausgabeverhalten kein einfaches Testszenario Häufiges Ändern des Modells Ausführungspfade schwer vorhersehbar Menschliche Analyse kaum möglich Formale Verifikation nicht anwendbar Zustandsraumexplosion Laufzeitverifikation Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 2
Laufzeitverifikation 1/2 Hybrider V&V-Ansatz Verbinden formaler Methoden mit traditionellen V&V- Ansätzen Ausnutzen der formalen Spezifikation der Systeme Anwenden temporaler Logik Test von Universellen Eigenschaften Spezifischen Eigenschaften Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 3
Laufzeitverifikation 2/2 Technik Formale Spezifikation übersetzen in Monitor Anwendungsgebiete Testphase Verifikation des Programms mit Hilfe von Testeingabe und Monitor Betriebsphase Überprüfen der Ausführungspfade mit Hilfe des Monitors Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 4
Laufzeitverifikation von Programmen Unabhängig Generierung eines Logs zur Analyse Testeingabe Zielausgabe Eigenschaften Programm Log Verifizierer Akzeptieren /Ablehnen Integriert Analysecode eingebettet in das Testsystem Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 5
Eagle Entwickelt am NASA Ames Research Center Framework für Laufzeitverifikation Definition von temporalen Logiken Festlegen von Eigenschaften, die überprüft werden können Übersetzen der Logik in Code Kontrolle der Ausführungspfade Folge von Zuständen, die Werte von Variablen beinhalten x=0, y=0 x=1, y=0 x=0, y=1 x=1, y=1 Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 6
Eagle Temporale Logik Aufbauend auf future LTL Zentrale Operatoren: max Always(F) = F AND @Always(F) min Even(F) = F OR @Even(F) min Until(F 1, F 2 ) = F 2 OR (F 1 AND @Until(F 1, F 2 )) max Unless(F 1, F 2 ) = Until(F 1, F 2 ) OR Always(F 1 ) Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 7
Eagle - Monitore Monitor entspricht Formel, die überprüft werden kann: Es gilt immer: Wenn x positiv ist, wird eventuell auch y positiv Always(x > 0 Even(y > 0)) Parametrisiert: x > 0, y 0 liveness Anforderung: Even(y > 0) AND Always(x > 0 Even(y > 0)) Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 8
Eagle Implementierung 1/2 Implementiert in Java Dynamisches Erzeugen der Monitore zur Laufzeit Sukzessives Prüfen der Zustände über die Formeln Fehlermeldung, wenn eine Formel false ergibt Überprüfung der Ergebnisse am Ende und ggf. Ausgabe von Warnungen Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 9
Eagle Implementierung 2/2 Spezifikation Java-Klasse Java-Klasse Java-Klasse Bytecode Bytecode Mointoring Engine Bytecode x=0, y=0 Ausführungspfad x=1, y=0 x=0, y=1 x=1, y=1 Always(x > 0 Even(y > 0)) AND Even(y > 0) Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 10
Eigenschaften von Planungswerkzeugen Eingabe: Menge von Zielen Ziel: Effiziente Modelle des Einsatzgebiets durch Einsatz von Heuristiken Kein einfacher Ausgaberaum schwierige Definition von Monitoren Schlüsselaktivitäten: Modellbildung Sicherstellung der Effizienz der eingesetzten Heuristik Tests elementar Laufzeitverifikation Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 11
Anwendungsbeispiel: PLASMA C++-Bibliothek zum Aufbau von Planungssystemen Eingesetzt im MAPGEN-Projekt: Planung der Kommandosequenzen für Mars Rover Problemstellung: Justierung von Kameraeinstellungen und Aufnahme von Bildern Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 12
Prädikate Camera::off() Camera::ready() Camera::takePic(Position p) Attitude::pointAt(Position p) Attitude::turn(Position from, Position to) Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 13
PLASMA - Planung Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 14
Laufzeitverifikation von PLASMA PLASMA generiert eigenen EventLog keine Codeinstrumentierung durch Eagle Einfaches parsen des EventLogs zur Aktualisierung der Eagle-Zustände Eagle PLASMA EventLog Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 15
Fazit Einordnung in FTS Effiziente Fehlererkennung zur Laufzeit Dadurch Umgehung/Behebung der Fehler möglich Vorteile Verhindern der Zustandsraumexplosion durch nur einen Ausführungspfad Konstruktion von Monitoren sowohl bzgl. des Plans selbst als auch dessen Berechnung Effizientes Abfangen von Strategieänderungen Nachteile Nur ein Ausführungspfad pro Durchlauf Einsatz hauptsächlich in Tests Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 16
Verwandte Arbeit / Referenzen Verwandte Arbeiten Workshops für Laufzeitverifikation seit 2001 Rammig et al.: Model-based Runtime Verification Framework for Self-optimizing Systems Viele Ansätze beschränkt auf Model-Checking Referenzen Havelund et al.: Runtime Verification of Autonomous Spacecraft Software Havelund et al.: Rule-Based Runtime Verification Mayer, Stumptner: Model-Based Debugging using Multiple Abstract Models http://en.wikipedia.org/wiki/formal_verification Seminar Fehlertolerante und Selbstheilende Systeme: Verifikation und Validierung autonomer Systeme Martin Möser - 17