LTL und Spin

Werbung
LTL und Spin
Stefan Radomski
[email protected]
Gliederung
• Wiederholung Grundlagen
• Vorstellung LTL
– Syntax
– Semantik
– Beispiele
• Model Checking mit Spin
– Fallbeispiele
– Einführung in Promela
– Vorführung
• Zusammenfassung
Stefan Radomski: LTL und Spin
2
Wiederholung Grundlagen
• Modellierung des Systems als Kripke Struktur
– Transitionsgraph
– Labelfunktion
• Ordnet den Zuständen atomare Formeln zu
• Modellierung einer Spezifikation in einer temporalen Logik
– Bislang kennengelernt: CTL (Computation Tree Logic)
• Aussagen über Teilbäume in der Kripkestruktur
– Es gibt einen Pfad für den gilt
– Für alle Pfade gilt
– Heute: LTL (Linear-time Temporal Logic)
• Erlaubt kompliziertere Aussagen
• Allerdings nur über alle Pfade der Struktur
Stefan Radomski: LTL und Spin
3
Unterschiede CTL / LTL
• CTL
–
–
–
–
beschreibt Eigenschaften ganzer Berechnungsbäume
Effizientes Verfahren für Model Checking
vier temporale Operatoren {X, F, G, U}
Zwei Pfadquantoren {E, A}
• LTL
– macht Aussagen über einzelne unendliche Berechnungspfade
– Eine Kripkestruktur erfüllt eine LTL Formel, wenn alle Pfade im
Transitionsgraphen die LTL Formel erfüllen
• Pfadquantoren E und A aus CTL Syntax überflüssig
– Neuer temporaler Operator R
Stefan Radomski: LTL und Spin
4
LTL Syntax
• Induktive Definition über p1, .. ,pn
– p1, .. , pn sind Eigenschaften eines Zustandes
• Atomare Formeln
– pi ist eine LTL Formel
• Boolsche Junktoren
– ϕ, ψ LTL Formeln, so auch ¬ϕ, ϕ∨ψ, ϕ∧ψ, ϕ⇒ψ
• Temporale Verknüpfungen
– ϕ, ψ LTL Formeln, so auch Xϕ, Fϕ , Gϕ , ψUϕ , ψRϕ
– Beliebig verschachtelt
Stefan Radomski: LTL und Spin
5
LTL Semantik
• Für eine valide LTL Formel ϕ bedeuten wie folgt
– Gϕ (ϕ gilt immer)
• Entspricht dem Allquantor
– Fϕ (zukünftig gilt irgendwann ϕ)
• Zukunft beginnt jetzt
• Entspricht dem Existenzquantor
– Xϕ (im nächsten Zustand gilt ϕ)
– ϕUψ (ϕ gilt mindestens bis irgendwann ψ gilt)
• Mag auch der aktuelle Zustand sein
• Es gibt einen solchen Zustand
• ϕ kann auch weiterhin gelten
– ϕRψ (ϕ wird von ψ abgelöst)
• Für alle zukünftigen Zustände gilt ψ
• Oder in einen zukünftigen Zustand, wird ϕ von ψ abgelöst
Stefan Radomski: LTL und Spin
6
LTL Beispiele
• Gp1
– Überall auf dem Pfad trifft p1 zu
• p1 ∧ X¬p1 ∧ XX¬p1 ∧ G(p1 ⇒ XXXp1)
– Anfangs gilt p1 und dann genau zu jedem dritten Zeitpunkt
• Fp1 ∧ ¬Fp2
– Irgendwann gilt p1, aber p2 trifft nie zu
• GFp1
– Immer wieder wird p1 gelten
• G(p1 ⇒ XFp2)
– Request/Response Bedingung
– Immer wenn p1 zutrifft gilt später irgendwann p2
•
G(p1 ⇒ X(p2 U p1))
– Immer wenn p1 gilt, gilt im nächsten Zeitpunkt p2 bis wieder p1 gilt
Stefan Radomski: LTL und Spin
7
Model Checking mit LTL
• Kripkestruktur beschreibt System
– Kann als ω-Automat aufgefasst werden
– Erzeugt alle mögliche Pfade durch die Kripkestruktur
• Ein Zustand wird durch Bitvektor der atomaren Formeln kodiert
• Ein Pfad als Reihe von Bitvektoren der Zustände
• LTL-Formel kann in ω-Automaten überführt werden
– Erweiterung der Turing Maschine für nichtendende Systeme
– ω-Automaten der negierten Formel bilden
• Durchschnitt der beiden Automaten bilden
– Liefert valide Zustandsfolgen aus der Kripkestruktur
– Zustandsfolgen verletzen LTL-Formel
– Auf Leerheit prüfen oder Folge ausgeben, die akzeptiert wird
• Dies ist die Arbeitsweise von SPIN
Stefan Radomski: LTL und Spin
8
Der SPIN Model Checker
•
•
Seit 1980 bei Bell Labs entwickwelt
Freie Software seit 1991
– Ausgeprägte User Community
•
•
•
Systembeschreibung in einer Hochsprache (Promela)
Implementiert LTL vollständig
Kann mit grossen Zustandsräumen arbeiten
– Nutzt partial order reduction Techniken
– On-the-Fly Interpretation
• Es wird keine explizite Kripkestruktur erstelt
•
Kann direkt C-Quellcode einbetten
– Nutzen als “Driver” über der tatsächlichen Implementierung!
•
Drei Modi der Nutzung
– Interaktiver Simulator
– Exhaustive Verifier
– Proof Approximation System
Stefan Radomski: LTL und Spin
9
SPIN Fallbeispiel
•
Einsatz beim Maselantkering (Sturmflutwehr bei Rotterdam)
– Falsifikation einer Schnittstellenspezifikation
– Einsatz als Proof Approximation System
•
Vorgestellter Prozess für eine Integration
– Grundlegender Entwurf
• Zergliederung in Teilsysteme
– “Function Failure Analysis”
• Identifizieren kritischer Funktionen
– Detailierter Entwurf der Teilsysteme
•
•
•
•
Spezifikationen in Promela und Z
Validierung der kritischen Teilsysteme durch Spin
Selektives Prototyping
Designreviews
– Implementation in C++ und Testen durch unabhängige Team
Stefan Radomski: LTL und Spin
10
Erfahrungen aus Fallbeispiel
•
•
•
Der überwiegende Teil der Fehler wurde beim Spezifizieren selber festgestellt
Einige Fehler noch bei der Simlaution
Nur noch wenige Fehler bei der Validierung selber
– Grösstenteils durch eine Kombination von Ereignissen
•
Einsatz als Proof Approximation Werkzeug erlaubt inkrementelle Arbeitsweise
– Prozess ähnlich dem Spiralmodell
– Inkrementelle Entwicklung und gerichtete Verfeinerung des Modells
•
Problem:
– Behobene Fehler mussten im Modell nachgepflegt oder umgangen werden
• Nachbessern aufwendig
• Schnell unübersichtlich
•
Problemstellung kann unterschiedlich modelliert werden
– Register als 8Bit oder 1Byte
– Modellierung bedingt erheblich die Laufzeiteigenschaften
Stefan Radomski: LTL und Spin
11
Einführung PROMELA
• Promela (Process Meta Language)
– Modellierung eines Problems als Menge von Prozessen
•
•
•
•
Process namens init startet weitere Prozesse
Asynchron
Verteilt
Globale Sichtbarkeit
– Nachrichtenkanäle zwischen den Prozessen
• Asynchron (rendez-vous) / Synchron (buffered)
• Globale / Lokale Sichtbarkeit
– Variablen
• Globale / Lokale Sichtbarkeit
– SPIN erzeugt aus PROMELA Programm Kripkestruktur
• nicht explizit
Stefan Radomski: LTL und Spin
12
Zusammenfassung
• LTL
– erlaubt Aussagen über alle Pfade in einer Kripkestruktur
– Pfadquantoren überflüssig
– Weiterer temporaler Operator Release
• SPIN erlaubt Model Checking mit LTL
– Modellierung des Problems mit Promela
• Ergibt die Kripkestruktur
– Drei Möglichkeiten für Korrektheitsforderungen
• Assertions
• Special Labels
• Never Claims
– Bilden LTL Formeln ab (spin -f)
Stefan Radomski: LTL und Spin
13
Herunterladen