Sequenzdiagramm lesen und erstellen – UML erklärt
Ein UML-Sequenzdiagramm zeigt, welche Kommunikationspartner in einem bestimmten Ablauf Nachrichten austauschen und in welcher Reihenfolge das geschieht. Du liest es von oben nach unten: Je weiter unten ein Ereignis auf einer Lebenslinie steht, desto später tritt es dort ein.
Auf dieser Seite lernst du, die wichtigsten Zeichen sicher zu deuten und aus einem Nutzungsszenario ein übersichtliches Sequenzdiagramm zu entwickeln.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Was zeigt ein Sequenzdiagramm?
Stell dir einen Anmeldevorgang vor: Eine Benutzerin sendet ihre Zugangsdaten an eine Anwendung. Die Anwendung lässt die Daten von einem Anmeldedienst prüfen und zeigt anschließend das Ergebnis an. Ein Sequenzdiagramm macht sichtbar, wer wem wann welche Nachricht sendet.
Sequenzdiagramm
Ein Sequenzdiagramm ist ein UML-Interaktionsdiagramm. Es beschreibt den Nachrichtenaustausch zwischen Kommunikationspartnern in einem bestimmten zeitlich geordneten Ablauf.
Die Anordnung hat zwei grundlegende Bedeutungen:
- Horizontal stehen die verschiedenen Kommunikationspartner nebeneinander.
- Vertikal verläuft die Reihenfolge der Ereignisse von oben nach unten.
Die vertikale Achse zeigt normalerweise keine messbare Dauer. Ein doppelt so großer Abstand bedeutet daher nicht automatisch eine doppelt so lange Wartezeit. Für genaue Zeitvorgaben sind zusätzliche Zeitbedingungen nötig.
Ein Sequenzdiagramm stellt gewöhnlich ein bestimmtes Szenario oder einen Ablaufweg dar. Es eignet sich für dynamische Interaktionen, aber nicht als vollständige Darstellung der statischen Struktur eines Systems.
Ein Sequenzdiagramm beantwortet vor allem drei Fragen: Wer kommuniziert? Welche Nachricht wird gesendet? Was geschieht davor oder danach?
Lebenslinien und Aktivierungen erkennen
Jeder beteiligte Mensch, jedes Objekt oder jede Systemkomponente erhält eine eigene Lebenslinie. Am Kopf steht eine Bezeichnung; darunter läuft eine meist gestrichelte Linie nach unten.
Lebenslinie
Eine Lebenslinie zeigt, dass ein bestimmter Kommunikationspartner während des dargestellten Ablaufs existiert und an Interaktionen teilnehmen kann.
Bezeichnungen können unterschiedlich genau sein:
martin: Usernennt Instanz und Typ.:Backendbezeichnet eine anonyme Instanz des TypsBackend.frontendnennt nur die Instanz.selfverweist auf das umgebende Objekt selbst.
Ein schmales Rechteck auf einer Lebenslinie heißt Aktivierungsbalken. Es kennzeichnet eine Phase, in der der Partner etwas ausführt oder auf die Fertigstellung eines synchronen Aufrufs wartet.
Objekte können auch während des Ablaufs entstehen. Ihre Lebenslinie beginnt dann bei der Erzeugungsnachricht, zum Beispiel new(). Endet die Existenz eines Objekts, wird das Ende seiner Lebenslinie mit einem X markiert.
Bei einem Bestellvorgang könnten kundin, shop: ShopSystem und zahlung: Zahlungsdienst drei Lebenslinien bilden. Während zahlung die Zahlung prüft, liegt auf dieser Lebenslinie ein Aktivierungsbalken. Die Kundin bleibt trotzdem ein Kommunikationspartner, auch wenn auf ihrer Lebenslinie gerade kein Aktivierungsbalken liegt.
Nachrichten richtig unterscheiden
Nachrichten erscheinen als gerichtete Pfeile vom Sender zum Empfänger. Eine aussagekräftige Beschriftung nennt die ausgeführte Operation oder die übertragene Information, zum Beispiel pruefePasswort(passwort).
Synchrone Nachricht
Bei einer synchronen Nachricht wartet der Sender, bis die aufgerufene Operation beendet ist und gegebenenfalls eine Antwort vorliegt. Üblich sind eine durchgezogene Linie und eine gefüllte Pfeilspitze.
Asynchrone Nachricht
Bei einer asynchronen Nachricht arbeitet der Sender unmittelbar nach dem Senden weiter. Üblich sind eine durchgezogene Linie und eine offene Pfeilspitze. Eine spätere Antwort ist eine eigenständige Nachricht.
Antwort und Selbstnachricht
Eine Antwort kann als gestrichelter Pfeil zum ursprünglichen Sender dargestellt werden. Bei einer Selbstnachricht ruft ein Partner eine eigene Methode auf; der Pfeil kehrt zur gleichen Lebenslinie zurück.
app sendet synchron pruefe(daten) an anmeldedienst. Die App wartet auf das Prüfergebnis. Sendet app dagegen asynchron protokolliere(versuch) an logger, kann sie sofort mit ihrem Ablauf fortfahren, ohne auf den Logger zu warten.
Synchron: senden und warten. Asynchron: senden und weiterarbeiten.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Eine Nachricht verläuft vom zum Empfänger. Bei einer Nachricht wartet der Sender auf die Beendigung des Aufrufs. Bei einer Nachricht darf er nach dem Senden unmittelbar weiterarbeiten. Ein Aufruf an dieselbe Lebenslinie heißt .
Wie Nachrichten die Ereignisfolge bestimmen
Eine Nachricht besitzt mindestens ein Sendeereignis und ein späteres Empfangsereignis. Bezeichne bei zwei Nachrichten die Ereignisse so:
S1: Senden der ersten NachrichtE1: Empfangen der ersten NachrichtS2: Senden der zweiten NachrichtE2: Empfangen der zweiten Nachricht
Bei zwei synchronen Aufrufen muss der Sender nach der ersten Nachricht warten. Dadurch ergibt sich die Folge:
S1, E1, S2, E2
Bei zwei asynchronen Aufrufen darf der Sender die zweite Nachricht schon absenden, bevor die erste empfangen wurde. Je nach vertikaler Anordnung können deshalb unter anderem diese beiden Folgen zulässig sein:
S1, E1, S2, E2S1, S2, E1, E2
Trotzdem gilt für jede einzelne Nachricht: Das Senden liegt vor dem Empfangen. Außerdem ordnet die vertikale Position Ereignisse auf derselben Lebenslinie.
Diese Betrachtung beschreibt eine partielle Ordnung: Das Diagramm legt notwendige Vorher-nachher-Beziehungen fest, ohne für jedes Ereignispaar eine messbare Uhrzeit anzugeben.
Bedingungen, Schleifen und Parallelität darstellen
Gerahmte Bereiche heißen kombinierte Fragmente. Oben links steht ein Operator. Bedingungen, auch Guards genannt, stehen in eckigen Klammern.
opt: Der Inhalt wird nur ausgeführt, wenn die Bedingung wahr ist.alt: Genau eine von mehreren bedingten Alternativen wird ausgeführt.loop: Der Inhalt wird wiederholt, solange die Bedingung gilt oder bis eine angegebene Anzahl erreicht ist.par: Die enthaltenen Bereiche dürfen parallel ablaufen.strict: Die angegebene Reihenfolge muss zwingend eingehalten werden.critical: Die enthaltene Nachrichtenfolge darf nicht unterbrochen werden.
Beim Login kann ein alt-Fragment zwei Bereiche enthalten:
[daten korrekt]: Die Anwendung öffnet die Startseite.[sonst]: Die Anwendung zeigt eine Fehlermeldung.
Ein opt-Fragment wäre hier ungeeignet, wenn sowohl Erfolg als auch Misserfolg ausdrücklich dargestellt werden sollen. opt beschreibt nur einen bedingt ausgeführten Bereich, nicht zwei gegenseitig ausschließende Wege.
Ein Sequenzdiagramm aus einem Szenario entwickeln
Nimm als Szenario: „Eine Kundin legt einen Artikel in den Warenkorb. Der Shop speichert den Artikel und bestätigt die Änderung.“
Gehe in dieser Reihenfolge vor:
- Umfang festlegen: Dargestellt wird nur das Hinzufügen eines Artikels, nicht der gesamte Einkauf.
- Kommunikationspartner bestimmen:
kundin,shop: ShopSystemundwarenkorb: Warenkorb. - Lebenslinien anordnen: Die Partner stehen horizontal nebeneinander.
- Nachrichten ermitteln:
artikelHinzufuegen(artikel),speichern(artikel)und eine Bestätigung. - Reihenfolge festlegen: Die Nachrichten werden von oben nach unten angeordnet.
- Nachrichtenarten wählen: Muss der Shop das Speichern abwarten, wird
speichern(artikel)synchron dargestellt. - Aktivierungen ergänzen: Aktivierungsbalken zeigen die Bearbeitungsphasen.
- Diagramm prüfen: Jeder Pfeil besitzt einen Sender, einen Empfänger und einen klaren Namen.
Ein vollständiger Ablauf lässt sich in Worten so prüfen:
kundinsendetartikelHinzufuegen(artikel)anshop.shopsendet synchronspeichern(artikel)anwarenkorbund wartet.warenkorbbestätigt das Speichern anshop.shopbestätigt der Kundin den aktualisierten Warenkorb.
Der entscheidende Gedanke: Die Bestätigung an die Kundin steht erst nach der Speicherbestätigung. Andernfalls würde das Diagramm einen anderen Ablauf ausdrücken.
Passe den Detailgrad an den Zweck und die Adressaten an. In einer fachlichen Analyse reichen oft wenige, verständliche Nachrichten. Bei einem technischen Entwurf können konkrete Komponenten, Methoden und Rückgabewerte nötig sein. Überladene Abläufe lassen sich in kleinere Diagramme aufteilen und durch einen ref-Rahmen referenzieren.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Sequenzdiagramm
- Kommunikationspartner und Lebenslinien
- Nachrichten in zeitlicher Reihenfolge
- Synchrones oder asynchrones Warteverhalten
- Aktivierungsphasen und Objektlebenszyklen
- Bedingungen, Alternativen und Wiederholungen
- Zweckgerechter Detailgrad und Prüfung
Mit Google fortfahren