Einleitung
Sequenzdiagramme (engl. Sequence Diagrams) gehören zu den Interaktionsdiagrammen und werden verwendet um einen Nachrichtenaustausch zwischen Objekten zu modellieren. Im Sequenzdiagramm wird immer nur ein Weg innerhalb eines Systems abgebildet. Somit muss jeder mögliche Ablauf in einem eigenständigen Sequenzdiagramm dargestellt werden.
Teilnehmer und Lebenslinien
Die Objekte einer Interaktion werden horizontal nebeneinander angeordnet (siehe Abb. 1). Jeder Teilnehmer erhält eine Lebenslinie
die vertikal von oben nach unten verläuft und den Zeitverlauf darstellt. Menschliche Teilnehmer werden mit Hilfe des
Strichmännchen-Symbols abgebildet. Alle anderen System-Teilnehmer werden durch ein rechteckiges Symbol beschrieben. Die
Lebenslinie ist im passiven Zustand gestrichelt und im aktiven Zustand wird ein schmaler Balken gezeichnet.
Nachrichten
In Sequenzdiagrammen wird zwischen synchronen und asynchronen Nachrichten unterschieden (vgl. Abb. 2). Bei einer synchronen
Nachricht wartet der Sender auf eine Reaktion durch den Empfänger. Synchrone Nachrichten werden mit einer ausgefüllten
Pfeilspitze gezeichnet. Bei einer asynchronen Nachricht kann der Sender ohne auf den Empfänger zu warten mit weiteren Operationen
fortfahren.
Nachrichten müssen nicht unbedingt an andere Teilnehmer gesendet werden. Es ist durchaus möglich das Nachrichten an sich selbst
gesendet werden können.
Zur einfachen Referenzierung ist eine Nummerierung der Nachrichten möglich.
Antwort-Nachrichten und Sende-Nachrichten
Antwort-Nachrichten sind eine Antwort auf eine Sende-Nachricht. Antwort-Nachrichten werden mit einem gestrichelten Pfeil gezeichnet. Die Bezeichnung der Sende-Nachricht wird dabei wiederholt und kann mit weiteren optionalen Angaben versehen werden
(vgl. Alarm Nachricht von Abb. 2).
Zeitbedingungen
Alle Nachrichten benötigen für das Senden und Empfangen standardmäßig eine Zeit von Null. Es können jedoch zusätzlich Zeitbedingungen eingeführt werden. Mit dem Schlüsselwort duration kann die Dauer der Übertragung gemessen werden und Attributen
zugewiesen werden.
Mit geschweiften Klammern lässt sich definieren wie lange eine Übermittlung maximal dauern darf. So bedeutet 0..1sec, dass der
Sendevorgang höchstens eine Sekunde dauern darf.
Gefundene und verlorene Nachrichten
Eine gefundene Nachricht modelliert einen Empfang einer Nachricht bei der der Absender unbekannt ist. Ein Grund hierfür kann
sein, dass der Sender nicht modelliert werden soll oder der Sender einfach irrelevant ist.
Eine verlorene Nachricht wird zwar gesendet hat jedoch keinen Empfänger. Ein Grund kann sein das beim Entwurfszeitpunkt der
Empfänger noch nicht bekannt oder die Nachricht tatsächlich nie ankommt.
Erzeugungs- und Destruktions-Nachricht
Teilnehmer im Sequenzdiagramm können auch erst während der Interaktion durch eine Erzeugungs-Nachricht von anderen Teilnehmen
geschaffen werden. Ebenso kann ein Teilnehmer einen anderen Teilnehmer durch eine Destruktions-Nachricht zerstören.
Interaktionsrahmen
Interaktionsrahmen dienen zur Kapselung von Systemabläufen. Des Weiteren können lokale Attribute im Interaktionsrahmen definiert
werden. Eine externe Kommunikation ist nur durch ein Gate möglich (vgl. Abb. 2).
Kombinierte Fragmente
Ein kombiniertes Fragment besteht aus einem Interaktions-Operator, einem optionalen Namen und einem oder mehreren
Interaktions-Operanden (siehe Abb. 3).
Arten von Interaktions-Operatoren
Es wird zwischen folgenden zwölf Interaktions-Operatoren unterschieden:
Alternative
In einem kombinierten Fragment mit dem alt Interaktions-Operator wird nur einer der beiden Interaktions-Operanden ausgeführt. In einer Programmiersprache wie C, entspricht dies einer if-else Anweisung.
Option
Bei einem opt-Fragment werden die beinhalteten Interaktionen nur optional ausgeführt. Programmiertechnisch ist dies eine if-Anweisung ohne else Zweig.
Parallelität
Parallele Interaktionen lassen sich mit dem Interaktions-Operator \bfseries par \normalfont definieren. Die Interaktions-Operanden können in beliebiger Reihenfolge ausgeführt werden. Programmiertechnisch kann diese Funktionalität durch Threads erfolgen.
Schwache Sequenz
Bei mit seq gekennzeichneten Fragmenten muss die Reihenfolge der Nachrichten innerhalb eines jeden Interaktions-Operanden erhalten bleiben. Nachrichten in unterschiedlichen Interaktions-Operanden dürfen in beliebiger Reihenfolge gesendet werden. Jedoch müssen Nachrichten auf derselben Lebenslinie die sich zwar in unterschiedlichen Interaktions-Operanden befinden in der aufgezeichneten Reihenfolge ablaufen.
Strikte Sequenz
Wenn ein Fragment mit dem Schlüsselwort strict definiert ist, dann muss die modellierte Reihenfolge der Nachrichten zwingend eingehalten werden.
Negation
Wird ein Fragment mit neg gekennzeichnet bedeutet dies dass diese Nachrichtenabfolge nicht möglich ist oder keinen Sinn macht.
Kritischer Bereich
Kombinierte-Fragmente die mit dem Interaktions-Operator critical modelliert werden definieren eine Interaktion in einem kritischen Bereich die nicht unterbrochen werden darf. Der Nachrichtenwechsel ist atomar und damit nicht unterbrechbar. In der Programmiersprache Java wird ein solcher Abschnitt mit dem Schlüsselwort synchronized gekennzeichnet.
Sicherstellung
Fragmente mit dem Schlüsselwort assert kennzeichnen einen Abschnitt der genau in der modellierten Reihenfolge ausgeführt werden muss. Bei Verletzung wird in Programmiersprachen wie Java eine Exception geworfen.
Irrelevante Nachrichten
Mit ignore werden Fragmente benannt die Nachrichten enthalten die ignoriert werden sollen.
Relevante Nachrichten
Durch den Interaktions-Operator consider lassen sich Nachrichten als besonders wichtig definieren.
Schleife
Eine Schleife, also eine Wiederholung von Nachrichten lässt sich mit dem Operator loop realisieren.
Abbruch
Abbruchsituationen sind mit dem Schlüsselwort break möglich. In Verbindung mit einem Guard lassen sich so z.B. Schleifen durch eine Bedingung beenden.
Literatur
[1] Christoph Kecher: UML 2.0 – Das umfassende Handbuch. 4. Auflage. Galileo Press, Bonn 2011


