Agile Modellierung mit
UML
Loading

3.5 Sequenzdiagramme

Sequenzdiagramme werden zur Modellierung von Interaktionen zwischen Objekten eingesetzt. Ein Sequenzdiagramm stellt einen exemplarischen Ausschnitt aus dem Ablauf eines Softwaresystems dar. Es modelliert die dabei auftretenden Interaktionen und Aktivitäten und kann um OCL-Bedingungen erweitert werden.

Ein Sequenzdiagramm beschreibt, in welcher Reihenfolge Methodenaufrufe durchgeführt und beendet werden. Ähnlich wie bei Statecharts werden daher Verhaltensaspekte modelliert. Es ergeben sich jedoch einige wesentliche Unterschiede:

  • Ein Sequenzdiagramm stellt die Interaktion zwischen Objekten in den Vordergrund. Der innere Zustand eines Objekts wird dagegen nicht dargestellt.
  • Ein Sequenzdiagramm ist grundsätzlich exemplarisch. Genau wie beim Objektdiagramm kann daher die dargestellte Information während des Ablaufs eines Systems beliebig häufig, mehrfach parallel oder auch gar nicht auftreten.
  • Aufgrund der Exemplarizität sind Sequenzdiagramme nicht zur vollständigen Modellierung von Verhalten geeignet und werden vor allem während der Anforderungsdefinition und, wie in diesem Band gezeigt, zur Modellierung von Testfällen eingesetzt.

Abbildung 3.44 beinhaltet ein typisches Sequenzdiagramm. Die wesentlichen im Sequenzdiagramm auftretenden Konzepte sind in Abbildung 3.45 kurz erläutert.


Abbildung 3.44: Sequenzdiagramm zur Annahme eines Gebots

Objekt
im Sequenzdiagramm hat dieselbe Bedeutung wie im Objektdiagramm (siehe Abbildung 3.21), wird allerdings nur mit Namen und Typ dargestellt. Mehrere Objekte desselben Typs sind erlaubt. Name oder Typ sind optional.
Zeitlinie
Im Sequenzdiagramm werden zeitlich aufeinanderfolgende Ereignisse von oben nach unten dargestellt. Jedes Objekt hat eine Zeitlinie, die das Voranschreiten der Zeit dieses Objekts darstellt. Die Zeit ist nicht maßstabsgetreu und muss auch nicht in allen Objekten gleich sein. Die Zeitlinie dient daher nur zur Darstellung zeitlicher Reihenfolgen von Interaktionen.
Interaktion
Eine Interaktion zwischen zwei Objekten kann durch eine von mehreren Arten von Stimuli ausgelöst sein. Dazu gehören Methodenaufrufe, Returns, Exceptions und asynchrone Nachrichten. Im Sequenzdiagramm können die Parameter von Interaktionen angegeben oder ausgelassen werden.
Aktivitätsbalken
Zur Bearbeitung eines Methodenaufrufs ist ein Objekt eine gewisse Zeit aktiv. Zur Darstellung dieser Aktivität dient der Aktivitätsbalken, der bei Rekursion auch geschachtelt auftreten kann.
Bedingung
Zur detaillierten Beschreibung von Eigenschaften während eines Ablaufs können OCL-Bedingungen (engl. „Guards“) eingesetzt werden.
Abbildung 3.45: Begriffsdefinitionen für Sequenzdiagramme

Im Sequenzdiagramm werden Objekte in einer Reihe nebeneinander dargestellt und mit einer nach unten gerichteten Zeitlinie versehen. Es wird vereinfachend angenommen, dass eine gleichzeitige oder überkreuzende Versendung von Nachrichten nicht auftritt. Diese Vereinfachung ist motiviert aus dem Einsatz von Sequenzdiagrammen für Testzwecke, in denen Nebenläufigkeit explizit kontrolliert wird, um determinierte Testergebnisse zu erhalten. Dadurch wird die Modellierung mit Sequenzdiagrammen wesentlich vereinfacht, es sind aber unter Umständen bestimmte, in einer Implementierung mögliche Sachverhalte nicht durch Sequenzdiagramme darstellbar.

Die Arten der möglichen Interaktionen sind in Abbildung 3.46 dargestellt. Jede Interaktion mit Ausnahme des rekursiven Aufrufs wird durch einen waagrechten Pfeil dargestellt, der symbolisiert, dass die dabei verbrauchte Zeit vernachlässigt wird. An den Pfeilen werden Methodenaufrufe, Returns oder Exceptions mit oder ohne Argumente in Java angegeben.


Abbildung 3.46: Interaktionsformen im Sequenzdiagramm

Wenn eine Methode statisch ist, so wird sie wie auch im Klassendiagramm unterstrichen. In diesem Fall endet der Pfeil an einer Klasse, die damit analog zu einem Objekt eingesetzt wird.

