Sequenzdiagramm

Strukturdiagramme der UML
Klassendiagramm
Komponentendiagramm
Kompositionsstrukturdiagramm
Objektdiagramm
Paketdiagramm
Profildiagramm
Verteilungsdiagramm
Verhaltensdiagramme der UML
Aktivitätsdiagramm
Anwendungsfalldiagramm
Interaktionsübersichtsdiagramm
Kommunikationsdiagramm
Sequenzdiagramm
Zeitverlaufsdiagramm
Zustandsdiagramm

Ein Sequenzdiagramm (englisch sequence diagram) ist ein Verhaltensdiagramm, welches eine Interaktion im Sinne der Unified Modeling Language (UML) grafisch darstellt. Im Rahmen der UML, einer Modellierungssprache für Software und andere Systeme, ist das Sequenzdiagramm eine der vier Arten von Interaktionsdiagrammen.

Sequenzdiagramme beschreiben den Austausch von Nachrichten zwischen Objekten mittels Lebenslinien.

Sequenzdiagramme der UML2 sind nahe verwandt mit Message Sequence Charts (MSC), einem Standard der ITU-T (International Telecommunication Union – Telecommunication Standardization Sector).

Ein Sequenzdiagramm stellt in der Regel einen Weg durch einen Entscheidungsbaum innerhalb eines Systemablaufes dar. Sollen Übersichten mit allen Entscheidungsmöglichkeiten entwickelt werden, so müsste hierzu für jeden möglichen Ablauf ein eigenständiges Sequenzdiagramm modelliert werden; deshalb eignet sich hierfür eher das Aktivitätsdiagramm oder Zustandsdiagramm.

Notation von Lebenslinien und Nachrichten

Beispiel eines Sequenzdiagramms

Die Abbildung links zeigt ein Beispiel eines Sequenzdiagramms mit einem Kopf- und einem Inhaltsbereich. Das Schlüsselwort im Kopfbereich ist bei einem Sequenzdiagramm sd oder interaction. Im Inhaltsbereich sind oben zwei beschriftete Rechtecke, sie stellen zwei Kommunikationspartner dar. Von jedem Kommunikationspartner geht eine gestrichelte Linie abwärts, sie stellt die Lebenslinie dar. Zwischen den Lebenslinien gibt es zwei Pfeile von links nach rechts, mit durchgehender Linie und gefüllter Pfeilspitze, sie stellen synchrone Operationsaufrufe dar. Ein Operationsaufruf ist eine spezielle Art von Nachricht.

Notationsvarianten für synchrone und asynchrone Nachrichten

Eine Nachricht wird in einem Sequenzdiagramm durch einen Pfeil dargestellt, wobei der Name der Nachricht über den Pfeil geschrieben wird. Synchrone Nachrichten werden mit einer gefüllten Pfeilspitze, asynchrone Nachrichten mit einer offenen Pfeilspitze gezeichnet. Nachrichten, die asynchronen Signalen entsprechen, werden gleich dargestellt wie asynchrone Operationsaufrufe. Der wesentliche Unterschied zwischen einer asynchronen und einer synchronen Nachricht ist, dass die synchrone Nachricht die ausgehende Lebenslinie für weitere Nachrichten „blockiert“, bis diese eine Antwort erhalten hat. Dies ist bei asynchronen Nachrichten nicht der Fall.

Die schmalen Rechtecke, die auf den Lebenslinien liegen, sind Aktivierungsbalken, die den Focus of Control anzeigen, also jenen Bereich, in dem ein Objekt über den Kontrollfluss verfügt, und aktiv an Interaktionen beteiligt ist.

Weitere Notationsvarianten für Nachrichten

