Sequenzdiagramm

Einführung

Die UML kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Diagrammtyp der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen Objekten grafisch dargestellt. Ein Kommunikationsbeziehungen ist das Senden einer Nachricht von einem Objekten zu einem anderen. Denn Objekte tauschen Nachrichten aus, um miteinander zu kommunizieren. (Heide Balzert Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).

Was zeigt ein Sequenzdiagramm?

Interaktionen: Es visualisiert, wie Objekte miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.

Zeitliche Abfolge: Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.

Objekte: Jedes Objekt wird als eine Lebenslinie dargestellt.

Nachrichten: Nachrichten, die zwischen Objekten gesendet werden, sind als Pfeile dargestellt.

Was ist der Hauptzweck?

Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von Methoden zurückgegeben werden.

Abstraktion: Rückgabeparameter sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.

Grundsätzlicher Aufbau

Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit, auf der Horizontalen werden die Objekte eingetragen. Die Zugehörigen Klassen werden mit aufgeführt. Die Lebensdauer eines jeden Objektes wird durch eine gestrichelte Linie - die Lebenslinie oder Objektlinie - dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit. 

Die Objekte werden durch Rechtecke visualisiert. Im Objekt steht der zugehörige Klassenname (zum Beispiel Mail). Falls erforderlich, wird auch der Objektname ( zum Beispiel Bestellung) aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt ( zum Beispiel Bestellung: Mail). 

Von den Objekten gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Objektlebenslinien beschrieben. Auf diesen Pfeilen werden die Nachrichtennamen in der Form: Nachricht(Argumente) notiert. Die Angabe von Argumenten ist optional.


Nachrichten

Durch eine Nachricht wird meist eine Methode des Empfängers aufgerufen. Hier kann auch die Übergabe von Eingabeparametern kenntlich gemacht werden. Es wird zwischen synchronen und asynchronen Nachrichten unterschieden.

Antworten

Die Darstellung der Antworten ist optional. Antworten werden durch eine gestrichelte Linie mit offener Pfeilspitze dargestellt. Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls dargestellt werden. Die Konstruktion eines neuen Objektes wird durch eine Nachricht, die auf ein Objektsymbol trifft, angezeigt. 

Die Entscheidung, ob Antworten in einem Sequenzdiagramm dargestellt werden, ist eine gestalterische Entscheidung, die vom jeweiligen Anwendungsfall abhängt. Es gibt keine strikten Regeln, sondern vielmehr Richtlinien, die es ermöglichen, klare und aussagekräftige Diagramme zu erstellen. 

Statische Aufrufe

Statische (static) Methodenaufrufe werden mit unterstrichenem Methodennamen dargestellt. Der Aufruf erfolgt dann auf einer Klasse und nicht auf einem Objekt. 

Dekonstruktion

Die Destruktion bzw. Zerstörung eines Objektes wird durch ein Kreuz am Ende der Lebenslinie angezeigt.

Aktivierung

Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Balken symbolisiert die Aktivierung, d.h. es zeigt, welches Objekt gerade aktiv ist und somit für den Kontrollfluss des Programms verantwortlich ist.

Kontrollstrukturen

Auch Kontrollstrukturen lassen sich durch ein Sequenzdiagramm darstellen (siehe Zeichnung). 

Verzweigung

Der mit alt (für alternative) markierte Block beschreibt eine Alternative (Verzwei­gung). Ist die Bedingung [b=wahr] erfüllt, wird der Bereich oberhalb der gestrichelten Linie in dem alt-Block ausgeführt. Im else-Fall wird der Bereich unterhalb der gestrichelten Linie ausgeführt.

Schleife

Der Teil des Sequenzdiagramms, der sich im Kasten mit dem Titel loop befindet, wird solange ausgeführt, solange die Ausführbedingung in den eckigen Klammern [] wahr ist.

Zeitliche Ordnung der Ereignisse

Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse vor und welche nach einem bestimmten Ereignisauftritt auftreten müssen (Quelle https://de.wikipedia.org/wiki/Sequenzdiagramm).

Die Abbildung links zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen. Blau eingekreist sind die vier Ereignisauftritte. S1 und E1 stehen für das Sende- und das Empfangs-Nachricht-Ereignis für die Nachricht m1, S2 und E2 für die entsprechenden Ereignisse, die mit m2 in Verbindung stehen. Die Zeitachse läuft in einem Sequenzdiagramm von oben nach unten, sollte aber nicht als absolute Zeit verstanden werden.

Zu den Ereignisauftritten in diesem Sequenzdiagramm lassen sich folgende Aussagen machen:

Alles in allem modelliert dieses Sequenzdiagramm also eine Interaktion, die durch genau eine Folge von Ereignisauftritten spezifiziert ist: <S1, E1, S2, E2>.

Das Sequenzdiagramm in der Abbildung links unterscheidet sich nur geringfügig vom vorangehenden Sequenzdiagramm. Der einzige Unterschied besteht darin, dass statt zwei synchronen zwei asynchrone Nachrichten dargestellt sind. Hier gilt weiterhin, dass E1 nach S1 und E2 nach S2 auftritt, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Weil es sich um asynchrone Kommunikation handelt, könnte E1 hier jedoch nicht nur vor, sondern auch erst nach S2 oder E2 vorkommen.

Das Sequenzdiagramm spezifiziert also eine Interaktion, in der drei Folgen von Ereignissauftritten zulässig sind: <S1, E1, S2, E2>, <S1, S2, E1, E2> und <S1, S2, E2, E1>.

Falls nötig, kann man die zulässigen Abfolgen von Ereignisauftritten mit zusätzlichen Ordnungsbeziehungen einschränken. Eine Ordnungsbeziehung spezifiziert nicht eine Nachricht, die zwischen zwei Lebenslinien ausgetauscht wird, sondern die Tatsache, dass ein Ereignisauftritt nach einem anderen Ereignisauftritt vorkommen muss. Im Beispiel modelliert die Ordnungsbeziehung, dass S2 immer nach E1 erfolgt.

Mit dieser zusätzlichen Einschränkung stellt dieses Sequenzdiagramm erneut eine Interaktion mit genau einer zulässigen Folge dar: <S1, E1, S2, E2>.