Wird ein Objekt während der Interaktion neu erzeugt, wird dies dargestellt, indem die Zeitlinie des Objekts später beginnt. Abbildung 3.47 beinhaltet zwei typische Formen von Objekterzeugung.


Abbildung 3.47: Erzeugung eines neuen Objekts

Wie Abbildung 3.44 zeigt, können in einem Sequenzdiagramm zusätzlich zu bestimmten Zeitpunkten des Ablaufs geltende Bedingungen angegeben werden. In diesen OCL-Bedingungen werden die im Sequenzdiagramm auftretenden Objekte und Werte in Beziehung gesetzt. Dazu ist der Zugriff auf benannte Objekte sowie Variablen möglich, die als Argumente in Methodenaufrufen eingesetzt sind.

Eine OCL-Bedingung kann die auftretenden Objekte und Parameter sowie den Effekt einer Nachricht auf einem Objekt genauer beschreiben, wobei sich der Kontext aus dem Sequenzdiagramm ergibt. Ein Zugriff auf Attribute ist durch die Qualifizierung mit dem Objekt möglich. Ist ein OCL-Ausdruck allerdings ausschließlich über einer Zeitlinie, so ist er diesem Objekt zugeordnet und auf die Attribute dieses Objekts kann zugegriffen werden.

Die Gültigkeit einer OCL-Bedingung bezieht sich auf den Zeitpunkt unmittelbar nach der letzten aufgetretenen Interaktion beziehungsweise dem letzten aufgetretenen Aktivitätsbalken. Das bedeutet, die OCL-Bedingung ist nur unmittelbar nach dieser Interaktion einzuhalten. Soll in der Bedingung auf einen früheren Wert eines Attributs zugegriffen werden, so ist dieser explizit in einer Zwischenvariable abzulegen. Wie Abbildung 3.48 zeigt, wird dazu ein an OCL angelehntes let-Konstrukt verwendet, das neue Variablen einführt, die nur innerhalb des Sequenzdiagramms zugreifbar sind.


Abbildung 3.48: Hilfsvariablen speichern Werte

Semantik eines Sequenzdiagramms

Auf den exemplarischen Charakter eines Sequenzdiagramms wurde bereits hingewiesen. Für den methodischen Einsatz von Sequenzdiagrammen sind mehrere Formen der Exemplarizität zu unterscheiden. Die Exemplarizität eines Sequenzdiagramms basiert analog zum Objektdiagramm auf der Beschreibung einer Menge von Objekten, die in dieser Form in beliebiger Häufigkeit oder auch gar nicht, in einem System auftreten kann. Außerdem ist der Ablauf an sich exemplarisch, der in dieser Form sogar beliebig häufig nebeneinander und verschachtelt, aber auch gar nicht auftreten kann.

Zu diesen Formen der Exemplarizität kommt hinzu, dass ein Sequenzdiagramm eine Abstraktion eines Ablaufs darstellt, da es weder alle Objekte des Systems, noch alle auftretenden Interaktionen beinhalten kann. Bei einem Sequenzdiagramm können auch zwischendurch Interaktionen fehlen.

Findet ein Methodenaufruf im System während des Beobachtungszeitraums mehrfach statt, so entsteht zusätzlich eine mehrdeutige Situation, welcher tatsächliche Methodenaufruf mit der im Diagramm dargestellten Interaktion korrespondiert.

Mithilfe geeigneter Stereotypen kann jedoch die Beobachtungsform genauer festgelegt werden. Der Repräsentationsindikator „©“ zeigt bei Objekten im Sequenzdiagramm die Vollständigkeit der gezeigten Interaktionen an. Der alternative Repräsentationsindikator „…“ für Unvollständigkeit gilt per Default.

Bei einem in diesem Sinn vollständig beobachteten Objekt ergibt sich notwendigerweise, dass zu jedem Aufruf ein passender Return angegeben sein muss. Dabei sind alle Objekte anzugeben, die direkt mit dem beobachteten Objekt interagieren. Dies kann zu erheblich detaillierteren Diagrammen führen, als eigentlich gewünscht wird. Deshalb werden in Band 1 weitere Stereotypen eingeführt, die zusätzliche Varianten der Semantikdefinition erlauben.

Der Stereotyp match:visible ist zum Beispiel geeignet für die Definition von Sequenzdiagrammen für Tests: match:visible verbietet das Auslassen von Interaktionen mit anderen im Sequenzdiagramm angegebenen Objekten, erlaubt jedoch das Fehlen von Interaktionen mit Objekten, die im Diagramm nicht angegeben sind. Die Beobachtung dieses Objekts ist also vollständig in Bezug auf die im Diagramm sichtbaren Objekte.


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012