Hintergrund Kapitel Abbildungen Literatur Dialog

E    Beschreibung von Kommunikationsvorgängen

Einstieg Zur übersichtlichen Darstellung von Kommunikationsvorgängen zwischen technischen Geräten habe ich bisher kein geeignetes Werkzeug gefunden.In diesem Kapitel stelle ich deshalb eine Symbolik für solche Zwecke vor, die ich im übrigen Buch an mehreren Stellen verwende.
An einer Kommunikation sind immer mindestens zwei Partner beteiligt. Ihr Verhalten kann beschrieben werden durch Zustände, Zustandsübergänge (Transitionen), Aktivitäten, externe Ereignisse und durch gegenseitige Beeinflussung beim Austausch von Nachrichten.
Summary Until now I did not succeed in finding a convenient tool for describing or visualizing communication processes between technical equipment. In this chapter I am going to present a set of symbols for this purpose which is also applied to a number of instances throughout the book.
A single communication process always involves at least two participants. Their behaviour may be modelled by states, state transitions, activities, external events and mutual manipulation through exchanging information.

E.1   Verfügbare Hilfsmittel

Für die Beschreibung allgemeiner Objekte und ihres Verhaltens gibt es zahlreiche, genormte und ungenormte Diagrammtypen. Für die graphische Darstellung von Kommunikationsvorgängen sind die folgenden weit verbreitet, die ich mit ihren Vor- und Nachteilen kurz vorstellen möchte. Die CCITT-Darstellungen sind schon länger vereinheitlicht, viele ihrer Elemente sind in UML mit eingeflossen. Sie konnten jedoch bisher nicht vollständig abgelöst werden.

Norm Titel Inhalt
CCITT Z.100 SDL Specification and Description Language Zustände, Aktivitäten
CCITT Z.120 MSC Message Sequence Chart Nachrichtenaustausch
UML Zustandsdiagramm Zustände und Übergänge
UML Aktivitätsdiagramm Prozesse und Aktivitäten
UML Sequenzdiagramm Nachrichtenaustausch

E.1.1 SDL

Die Specification and Description Language, die in CCITT Z.100 standardisiert ist, wird zur zustandsorientierten Beschreibung von Kommunikationsvorgängen eingesetzt. Besonders beliebt ist sie auf dem Gebiet der Chipkartentechnik. Die Grundausstattung umfasst Symbole für Zustände, Aufgaben (Aktivitäten), Entscheidungen, Eingabe und Ausgabe (s. Abb. E-1 links unten). Durch die Art der Darstellung können auch relativ einfache Protokolle schnell unübersichtlich werden. Deshalb stellt SDL Methoden zur Zerlegung zur Verfügung und dafür Symbole für Start, Unterprogrammaufrufe, Marken, Start von Unterprogrammen u.ä. Die Symbole werden durch Ablauflinien verbunden, die immer von oben nach unten oder von links nach rechts laufen. Pfeile werden deshalb nicht verwendet.
Die Symbolik ist gut geeignet für kleinere Ausschnitte von Protokollen, weil sie hierfür Zustände und Aufgaben kombiniert darstellt. Sie ist weniger geeignet, um den Austausch von Nachrichten darzustellen, da hierfür nur Ein- und Ausgabesymbole verfügbar sind, deren Bezug zum Kommunikationspartner oft schwer nachvollziehbar ist.

E.1.2 MSC

Message Sequence Charts sind die Ergänzung zu SDL, wenn es darum geht, die Abfolge von ausgetauschten Befehlen und Nachrichten darzustellen. Um beide Aspekte (Zustände und Abläufe) dokumentieren zu können, braucht man also zwei Diagrammtypen, die nicht gut aufeinander abgestimmt sind. Die Symbolik ist in wesentlichen Teilen in die Sequenzdiagramme von UML übernommen worden. Sie besteht im wesentlichen aus rechteckigen Instanzen (Objekte, Protokolle...), die Messages in Form von Pfeilen zwischen ihren Lebenslinien austauschen (s. Abb. E-1 unten Mitte). Dazu kommen seltener verwendete Symbole für Zustände, Actions, Conditions und Timer. Eine Besonderheit stellt das "Environment" dar, ein Kasten, der das ganze Diagramm umgibt, und an dem alle externen Nachrichten und Ereignisse beginnen oder enden. Zustände und ihre Übergänge können weniger gut erfasst werden.

