Modellierung und Analyse mittels FSPs Übersicht- Wiederholung Analysevefahren am Beispiel Wechselseitiger Ausschluß Beispielproblem: Interferenz von Prozessen und wechselseitiger Ausschluß (mutual exclusion). Modellierung: FSP Modell II Analyse: Testen Komposition mit Fehlerdetektionsprozeß Zustandsraumexploration Minimierung Analyse von nebenläufigen Prozessen 1 Analyse von nebenläufigen Prozessen 2 Zustandsraumexploration - Eigenschaften ermitteln Fehlersuche mittels erschöpfender Suche Welche Eigenschaften sind erkennbar? z Erreichbarkeit von Zuständen mit besonderen Eigenschaften z Durchführbarkeit von Abläufen, Sequenzen von Aktionen Wie lassen sich Eigenschaften beschreiben & erkennen ? z Spezielle Zustände als Teilmenge des Zustandsraum leicht charakterisierbar, Erkennung entspricht Existenztest im Zustandsraum z Beschreibung von Abläufen oder Zuständen durch zusätzliches beobachtendes Teilmodell, das ggfs Deadlock/ERROR bewirkt. Impliziert Transformation des Modells und Existenztest bzgl spezieller Zustände im LTS z Eigenschaftsbeschreibung durch eigene Sprache (Modale Logik) und Evaluation am LTS durch spezielle Verfahren (Graphalgorithmen) Für Benutzerinteraktion wichtig: z Angabe eines Zeugen, falls eine Eigenschaft vorliegt z Angabe eines Gegenbeispiels, falls eine Eigenschaft nicht gilt Das Modell wird mit einem TEST Prozeß komponiert, der die Summe der Ankünfte mit dem angezeigten Wert vergleicht: Analyse von nebenläufigen Prozessen TEST = TEST[0], TEST[v:T] = (when (v<N){east.arrive,west.arrive}->TEST[v+1] |end->CHECK[v] ), CHECK[v:T] = Wie STOP, nur (display.value.read[u:T] -> ERROR ist ein (when (u==v) right -> TEST[v] vordefinierter FSP |when (u!=v) wrong -> ERROR Prozeß mit fester ) Zustandsnummer -1 )+{display.VarAlpha}. im LTS. 3 Ornamental Garden Modell - Fehlersuche Analyse von nebenläufigen Prozessen 4 Interferenz und wechselseitiger Ausschluß ||TESTGARDEN = (GARDEN || TEST). Mit LTSA erschöpfende Suche nach ERROR. Trace zum Fehlerfall in TEST: go east.arrive east.value.read.0 west.arrive west.value.read.0 east.value.write.1 west.value.write.1 end display.value.read.1 wrong Analyse von nebenläufigen Prozessen Ein destruktives Update, das durch beliebiges Interleaving aus Lese- und Schreiboperationen erzeugt wird, heißt Interferenz. LTSA produziert den kürzesten Pfad zum ERROR Zustand. BFS oder DFS? 5 Fehler durch Interferenz sind schwer zu lokalisieren. Generelle Lösung: Methoden dürfen nur im wechselseitigen Ausschluß auf geteilte Objekte zugreifen. Wechselseitiger Ausschluß kann durch atomare Aktionen modelliert werden. (klassisches Thema in Vorlesung Betriebssysteme) Analyse von nebenläufigen Prozessen 6 Wechselseitiger Ausschluß im Beispielproblem Modelierung eines wechselseitigen Ausschlusses Wir definieren einen LOCK Prozeß, komponieren in mit Prozeß VAR und modifizieren das Alphabet: LOCK = (acquire->release->LOCK). ||LOCKVAR = (LOCK || VAR). set VarAlpha = {value.{read[T],write[T], acquire, release}} Wir ergänzen TURNSTILE um die Belegung/Freigabe des Locks: Java kann mit jedem Objekt einen lock assoziieren (synchronized). Bei Aufruf einer Methode wird zusätzlicher Code zur Belegung (Aquire, vor Ausführung) und Freigabe (Release nach Ausführung und vor Return) des Locks durchlaufen. Nebenläufige Prozesse müssen ggfs bei Belegung zunächst auf Freigabe des Locks warten. Analyse von nebenläufigen Prozessen 7 Verbessertes Ornamental Garden Modell - Fehlersuche Animation eines Beispiel Traces TURNSTILE = (go -> RUN), RUN = (arrive-> INCREMENT |end -> TURNSTILE), INCREMENT = (value.acquire -> value.read[x:T]->value.write[x+1] -> value.release->RUN )+VarAlpha. Analyse von nebenläufigen Prozessen 8 Zusammenfassung go east.arrive east.value.acquire east.value.read.0 east.value.write.1 east.value.release west.arrive west.value.acquire west.value.read.1 west.value.write.2 west.value.release end display.value.read.2 right Konzepte z Prozeß Interferenz z Wechselseitiger Ausschluß Modellierung und Analyse mit FSPs z Komposition mit TEST Prozeß, somit Abbildung des Fehlers auf Deadlock z Erschöpfende Suche z Allgemeiner: Zustandsraumexploration z Minimierung mittels Bisimulation Mittels TEST und LTSA erschöpfende Suche: Analyse von nebenläufigen Prozessen Ist TEST erfüllt? 9 COUNTER: Abstraktion mittels Action Hiding const N = 4 range T = 0..N Analyse von nebenläufigen Prozessen 10 COUNTER: Abstraktion mittels Action Hiding Um geteilte Objekte direkt durch die synchronisierten Aktionen zu modellieren, verwenden wir Hiding. VAR = VAR[0], SyncCounter verbirgt VAR[u:T] = ( read[u]->VAR[u] read, write, acquire und | write[v:T]->VAR[v]). release Aktionen. LOCK = (acquire->release->LOCK). Minimiertes LTS: increment 0 increment 1 increment 2 increment 3 4 Es existiert eine abstraktere, einfachere Beschreibung eines COUNTER Prozesses mit gleichem LTS: COUNTER = COUNTER[0] COUNTER[v:T] = (when (v<N) increment -> COUNTER[v+1]). INCREMENT = (acquire->read[x:T] -> (when (x<N) write[x+1] ->release->increment->INCREMENT ) )+{read[T],write[T]}. Beide zeigen ein “äquivalentes” Verhalten in dem Sinne, daß ein Beobachter keinen Unterschied feststellen kann. ||COUNTER = (INCREMENT||LOCK||VAR)@{increment}. Analyse von nebenläufigen Prozessen 11 Analyse von nebenläufigen Prozessen 12 Wann sind zwei Prozesse äquivalent ? Welche Prozesse sind sinnvollerweise äquivalent? Wenn es eine bijektive Abbildung zwischen Zuständen gibt, so daß die Zustandsbeschreibungen syntaktisch gleich sind? z Impliziert gleiche Übergänge wg Ableitungsregeln z Sehr strenge Anforderung, keine Minimierung möglich z daher nicht weiter betrachtet Wenn LTS jeweils isomorph sind? Wenn ein Beobachter keine Unterschiede des Verhaltens feststellen kann? z Führt zu weiteren Detailfragen 1. Versuch: P und Q äquivalent falls für alle Folgen von * Transitionsbezeichnern t ∈ Act gilt: t P⎯ ⎯→ Problem: in einer Umgebung in der b nach a verlangt wird, könnte Q einen Deadlock haben, P dagegen nicht. Welche Aktionen kann ein Beobachter beobachten, i.w. Tau-Operationen relevant oder nicht. Anforderungen an Genauigkeit der Beobachtung, d.h. was sind Unterschiede? Z.B sollen Deadlocks erkennbar sein?! Sollen äquivalente Prozesse sich auch durch Komposition, Hiding, Relabeling, Choice nicht unterscheiden lassen (Kongruenz) ? Analyse von nebenläufigen Prozessen P 13 Welche Prozesse sind sinnvollerweise äquivalent? b a Q a b Q b a a Analyse von nebenläufigen Prozessen 14 3. Versuch (informal): P und Q äquivalent gdw für alle Transitionsbezeichner a gilt: falls P einen Übergang mit a zu P´aufweist, dann existiert in Q ein Übergang mit a zu einem Q´, so daß P´ und Q´ äquivalent sind, und umgekehrt. Problem: zu restriktiv, untenstehende Prozesse sollten als äquivalent angesehen werden. a a Welche Prozesse sind sinnvollerweise äquivalent? 2. Versuch: P und Q äquivalent falls zugehörige LTS isomorph P t Q⎯ ⎯→ gdw b Diese Version ist R. Milners starke Bisimulation, bei Magee&Kramer starke semantische Äquivalenz. b Starke Äquivalenz betrachtet alle Transitionsbezeichner gleichermaßen, auch τ b Starke Äquivalenz ist eine Kongruenz bzgl Komposition, Relabeling und Hiding. Starke Äquivalenz bietet wenig Spielraum für Minimierung. Analyse von nebenläufigen Prozessen 15 Starke semantische Äquivalenz gleiches Alphabet, eindeutiger ERROR Zustand, wechselseitiges Simulieren bei äquivalenten Nachfolgezuständen P⎯ ⎯→ P´ impliziert ∃Q´, Q ⎯ ⎯→ Q´ und ( P´, Q´) ∈ R a a Q⎯ ⎯→ Q´ impliziert ∃P´, P ⎯ ⎯→ P´ und ( P´, Q´) ∈ R a Analyse von nebenläufigen Prozessen a 16 Beispiel für starke semantische Äquivalenz Definition: Sei℘ die Menge aller LTS. Starke semantische Äquivalenz „~“ ist die Vereinigung aller Relationen R ⊆ ℘×℘ , die die folgende Anforderung erfüllen: falls ( P, Q ) ∈ R dann gilt: 1. αP = αQ 2. P = Π gdw Q = Π 3. ∀a ∈ Act : Analyse von nebenläufigen Prozessen P a b Q a a b b P = (a->b->STOP). Q = (a->B | a-> C), B = (b->STOP), C = (b->STOP| b->STOP) . Sind folgende Prozesse stark äquivalent? X = (x->Y), Y = (y->X)\{y}. 17 b Analyse von nebenläufigen Prozessen Z = Q /{x/a}\{b} 18 Äquivalenztest für Prozesse Vorüberlegungen Unter Verwendung zugehöriger LTS Betrachte Vereinigung beider LTS ( S P ∪ S Q , S 0 P ∪ S 0Q , AP ∪ AQ , ∆ P ∪ ∆ Q , X P ∪ X Q , p) z berechne gröbste Partition bzgl „~“ mittels Partition Refinement Welche Anforderungen stellt Äquivalenz an Partition? Für einen Block X gilt: Algorithmus (Paige/Tarjan 1987) z falls die initialen Zustände aus beiden LTS im gleichen Block liegen, sind {S 0 P , S 0Q } ⊆ B die Prozesse äquivalent i.S. von „~“ Beobachtung: Äquivalenz entspricht Äquivalenzrelation auf S • reflexiv, symmetrisch, transitiv • Äquivalenzklassen entsprechen Blöcken einer Partition • Jedes x aus X hat Übergänge mit gleichen Transitionsbezeichnern • Wenn ein x aus X einen Übergang mit Bezeichner t in ein y aus einer Teilmenge Y hat, so muss jedes Element aus X einen t-Nachfolger in Y haben. Trivial: feinste Partition mit einelementigen Mengen erfüllt Anforderung! Triviale Partition P = {S} erfüllt Anforderungen i.d.R. nicht. Analyse von nebenläufigen Prozessen 19 Zentrale Operation a-split(a,X,P) Analyse von nebenläufigen Prozessen Zentrale Operation split(X,P) Sei X Teilmenge von S, P eine Partition von S und B Element aus P, a ein Transitionsbezeichner aus A. Sei X Teilmenge von S, P eine Partition von S und B Element aus P, a ein Transitionsbezeichner aus A. a-split(a,X,P) ist eine Operation, die eine Verfeinerung von P liefert, ggfs jeden Block B aus P durch zwei disjunkte Blöcke B´und B´´ ersetzt split(X,P) ist eine Operation, • die eine Verfeinerung von P liefert, • die für jeden Transitionsbezeichner a eine Operation a-split(a,X,P) durchführt B´= B ∩ ∆−a1 ( X ) 20 B´´= B \ B´ Dadurch werden neue Blöcke B´,B´´ bzgl X stabil. X heißt Splitter. Einfache Wahl von X: beliebiger Block C. (völlig ausreichend) mögliche Verbesserung: Vereinigung von Blöcken. Analyse von nebenläufigen Prozessen Definition: Sei B ⊆ S , X ⊆ S −1 −1 Block B ist stabil bzgl X falls B ⊆ ∆ ( X ) oder B ∩ ∆ ( X ) = {} Eine Partition ist stabil bzgl X falls alle Blöcke stabil bzgl X sind. Partition P ist stabil, wenn sie stabil bzgl aller Blöcke ist. 21 Beispiel split(X,P) für nur einen Bezeichner a X Analyse von nebenläufigen Prozessen 22 Eigenschaften von split(X,P) X B´ B´ Stabilität bleibt bei Verfeinerung erhalten („Vererbung“) z falls R eine Verfeinerung von P ist und P stabil bzgl X ist, so ist dies auch R Stabilität bleibt bei Vereinigung erhalten B´´ B´´ z falls eine Partition stabil bzgl X und Y ist, so ist sie dies auch bzgl X ∪ Y Funktion split(X,P) ist monoton bzgl des zweiten Argumentes C´´ z falls Q Verfeinerung von P, dann ist split(X,Q) Verfeinerung von split(X,P) C´´ C´ Funktion split(X,P) ist kommutativ C´ Resultierende Partition ist stabil bzgl X weil alle Blöcke aus dem Vorbereich von X nur Elemente haben, die mit einer Kante X erreichen. Analyse von nebenläufigen Prozessen 23 z Die gröbste Partition von P, die stabil bzgl X und Y (aus S) ist, ist split( X, split(Y,P)) = split( Y, split(X,P)) Analyse von nebenläufigen Prozessen 24 Berechnung einer gröbsten Partition Ziel erreicht: Äquivalenztest für Prozesse Vorgehen: • initiale Partition P ={S} • bilde Extrablock für Deadlock Zustände (nicht weiter berücksichtigt) • while ( P nicht stabil) • Finde Splitter X aus der Vereinigung von Blocks in P • Ersetze P durch split(X,P). Betrachte Vereinigung beider LTS ( S P ∪ S Q , S 0 P ∪ S 0Q , AP ∪ AQ , ∆ P ∪ ∆ Q , X P ∪ X Q , p) z berechne gröbste Partition bzgl „~“ mittels Partition Refinement Algorithmus (Paige/Tarjan 1987) • Auswahl eines Splitters: • nur 1 Block völlig ausreichend • Kandidatenmenge, in die neu erzeugte Blocks jeweils aufgenommen werden Theoretisch effizientere Version nach Paige/Tarjan 1987: • intelligentere Art Splitter zu ermitteln • verwendet zwei Partitionen, verwendet „kleinere Hälfte“ • Laufzeit O (| ∆ | log | S |) Analyse von nebenläufigen Prozessen 25 Weiteres Ziel erreicht: Minimierung für Prozesse z falls die initialen Zustände aus beiden LTS im gleichen Block liegen, sind {S 0 P , S 0Q } ⊆ B die Prozesse äquivalent i.S. von „~“ Analyse von nebenläufigen Prozessen 26 Schwache semantische Äquivalenz a aτ Bezeichne P ⇒ P´ die Übergangsfolge P ⎯τ⎯ ⎯→ P´ Mit beliebig vielen (auch 0) Tau-Übergängen. Definition: Sei℘ die Menge aller LTS, ε die leere Sequenz. Schwache semantische Äquivalenz „ ≈“ ist die Vereinigung aller Relationen R ⊆ ℘×℘ , die die folgende Anforderung erfüllen: falls ( P, Q ) ∈ R dann gilt: Betrachte LTS des Prozesses z berechne gröbste, stabile Partition bzgl „~“ mittels Partition Refinement Algorithmus (z.B. Paige/Tarjan 1987) z betrachte Quotienten, d.h. definiere neues (minimales) LTS ein Zustand entspricht einer Äquivalenzklasse(Block) im Ursprungs-LTS Zustandsübergänge falls im Ursprungs-LTS entsprechende Übergänge Mehrfachübergänge werden nur einmal betrachtet (Relation) 3. Klasse mit Anfangszustand im Original-LTS wird initialer Zustand ∀a ∈ ( Act \ {τ }) ∪ {ε } : a P ⇒ P´ impliziert a Q ⇒ Q´ impliziert 27 Beispiel für schwache semantische Äquivalenz B a b D A b C a b ≈ b a ∃P´, P ⇒ P´ und ( P´, Q´) ∈ R und ( P´, Q´) ∈ R Analyse von nebenläufigen Prozessen Sei D Übergangsmatrix zu Relation 28 ∆ mit D = ∑ D a Berechne transitiven Abschluß auf Dτ* = I + Dτ a∈ A z Warshall in O (| S |3 ) Ersetze Übergangsmatrizen für einzelne Labels D a ´= Dτ D a Dτ * C a τ ∃Q´, Q ⇒ Q´ Algorithmus für schwache semantische Äquivalenz B A a a * gleiches Alphabet, eindeutiger ERROR Zustand, wechselseitiges Simulieren bei äquivalenten Nachfolgezuständen 1. αP = αQ 2. P = Π gdw Q = Π existieren Analyse von nebenläufigen Prozessen * Berechne maximale Partition mit Partition refinement auf * D´= ∑ D a ´ a∈ A P ≈τ− > P a P b Analyse von nebenläufigen Prozessen ≈ a Q τ Bemerkung: gleiches Vorgehen läßt sich formal unterschiedlich notieren a) mit gerichteten Graphen, b) mit Relationen, c) mit Matrizen b 29 Analyse von nebenläufigen Prozessen 30 Kongruenz Weitere Äquivalenzen Weak Observational Congruence z wesentliches Resultat bei R. Milner z Ergänzung zu schwacher Bisimulation Starke und schwache semantische Äquivalenz sind eine Kongruenz bzgl Komposition, Hiding und Relabeling. (Problem ist Choice!) D.h. äquivalente Teilmodelle sind austauschbar, • sofern sie in einem Gesamtmodell verwendet werden, • das aus der (im wesentlichen) Komposition von Teilmodellen erstellt wird, • ohne daß ein unterschiedliches Verhalten im Sinne einer starken/schwachen Äquivalenz festgestellt werden kann. Übergänge dürfen bei Simulation nur um Tau-Übergänge ergänzt werden es werden nur direkte Übergänge betrachtet (keine Sequenzen) Nachfolgezustände müssen nur schwach bisimulativ sein Implikation für Divide&Conquer Strategie zur Analyse: Für ein Modell aus Prozessen mit Komposition, berechne für jeden Prozeß einzeln einen minimalen äquivalenten Prozeß, ersetze Prozesse durch minimale Prozesse, minimiere gemäß Schachtelung aus Komposition,Hiding,Relabeling komponierte Prozesse. Analyse von nebenläufigen Prozessen 31 Zusammenfassung Interne Tau-Operationen durch Hiding z Potential zur Vereinfachung, zur Abstraktion, zur Kapselung Unterschiedliche Definitionsmöglichkeiten von „Äquivalenz“ z Starke semantische Äquivalenz, starke Bisimulation z Schwache semantische Äquivalenz, schwache (Beobachtungs-) Äquivalenz Kongruenz - Ersetzbarkeit/Einsetzbarkeit von äquivalenten Teilmodellen Minimierung eines LTS durch Äquivalenzklassenbestimmung z Partition Refinement ausgehend von trivialer Partition für LTS Äquivalenztest für zwei LTS z Vereinigung beider LTS, Äquivalenzklassenbestimmung, initiale Zustände müssen in einer Klasse liegen Partition Refinement Algorithmus z Schrittweise Verfeinerung einer Partition, Ziel: stabile Partition Transitiver Abschluß, Erweiterung des LTS um Tau-Sequenzen Analyse von nebenläufigen Prozessen 33 Trace Equivalence z Gleichheit erzeugter Sequenzen von Transitionsbezeichnern z Klassisch in Automatentheorie z Problem sind Deadlocks! Failure Equivalence z kann Deadlocks unterscheiden, liegt zwischen Weak Bisimulation und Trace Equivalence ... Analyse von nebenläufigen Prozessen 32