Modellierung mit
UML
Loading

C.6 Sequenzdiagramme

C.6.1 Abstrakte Syntax

Die abstrakte Syntax der Sequenzdiagramme ist gegenüber den bisherigen Diagrammarten ungewöhnlich, da die Reihenfolge der Interaktionen an jeder Zeitlinie semantisch relevant ist. Abbildung C.19 enthält die abstrakte Syntax für den graphischen Teil. Darin sind die drei Hauptbestandteile Objektelement, Aktivitätsbalken und Sequenzelement enthalten. Letzteres fasst als Oberklasse die verschiedenen Formen von Interaktionen, Beginn und Ende von Aktivitätsbalken und OCL-Bedingungen zusammen. Die Sequenzelemente eines Sequenzdiagramms sind linear geordnet und drücken so die zeitliche Reihenfolge aus.

Lädt...
Abbildung C.19: Graphischer Teil der Syntax von Sequenzdiagrammen

Aktivitätsstart und -ende werden als eigenständige Elemente behandelt, da wie in Abbildung 6.18(c) gezeigt, Aktivitätsbalken nicht unbedingt mit Interaktionen gekoppelt sein müssen, weshalb die entsprechenden Assoziationen optional sind. Als Kontextbedingung allerdings gilt, dass Aktivitätsstarts nur zu Beginn des Ablaufs frei auftreten, um damit zu signalisieren, dass die Aktivität in diesem Objekt bereits besteht.

Der textuelle Teil der Syntax ist in Abbildung C.20 enthalten. Er zeigt die Form der OCL-Bedingungen und der Einführung von Hilfsvariablen sowie die Beschriftung der verschiedenen Interaktionen. Stereotypen und Merkmale sind wie üblich nicht explizit in der abstrakten Syntax angegeben. Die Nichtterminale KlassennameC.3, MethodenaufrufC.17, ReturnC.17 und ExceptionC.17 sind bereits für andere Notationen eingeführt worden und werden hier wiederverwendet.

OCLElement ::= OCLExprC.8 ;
| IdentifierB.1 ;
| IdentifierB.1 ( OCLExprC.8*, ) ;
| let OCLVarDeclaratorC.8;1-*
  
Objekterzeugung ::= new NameB.2⟩ { (...) | ArgumentsB.6⟩ }opt
Abbildung C.20: Fehlender textueller Anteil der Syntax von Sequenzdiagrammen

Die abstrakte Syntax stellt bereits einige Einschränkungen an das System dar. So müssen Starts und Enden von Aktivitätsbalken miteinander korrespondieren. Zusätzlich muss jedoch zum Beispiel gelten, dass je zwei Aktivitätsbalken im Sinne der zeitlichen Reihenfolge entweder disjunkt sind oder einer im anderen enthalten ist, dass ein mit einer Interaktionen assoziierter Aktivitätsbalken zu einem an der Interaktion beteiligten Objekt gehört, dass ein Methodenaufruf nur eine Aktivität startet, etc. Wesentlich ist insbesondere, dass die Typisierung der Argumente und Return-Werte soweit angegeben bereits durch Klassendiagramme aus dem Kontext des Sequenzdiagramms festgelegt wird.

C.6.2 Vergleich mit dem UML-Standard

Die UML/P-Sequenzdiagramme sind im Wesentlichen eine Teilmenge des UML-Standards [OMG10a]. Viele im UML-Standard enthaltenen Konzepte, wie Nebenläufigkeit, Alternativen, Wiederholung, Nachrichten mit zeitlicher Verzögerung oder Terminierung von Objekten sind in der UML/P nicht enthalten. Dadurch sind UML/P-Sequenzdiagramme weniger beschreibungsmächtig, aber damit für den Einsatz zur Modellierung von exemplarischen Abläufen und Tests optimiert. Zum Beispiel führt die im UML-Standard gewählte Form der Darstellung von Alternativen durch Aufteilung der Zeitlinien innerhalb von Sequenzdiagrammen sehr schnell zu unübersichtlichen Modellen.

Durch den Verzicht auf die Darstellung asynchroner Nachrichten können Sequenzdiagramme relativ kanonisch mit Java-Implementierungen in Beziehung gesetzt werden. In UML/P lassen sich außerdem durch das Merkmal {time} ähnlich wie im UML-Standard zeitliche Rahmenbedingungen hinzufügen. Dies kann auch konstruktiv zur Vorgabe von Zeiten bei Tests eingesetzt werden.

Im UML-Standard [OMG10a] fehlt eine explizite Integration von OCL-Bedingungen. Die graphische Notation dafür wurde in OCL/P von dem MSC-Standard [IT99] übernommen. Im UML-Standard gibt es jedoch die Möglichkeit Guards wie zum Beispiel [x>0] vor einen Methodenaufruf zu stellen, um damit aus Alternativen auszuwählen.


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012