E.1.3 Zustandsdiagramm

Ein Zustandsdiagramm beschreibt alle möglichen Zustände, die ein bestimmtes Objekt annehmen kann, und wodurch Übergänge ausgelöst werden, die das Objekt von einem Zustand in einen anderen überführen. Während eines Zustands können Aktivitäten stattfinden, beim Übergang kann eine einzelne Aktion ausgeführt werden.
Die graphischen Anteile beschränken sich auf abgerundete Rechtecke für Zustände, die durch gerichtete Linien für die Übergänge verbunden werden (s. Abb. E-1 links oben). Alle anderen Elemente wie Typunterscheidung von Aktivitäten, Auslösebedingungen, Einschränkungen und Aktionen während eines Übergangs werden durch unterschiedlich markierte Texte dargestellt.
Zustandsdiagramme sind gut geeignet für die Darstellung statischer Zustände und ihre möglichen Folgezustände. Man kann daran beispielsweise nachvollziehen, ob alle Zustände erreicht werden können, oder ob es vielleicht zu Endlosschleifen kommen kann. Absolut ungeeignet ist dieser Programmtyp zur Darstellung der Kommunikation zwischen mehreren Objekten. Herkunft oder Ziel von Nachrichten oder Ereignissen ist nur textlich darstellbar.

E.1.4 Aktivitätsdiagramm

Ein Aktivitätsdiagramm (s. Abb. E-1 rechts oben) beschreibt die Reihenfolge der Aktivitäten in einem Prozess. Eine Aktivität ist ein "Zustand", in dem etwas getan wird.
Anmerkung: Für mich ist dies eine unsaubere Definition, die leicht zur Begriffsverwirrung führen kann. Auch in einem statischen Zustand können natürlich interne Aktivitäten ablaufen. Der Zustand kann aber nur durch ein äußeres Ereignis beendet werden, während die Aktivitäten in einem Aktivitätsdiagramm sich selbst beenden, wenn sie ihre Aufgabe erfüllt haben.
Außer den eben erwähnten Aktivitäten stellt die Symbolik noch Darstellungsmöglichkeiten zur Verfügung für Aufspaltung, Verzweigung, Zusammenführung und Synchronisation. Diese Symbole werden durch gerichtete Ablauflinien verbunden. Das Diagramm kann bedingte und parallele Ablaufzweige enthalten. Die Übergänge werden auch als Transitionen bezeichnet.
Der Diagrammtyp eignet sich gut zur Darstellung der Abhängigkeiten und Aufeinanderfolge verschiedener Aktivitäten. In der Grundform ist jedoch eine gegenseitige Beeinflussung von mehreren Partnern sehr schwer darzustellen. Auch ist nicht ersichtlich, welche Objekte an welchen Aktivitäten beteiligt sind.
Diese Nachteile lassen sich abmildern durch die Einführung von Objektspalten (sogenannte "swim lanes"), der Austausch von Nachrichten ist jedoch auch hier nicht vorgesehen.

E.1.5 Sequenzdiagramm

Ein Sequenzdiagramm (s. Abb. E-1 rechts unten) beschreibt (ähnlich wie das hier nicht behandelte Kollaborationsdiagramm) die Zusammenarbeit mehrerer Objekte in einem einzelnen Anwendungsfall. Der Schwerpunkt liegt hier jedoch auf den ausgetauschten Nachrichten und ihrer Reihenfolge. Auch Zeitbedingungen können veranschaulicht werden.
Die Symbolik besteht, ähnlich wie bei MSC, aus rechteckigen Objekten (= Kommunikationspartner), ihren gestrichelten Lebenslinien und den ausgetauschten Nachrichten in Form von Pfeilen.
Sequenzdiagramme sind gut geeignet zur Darstellung der gegenseitigen Beeinflussung mehrerer Objekte, mit dem Spezialfall Kommunikation. Sie ermöglichen keine Aussage über Zustände oder Aktivitäten.