Die Abbildung links zeigt vier weitere Notationsvarianten für verlorene und gefundene Nachrichten, sowie für Nachrichten von und an einen Verknüpfungspunkt. Dass es sich um eine Nachricht von einem oder an einen Verknüpfungspunkt handelt, erkennt man daran, dass der entsprechende Pfeil auf dem Rand des Sequenzdiagramms beginnt bzw. endet. Der Verknüpfungspunkt ist einfach der Schnittpunkt des Pfeils mit dem Rand, ein deutlicheres graphisches Symbol ist dafür nicht vorgesehen.

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 (Siehe dazu Sequentialisierung und Nebenläufigkeit).

Sequenzdiagramm mit zwei synchronen Operationsaufrufen, das vier Ereignisauftritte modelliert

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:

  • E1 tritt nach S1 auf, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Analog tritt E2 nach S2 auf.
  • S2 tritt nach S1 auf, weil S2 unter S1 gezeichnet ist. (Genauer gesagt, tritt S2 nach E1 auf, da m1 eine synchrone Nachricht darstellt.)

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

Sequenzdiagramm mit zwei asynchronen Operationsaufrufen, die Folge der Ereignisauftritte E1 und E2 ist nur durch die Lebenslinie von B eingeschränkt

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 vorkommen. Es ist allerdings nicht möglich, dass das Empfangsereignis E1 nach E2 vorkommt, da die Ereignisse auf einer Lebenslinie von oben nach unten geordnet sind[1].

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

Sequenzdiagramm mit zwei asynchronen Operationsaufrufen und einer Ordnungsbeziehung

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>.

Kombinierte Fragmente

Interaktionen können je nach modelliertem System sehr komplex werden. Wenn es keine Möglichkeit gäbe, Sequenzdiagramme zu modularisieren, wären die entsprechenden graphischen Darstellungen unübersichtlich und schwer verständlich.

Die UML2 hat deshalb aus den Message Sequence Chart deren Konzept der inline expressions unter dem Namen kombinierte Fragmente übernommen. Ein kombiniertes Fragment ist die Kombination eines Interaktionsoperators und eines oder mehrerer Interaktionsoperanden. Der Interaktionsoperator spezifiziert die Art des kombinierten Fragments, während die Interaktionsoperanden für die Interaktionsfragmente in diesem kombinierten Fragment stehen.

Ein Optionales Fragment besteht zum Beispiel aus dem Interaktionsoperanden opt, einer Bedingung und einem Interaktionsfragment. Ist ein optionales Fragment in eine Interaktion eingebunden, wird das zugehörige Interaktionsfragment nur durchlaufen, wenn die Bedingung wahr ist.

