Protokoll-Spezifikationen Steven Müller 1. Einleitung 2. Protokolle 3. Kompatibilität von Protokollen 4. Subprotokolle 5. Realisierung 6. Zusammenfassung
1. Einleitung Worum geht es in diesem Vortrag? - Quelle: Artikel von Yellin und Strom aus ACM Transactions on Programming Languages and Systems, Vol. 19, No. 2, March 1997 - Erleichterung der Komposition von Komponenten Was ist eine Komponente? - SW-Einheit, die Aufgaben zur Verfügung stellt
1. Einleitung (Forts.) Wie arbeiten Komponenten zusammen? - Kommunikation über Schnittstellen - Nachrichtenübermittlung Wie sind Komponenten spezifiziert? - Menge von aufrufbaren Prozeduren - Bsp. Java-Methode: public static int method(int param){ int ret; [Anweisung 1 n] return ret; }
1. Einleitung (Forts.) Warum sind diese Lösungen unzureichend? - fehlende Dokumentation von Nachrichtenreihenfolge von einer Komponenten - Komponenten können Nachrichten (beliebig) verschicken Deadlock-Risiko - separat definierte Schnittstellen Dokumentation von Nachrichtenreihenfolge schwer ersichtlich Protokoll -Konzept wird eingeführt
1. Einleitung (Forts.) Welche Vorteile bringt das Protokoll -Konzept? 1. Beschreibung der sendbaren und auch der empfangbaren Nachrichten für eine Komponente 2. Erschaffung einer simplen Semantik zur einfachen Überprüfung auf Protokoll-Kompatibilität 3. Implementationsmöglichkeit für viele Sprachen und Umgebungen
2. Protokolle 2.1. Aufbau eines Protokolls 2.2. Semantik eines Protokolls
2.1. Aufbau eines Protokolls (1) Schnittstellensignatur Menge von verschickbaren Nachrichten Parametertypen, Sende-/Empfangsnachricht (2) Protokoll Abfolge-Beschränkungen Übergänge von der Form <Zustand>:<Richtung><Nachricht> <Zustand> definiert Endlichen Automaten
2.1. Aufbau eines Protokolls (Forts.) Beispiel: Auktionär-Automat
2.1. Aufbau eines Protokolls (Forts.) Besonderheiten des Endlichen Automats: End-Zustände vs. nicht-terminierend Sende-, Empfangs- und Misch-Zustände Lebendigkeitsannahme: Nachrichten werden, wenn möglich, immer verschickt
2.2. Semantik eines Protokolls Prinzip der synchronen Nachrichtenübermittlung: - Senden und Empfangen atomare Aktion - einfaches Verständnis des Systems - Synchronität muss nicht zwingend atomar sein Ausführungspfad (Nachrichtenreihenfolge) muss stimmen
2.2. Semantik eines Protokolls (Forts.) Alternative: asynchrone Nachrichtenübermittlung: - Komponenten senden immer Nachrichten, wenn möglich - jede Komponente hat eine Warteschlange für ankommende Nachrichten - Protokoll-Integration schwierig Standard: synchrone Nachrichtenübermittlung
3. Kompatibilität von Protokollen Wann arbeiten 2 Protokolle korrekt zusammen? Kollaborations-Zustand = Zustandspaar mit jeweils 1 Zustand der beteiligten Komponenten, z.b. <1,A> Kollaborations-Geschichte = korrekte (unendliche) Folge von Kollaborations- Zuständen, z.b. <1,A> w <2,B>...
3. Kompatibilität von Protokollen unspezifizierter Empfang = kein Kollaborations-Zustand für nächste Nachrichtenübermittlung deadlockfrei = Kollaborations-Geschichte endet mit End-Zuständen oder kann immer weiter fortfahren kompatibel = kein unspezifizierter Empfang und deadlockfrei
4. Subprotokolle Wie kann man Protokolle erweitern ohne die Kompatibilität einzuschränken? Wie erhält man ein korrektes Subprotokoll? Anfangs-Zustand von Subund Originalprotokoll ist derselbe jeder End-Zustand im Originalprotokoll ist ein End- Zustand im Subprotokoll
4. Subprotokolle (Forts.) Wie erhält man ein korrektes Subprotokoll? man fügt zum Originalprotokoll hinzu: (1) eine Menge von neuen Zuständen (2) eine Menge von neuen Empfangs-Übergängen (3) eine Menge von neuen Sende-Übergängen wobei jeder neue Sende-Übergang einem neuen Zustand im Subprotokoll entspringt! Kompatibilität wird bei Einhaltung dieser Regeln nicht beeinträchtigt
4. Subprotokolle (Forts.) Vorteile von Subprotokollen: Originalprotokoll P kompatibel zu Protokoll P' Subprotokolel von P auch kompatibel zu P' Subprotokolle von Originalprotokoll und Subprotokolle von invertiertem Originalprotokoll sind auch kompatibel
5. Realisierung synchrone vs. asynchrone Nachrichtenübertragung sofortiger Aufruf vs. Warteschlangen-Verwaltung passive vs. aktive Komponenten - unterschiedliche Thread-Verwendung pessimistischer vs. optimistischer Entscheider - Entscheider regelt Nachrichtenverkehr
6. Zusammenfassung System von Yellin und Strom bringt folgende Vorteile: 1. Spezifikation eines abstrakten Protokolls zur Komposition von Komponenten 2. Erleichterung bei der Überprüfung auf Kompatibilität 3. Dokumentation über Reihenfolgeneinschränkungen 4. Zusammenhänge der Schnittstellennutzung ersichtlich
6. Zusammenfassung (Forts.) Hauptziel aus der Einleitung: Erleichterung der Komposition von Komponenten Bonus: Ziel wird auch erreicht, wenn zusammen gehörende Schnittstellen isoliert voneinander entwickelt werden.