E.2   Sitzungsdiagramm

Die bisher vorgestellten Diagrammtypen, die teilweise in UML standardisiert sind, sind geeignet, um jeweils bestimmte Aspekte eines Systems oder eines Vorgangs, teilweise auch detailliert, darzustellen.
Man kann sie jedoch in ihrer reinen Form nicht verwenden, um sich einen Gesamtüberblick über einen Vorgang mit allen seinen Teilaspekten (Zustände, Aktivitäten, Bedingungen, Ereignissen und Nachrichten) zu verschaffen.
Das von mir in diesem Buch an mehreren Stellen verwendete "Sitzungsdiagramm" ("session diagram") soll genau diese Lücke schließen, indem es die Möglichkeiten mehrerer bekannter Diagrammtypen kombiniert. Es erhebt nicht den Anspruch, alle Details ausführlich darstellen zu können, das Diagramm könnte dadurch schnell unübersichtlich werden. Auch ist nicht beabsichtigt, es zur automatischen Codegenerierung heranzuziehen. Zum großen Teil wird die Symbolik also aus den oben vorgestellten Diagrammtypen bezogen, insbesondere die Message Sequence Charts lieferten etliche Vorlagen. Kleinere Anpassungen waren nötig, um einzelne Aspekte besser unterscheiden zu können und andere unter einen Hut zu bringen.
Abb. E-2 zeigt eine Zusammenstellung der verwendeten Darstellungselemente.

E.2.1 Modifikationen

Im Zustandsdiagramm werden die Zustände meist in einem zweidimensionalen Netz dargestellt. Dagegen sind sie im Sitzungsdiagramm häufig an einem durchgehenden, eindimensionalen "Zustandspfad" aufgereiht, identische Anfangs- und Endzustände werden dann getrennt dargestellt.
Ereignisse oder Nachrichten, die Zustandsübergänge auslösen, erhalten Pfeilform, die Pfeilspitze endet an einem Teilabschnitt des Zustandspfades.
Gegenüber dem Aktivitätsdiagramm wurde das Aktivitätssymbol verändert, um es von den statischen Zuständen besser abzugrenzen. Es wird nur für Aktionen verwendet, die während eines Zustandsübergangs ausgeführt werden.
Die Lebenslinie des Sequenzdiagramms wird zum durchgehenden, breiten Zustandspfad, dessen Abschnitte zur Verdeutlichung mit Pfeilspitzen versehen werden können. Die Art des Vorgangs kann es auch nahelegen, diesen Zustandspfad waagrecht, mit der Hauptrichtung von links nach rechts darzustellen.

E.2.2 Besonderheiten

    Triggerung

Neu eingeführt wird das Prinzip des "Triggers": Ein Ereignis, z.B. die Nachricht von einem anderen Objekt, "zeigt" auf den Zustandspfad und "öffnet" oder "triggert" damit den Übergang von einem Zustand zum nächsten. Durch verschiedene Nachrichten können unterschiedliche Pfade geöffnet werden. Bei jedem Übergang können Aktionen ausgeführt werden. Vor, während oder nach diesen Aktionen können Nachrichten an andere Objekte verschickt werden.

    Skalierbarkeit

Je nach Zweck der Darstellung können einzelne Symbole (Zustand, Schleife, Aktion, Nachricht, externes Ereignis) voll ausgeprägt, reduziert oder weggelassen sein. Durch das Weglassen einzelner Elementtypen kann ein Sitzungsdiagramm "entarten" zu einem (leicht modifizierten) Zustands-, Aktivitäts- oder Sequenzdiagramm.