Foundations of Systems Development Vergleich und Zusammenfassung Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer WS 2007/08
2 Ziele Wichtige Aspekte von algebraischen Spezikationen Termersetzungssystemen Prozessalgebra Temporaler Logik zusammenfassen. Maude, CCS und TLA am Beispiel der Uhr vergleichen.
1. Algebraische Spezifikation der Uhr in Maude Ein algebraische Spezifikation des Datentyps der Uhr in Maude: fmod CLOCK is protecting NAT. sort State. op init : -> State [ctor]. op tick : State -> State [ctor]. op hr : State -> Nat. op min : State -> Nat. var s : State. eq min(init) = 0. eq min(tick(s)) = if min(s) < 59 then min(s) + 1 else 0 fi. eq hr(init) = 0. eq hr(tick(s)) = if min(s) < 59 then hr(s) else if hr(s) < 23 then hr(s) + 1 else 0 fi fi. endfm 3 Jeder Zustand hat die Form: tick( tick(init) ) M-mal Strukturelle Rekursion über init und tick
1. Algebraische Spezifikation 4 Algebraische Spezifikationen dienen zur formalen Modellierung von Datentypen (Domainmodell) und von funktionalen Eigenschaften. Eine algebraische Spezifikation (Σ, E) besteht aus einer Signatur Σ zur Angabe der Datentypen und Operationen einer Schnittstelle einer Menge E von Σ-Formeln zur Spezifikation der Eigenschaften der Operationen von Σ ; meist schränkt man sich auf Gleichungen oder bedingte Gleichungen ein. Durch Konstruktoren zeichnet man die Menge der Datenelemente aus; in zustandsbasierten Systemen beschreibt man mit Konstruktoren die Menge der möglichen Zustände. Beziehungen zwischen den Konstruktoren beschreibt man durch Gleichungen; typische Beziehungen sind Kommutativität, Assoziativität, neutrales Element, Idempotenz und Distributivität.
1. Algebraische Spezifikation 5 Nichtkonstruktor-Operationen definiert man typischerweise (wie in funktionalen Sprachen) mittels struktureller Rekursion über den Konstruktoren. Die Sprache Maude unterstützt die Implementierung und Simulation von ordnungssortierten Gleichungsspezifikationen.
6 1. Testen der algebraischen Spezifikation der Uhr in Maude Hilfsfunktion zum Generieren des Zustands gentick(s, M) generiert den Zustand nach M ticks : op gentick : State Nat -> State. var S : State. var M : Nat. eq gentick(s, 0) = S. eq gentick(s, s M) = tick(gentick(s, M)). Testbeispiele Beobachtung des Zustands nach 112 ticks ) reduce in CLOCK : min(gentick(init, 112)). rewrites: 561 in 9287ms cpu (4ms real) (60 rewrites/second) result NzNat: 52 ========================================== reduce in CLOCK : hr(gentick(init, 112)). rewrites: 25377 in 3148026001ms cpu (244ms real) (0 rewrites/second) result NzNat: 1
7 2. Termersetzungssystem für die Uhr in Maude mod CLOCK-MACHINE is protecting NAT. including CONFIGURATION. op CLOCK : -> Cid. op min :_ : Nat -> Attribute. op hr :_ : Nat -> Attribute. op tick : -> Msg. var C : Oid. vars M M1 H H1 : Nat. crl [tick] : tick < C : CLOCK hr : H, min : M > => < C : CLOCK hr : H1, min : M1 > if M1 := (if M < 59 then M + 1 else 0 fi ) /\ H1 := (if M < 59 then H else if H < 23 then H + 1 else 0 fi fi). Gleichungsspezifikation: Beschreibt den Zustandsraum als Multimenge von Nachrichten (Msg) und Objekten <c: ClassName attribute : value > Termersetzungsregel konsumiert die Nachricht tick endm Das Ersetzungssystem spezifiziert alle möglichen Zustandsübergange der Uhr.
8 2. Termersetzungssysteme Termersetzungssysteme werden eingesetzt zur operationellen Beschreibung von Datenstrukturen und zur operationellen Modellierung zustandsbasierter nebenläufiger Systeme. Rewriting Logic bildet eine mathematische wohldefinierte Grundlage zur Modellierung nebenläufiger verteilter Systeme, einschließlich objektorientierter Systeme. Dynamisches Verhalten und insbesondere nebenläufige Transitionen werden mittels Termersetzungsregeln (rewrite rules) definiert. Eine Rewrite Theory (Σ, E, R) besteht aus einer Gleichungspezifikation (Σ, E) der Zustandsmenge und der Grundoperationen sowie einer Menge R von Termersetzungsregeln der Form l: t -> t if cond Verteilte Konfigurationen werden durch Terme dargestellt, wobei die Verteilungsstruktur algebraisch durch die initialen Algebren einer Gleichungstheorie definiert wird.
9 2. Testen des Maude Termersetzungssystems der Uhr Hilfsfunktion zum Generieren von tick op gentick : Nat -> Configuration. eq gentick(0) = none. eq gentick(s M) = tick gentick(m). Testbeispiel rewrite in CLOCK-MACHINE : gentick(137) < C : CLOCK min : 10, hr : 7 >. rewrites: 827 in 9999749470ms cpu (23ms real) (0 rewrites/second) result Object: < C : CLOCK min : 27, hr : 9 >
10 3. Prozessalgebra Der Prozessalgebra-Ansatz dient zur Modellierung des dynamischen Verhaltens reaktiver (nebenläufiger, verteilter, mobiler) Systeme: Alles wird als Prozess aufgefasst: Die Grundoperatoren sind Konstruktoren zum Bilden von Prozessen. Der aktuelle Zustand eines Systems wird durch einen Prozess(term) beschrieben. Das Verhalten wird ebenfalls durch einen Prozess(term) (bzw. eine Menge kooperierender Prozesse) beschrieben. Systemevolution basiert auf Prozesstransformation: Ein Prozess führt eine Aktion durch und wird zu einem anderen Prozess. Die Semantik von Prozessen wird durch markierte Transitionssysteme beschrieben, die mittels strukturierter operationeller Semantik spezifiziert werden. Wichtige Prozesskalküle sind CCS (Calculus of Communicating Systems), CSP (Communicating Sequential Processes), ACP (Algebra of Communicating Processes), LOTOS (Language Of Temporal Ordering Specification) π-calculus
11 3. Uhr in CCS In value passing CCS wird eine einfache Uhr spezifiziert durch ein System von 3660 Prozessen; jeder dieser Prozesse ist mit einem Zeitpunkt (h,m) indiziert und gibt diesen auf dem Kanal tick aus. Zeit wird hier gesehen als logische Zeit : Immer wenn ein tick gesendet wird (bzw. mit tick interagiert wird), schreitet die Zeit voran. In value passing CCS spezifizieren wir die Menge aller möglichen (unendlichen) Abläufe der Uhr. Stottern ist nicht erlaubt.
Temporale Logik 4. Temporale Logik ist eine Erweiterung der mathematischen Logik um Aussagen, deren Wahrheitswert zu verschiedenen Zeitpunkten unterschiedlich sein kann Linear Temporal Logic LTL verwendet diskrete lineare Zeit und hat als grundlegende Operatoren next (X), always (G), sometime (F) und until. Model Checking von PLTL ist PSPACE-vollständig. Computational Tree Logic CTL* verwendet diskrete Zeit mit Bäumen zur Darstellung der möglichen Entwicklungen der Zukunft Hat zusätzliche Pfadquantoren für alle Pfade, es gibt einen Pfad. CTL beschränkt Quantoren auf Form EX φ, EF φ, E[φ until ψ], AX φ, Model Checking von PCTL ist polynomial (bzgl. Zeit). 12
13 4. TLA TLA (Temporal Logic of Actions) erweitert LTL um spezielle Formeln zur Beschreibung von Zustandsübergängen (Aktionen). Eine Aktionsformel hat typischerweise die Form [A] v ( Wenn sich eines der v ändert, wird die Aktion A ausgeführt ), wobei v eine Liste von flexiblen Variablen ist, die (globale) Zustandskomponenten repräsentieren. Eine Systemspezifikation hat i.a. die Form wobei Init die Menge der Anfangszustäde spezifiziert und Next eine Disjunktion von Aktionen und L eine Konjunktion von Fairnessbedingungen ist. Verfeinerung und Strukturierung werden in TLA durch logische Operatoren ausgedrückt: Verfeinerung entspricht der Implikation, parallele Komposition der Konjunktion und die Kapselung der Existenzquantifizierung über flexible Variable. Eine wesentliche Voraussetzung dafür ist die Stotterinvarianz von TLA-Formeln.
4. Uhr in TLA 14 TLA spezifiziert die Menge aller möglichen (unendlichen) Abläufe der Uhr. Dabei ist Stottern erlaubt!
15 Zusammenfassung der Beispiele: Maude, CCS, TLA Algebraische Spezifikation in Maude Spezifikation der möglichen Zustände der Uhr Ablesen der Zeit durch Beobachtungsfunktionen (min, hr) Verfeinerung als Wechsel der Datenstruktur Dynamisches Verhalten in Maude Spezifikation der Zustandsübergange der Uhr Testen endlicher Abläufe CCS Calculus of Communicating Systems Spezifikation eines Systems von Prozessen; jeder dieser Prozesse gibt einen Zeitpunkt auf dem Kanal tick aus. Spezifikation der unendlichen nicht-stotternden Abläufe der Uhr Prozessäquivalenz durch Bisimulation oder Trace-Äquivalenz (oder weitere Äquivalenzbegriffe) TLA Temporal Logic of Actions Spezifikation der Menge aller möglichen stotternden unendlichen Abläufe der Abläufe der Uhr Verfeinerung als Implikation
16 Vielen Dank für Ihre Aufmerksamkeit und Mitarbeit! Moritz Hammer, Axel Rauschmayer und ich wünschen Ihnen viel Erfolg in der Prüfung und eine angenehme vorlesungsfreie Zeit!