Software Engineering in der Praxis Praktische Übungen
Marc Spisländer Josef Adersberger Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 10. November 2008
Inhalt Nachlese Lernziele der letzten Übung Model Checking Computational Tree Logic Syntax von CTL Interpretation von CTL Zusammenfassung Model Cheking mit NuSMV
Lernziele der letzten Übung Zeitbehaftete Petrinetze Wichtigste Punkte Standardpetrinetze um Zeitaspekt erweitert Jeder Transition wird ein Zeitintervall zugeordnet Eine PN-schaltbereite Transition muss genau in diesem Zeitintervall schalten Erreichbarkeitsrelation wird auf Zustandsklassen definiert
Model Checking Ziel Fehlerentdeckung in der Systemspezifikation Vorgehensweise 1. Modellierung des Systems durch endlichen Automaten 2. Formulierung der Anforderungen, die das System erfüllen muss, durch logische Formeln 3. Automatisches Beweisen, dass das System die Anforderung erfüllt oder nicht erfüllt
Model Checking Ziel Fehlerentdeckung in der Systemspezifikation Vorgehensweise 1. Modellierung des Systems durch endlichen Automaten 2. Formulierung der Anforderungen, die das System erfüllen muss, durch logische Formeln 3. Automatisches Beweisen, dass das System die Anforderung erfüllt oder nicht erfüllt
Model Checking Ziel Fehlerentdeckung in der Systemspezifikation Vorgehensweise 1. Modellierung des Systems durch endlichen Automaten 2. Formulierung der Anforderungen, die das System erfüllen muss, durch logische Formeln 3. Automatisches Beweisen, dass das System die Anforderung erfüllt oder nicht erfüllt
Model Checking Ziel Fehlerentdeckung in der Systemspezifikation Vorgehensweise 1. Modellierung des Systems durch endlichen Automaten 2. Formulierung der Anforderungen, die das System erfüllen muss, durch logische Formeln 3. Automatisches Beweisen, dass das System die Anforderung erfüllt oder nicht erfüllt
Model Checking im Praktikum Werkzeug NuSMV http://nusmv.irst.itc.it Formalismus Computational Tree Logic (CTL)
Computational Tree Logic Idee Betrachte Modell eines Systems:
Computational Tree Logic Idee Frage Gibt es einen Übergangspfad aus dem Startzustand in den Zustand C? Formal Ist die CTL-Formel S = EF (a = 1 b = 1) wahr?
Syntax von CTL Atomare CTL-Formeln Definition Sei A eine endliche Menge von Aussagen. Falls A A, dann ist A eine CTL-Formel.
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Syntax von CTL Zusammengesetzte CTL-Formeln Definition Falls F 1 und F 2 CTL-Formeln sind, dann sind folgende Wörter ebenfalls CTL-Formeln: F 1 F 1 F 2 AXF 1 EXF 1 A[F 1 U F 2 ] E[F 1 U F 2 ]
Interpretation von CTL Interpretation der CTL-Formeln CTL-Formeln werden durch CTL-Strukturen interpretiert. Definition Eine CTL-Struktur ist ein Tripel (S, R, P), mit S endliche Zustandsmenge R S S totale Übergangsrelation P : S 2 A ordnet jedem Zustand z S alle in z wahren Aussagen zu.
Interpretation von CTL Atomare CTL-Formeln Definition A A ist wahr im Zustand s S, genau dann wenn A P(s). Schreibweise: s = A.
Interpretation von CTL Zusammengesetzte CTL-Formeln Definition Für s S und CTL-Formeln F 1 und F 2 definiert man: s = F 1 gdw. F 1 in s nicht wahr ist s = F 1 F 2 gdw. F 1 und F 2 in s wahr sind s = AXF 1 gdw. F 1 in allen direkten Nachfolgern von s wahr ist s = EXF 1 gdw. F 1 in einem direkten Nachfolger von s wahr ist
Interpretation von CTL Zusammengesetzte CTL-Formeln Definition Für s S und CTL-Formeln F 1 und F 2 definiert man: s = F 1 gdw. F 1 in s nicht wahr ist s = F 1 F 2 gdw. F 1 und F 2 in s wahr sind s = AXF 1 gdw. F 1 in allen direkten Nachfolgern von s wahr ist s = EXF 1 gdw. F 1 in einem direkten Nachfolger von s wahr ist
Interpretation von CTL Zusammengesetzte CTL-Formeln Definition Für s S und CTL-Formeln F 1 und F 2 definiert man: s = F 1 gdw. F 1 in s nicht wahr ist s = F 1 F 2 gdw. F 1 und F 2 in s wahr sind s = AXF 1 gdw. F 1 in allen direkten Nachfolgern von s wahr ist s = EXF 1 gdw. F 1 in einem direkten Nachfolger von s wahr ist
Interpretation von CTL Zusammengesetzte CTL-Formeln Definition Für s S und CTL-Formeln F 1 und F 2 definiert man: s = F 1 gdw. F 1 in s nicht wahr ist s = F 1 F 2 gdw. F 1 und F 2 in s wahr sind s = AXF 1 gdw. F 1 in allen direkten Nachfolgern von s wahr ist s = EXF 1 gdw. F 1 in einem direkten Nachfolger von s wahr ist
Interpretation von CTL Zusammengesetzte CTL-Formeln Definition s = AF 1 U F 2 gdw. für alle Pfade (z 0 = s, z 1, z 2,...) gilt: Es existiert ein i 0 mit z i = F 2 und z j = F 1 für alle j i. Definition s = EF 1 U F 2 gdw. es gibt einen Pfad (z 0 = s, z 1, z 2,...) für den gilt: Es existiert ein i 0 mit z i = F 2 und z j = F 1 für alle j i.
Interpretation von CTL Zusammengesetzte CTL-Formeln Definition s = AF 1 U F 2 gdw. für alle Pfade (z 0 = s, z 1, z 2,...) gilt: Es existiert ein i 0 mit z i = F 2 und z j = F 1 für alle j i. Definition s = EF 1 U F 2 gdw. es gibt einen Pfad (z 0 = s, z 1, z 2,...) für den gilt: Es existiert ein i 0 mit z i = F 2 und z j = F 1 für alle j i.
Interpretation von CTL Abkürzungen für CTL-Formeln AFF A[True U F ] F ist unvermeidbar EFF E[True U F ] F ist möglich AGF EF F Auf allen Pfaden, die im aktuellen Zustand starten, ist F in jedem Zustand des Pfades wahr. EGF AF F Es ex. ein Pfad, der im aktuellen Zustand startet, so dass F in jedem Zustand des Pfades wahr ist.
Zusammenfassung Grafische Veranschaulichung der CTL-Formeln EGF EXF EFF E[F 1 U F 2 ] AGF AXF AFF A[F 1 U F 2 ]
Zusammenfassung Das Model-Checking-Problem Gegeben CTL-Struktur, Zustand s und CTL-Formel F. Gesucht Gilt s = F?
Zusammenfassung Das Model-Checking-Problem Gegeben CTL-Struktur, Zustand s und CTL-Formel F. Gesucht Gilt s = F?
Model Checking mit NuSMV NuSMV erlaubt: die Formulierung einer CTL-Struktur die Simulation von Zustandsübergängen in der CTL- Struktur Model Checking (Lebendigkeit, Deadlocks,... )
Das NuSMV-Modell Das NuSMV-Modell besteht aus benannten Modulen; eins davon muss main heißen. Innerhalb von Modulen kann man Variablen deklarieren, ihnen einen Initialwert zuweisen und ihren Wert im sog. nächsten Schritt definieren. Variablen haben endlichen Definitionsbereich
Das NuSMV-Modell Der Zustandsraum von CTL-Strukturen Module werden instanziiert. Alle Modulinstanzen zusammen definieren den Zustandsraum einer CTL-Struktur: S = D xa D ya D xb... wobei D xa der Definitionsbereich der Variablen x in der Modulinstanz a ist.
Das NuSMV-Modell Die Übergangsrelation von CTL-Strukturen Die Instanziierungsart der Module definiert die Übergangsrelation der CTL-Struktur. Zwei Arten von Modulinstanziierungen: synchron Der nächste Zustand wird definiert, indem alle Variablen aller Modulinstanzen auf ihren Wert im nächsten Schritt gesetzt werden. asynchron Der nächste Zustand wird definiert, indem alle Variablen genau einer Instanz auf ihren Wert im nächsten Schritt gesetzt werden.
Beispiel MODULE main VAR semaphore : { red, red_yellow, green, yellow } INIT semaphore = red ; ASSIGN next ( semaphore ) := case semaphore = red : red_yellow ; semaphore = red_yellow : green ; semaphore = green : yellow ; semaphore = yellow : red ; esac ;
Model Checking Spezifikation von Anforderungen durch CTL-Formeln: SPEC AG ( ( semaphore = green > AF semaphore = red ) & ( semaphore = red > AF semaphore = green ) ) ; SPEC AG AF semaphore = green ;