Tabelle der kombinierten Fragmente (Lit. : Jeckle 2004, Kapitel 12)
SchlüsselwortDeutsche BezeichnungEnglische BezeichnungEinsatzzweckErläuterung
altAlternatives FragmentAlternativeModellierung alternativer AblaufmöglichkeitenDurch einen alt-Operator können alternative Abläufe, die durch Bedingungen versehen sind, zusammengefasst werden.
assertZusicherungAssertionModellierung unabdingbarer InteraktionenFür eine Nachrichtenmenge kann mit Hilfe dieses Operators eine zwingend notwendige Ablaufreihenfolge angegeben werden.
breakAbbruchfragmentBreakModellierung von AusnahmefällenDer normale Ablauf wird unterbrochen, falls eine vorherige Bedingung erfüllt, bzw. verletzt wurde.
considerRelevante NachrichtenConsiderModellierung von Filtern für wichtige NachrichtenMit Hilfe dieses Operators werden nur die angegebenen Aktionen ausgeführt, der Rest wird ignoriert.
criticalKritischer BereichCritical RegionModellierung von nicht unterbrechbaren InteraktionenFalls diese Region betreten wird, so werden alle Aktionen ohne jegliche Unterbrechung ausgeführt. Multithreading ist in diesem Abschnitt unmöglich.
ignoreIrrelevante NachrichtenIgnoreModellierung von Filtern für unwichtige NachrichtenBestimmte Aktionen können mit Hilfe dieses Operators an der Ausführung gehindert werden.
loopSchleifeLoopModellierung von Iterationen in InteraktionenMit Hilfe des loop-Operators können Schleifen definiert werden. Zur Vereinfachung findet man manchmal auch loop while oder loop until.
negNegationNegativeModellierung von ungültigen InteraktionenDieser Operator kapselt unzulässige Abläufe. Kann als Platzhalter für spätere Abläufe verwendet werden.
optOptionales FragmentOptionModellierung von optionalen Teilen einer InteraktionDie einfachste Form der Operatoren ist der opt-Operator, der optionale Teilabläufe umfasst.
parParalleles FragmentParallelModellierung von nebenläufigen Teilen einer InteraktionDer par-Operator dient der Darstellung von parallelen Abläufen.
refVerweisLinkModellierung von Verweisen auf Teilabläufe anderer SequenzdiagrammeMit Hilfe dieses Operators wird durch eine Referenz auf ein anderes Sequenzdiagramm verwiesen, das einen Teilablauf beschreibt.
seqLose OrdnungWeak SequencingModellierung von Abläufen, die von Lebenslinien und Operanden abhängenLegt eine Reihenfolge für die Abfolge von Aktionen einer Lebenslinie vor.
strictStrenge OrdnungStrict SequencingModellierung von Abläufen, die nicht von Lebenslinien und Operanden abhängenÄhnelt dem Aufbau des seq-Operators. Hier betrifft jedoch die Reihenfolge nicht nur eine Lebenslinie, sondern gleich alle Lebenslinien.

Siehe auch

Literatur

  • Message Sequence Chart (MSC). In: ITU-T Recommendation (Hrsg.): Languages and general Software Aspects for Telecommunication Systems. Z.120, November 1999 (online [PDF; abgerufen am 30. April 2009]).
  • Heide Balzert: Lehrbuch der Objektmodellierung – Analyse und Entwurf mit der UML 2. 2. Auflage. Elsevier Spektrum Akademischer Verlag, Heidelberg, München 2005, ISBN 3-8274-1162-9.
  • Christoph Kecher: UML 2.0 – Das umfassende Handbuch. 2. Auflage. Galileo Press, Bonn 2006, ISBN 978-3-89842-738-8.
  • M. Jeckle, Chris Rupp, J. Hahn, B. Zengler, S. Queins: UML 2 glasklar. Hanser, München, Wien 2004, ISBN 3-446-22575-7, Kapitel 12 – Sequenzdiagramm.

Weblinks

Commons: Sequenzdiagramme – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. About the Unified Modeling Language Specification Version 2.5. Object Management Group® (OMG®), S. 570, abgerufen am 7. März 2021.

Auf dieser Seite verwendete Medien

UmlSequenzdiagramm-2.svg
Autor/Urheber: Stkl, Lizenz: CC BY-SA 3.0
Sequenzdiagramm (UML2) - Beispiel 2
UmlSequenzdiagramm-6.svg
Autor/Urheber: Stkl, Lizenz: CC BY-SA 3.0
Sequenzdiagramm (UML2) - Beispiel 6
UmlSequenzdiagramm-7.svg
Autor/Urheber: Stkl, Lizenz: CC BY-SA 3.0
Sequenzdiagramm (UML2) - Beispiel 7
UmlSequenzdiagramm-4.svg
Autor/Urheber: Stkl, Lizenz: CC BY-SA 3.0
Sequenzdiagramm (UML2) - Beispiel 4
UmlSequenzdiagramm-3.svg
Autor/Urheber: Stkl, Lizenz: CC BY-SA 3.0
Sequenzdiagramm (UML2) - Beispiel 3
UmlSequenzdiagramm-5.svg
Autor/Urheber: Stkl, Lizenz: CC BY-SA 3.0
Sequenzdiagramm (UML2) - Beispiel 5