Informatik

Sequenzdiagramm lesen und erstellen – UML erklärt

Sequenzdiagramm lesen und erstellen – UML erklärt
Sequenzdiagramm lesen und erstellen – UML erklärt
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

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.

Deine Lernziele

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.

Definition

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.

Merke

Ein Sequenzdiagramm beantwortet vor allem drei Fragen: Wer kommuniziert? Welche Nachricht wird gesendet? Was geschieht davor oder danach?

Teste dich
Frage 1 von 1LeichtWelche Aussage beschreibt die Leserichtung richtig?
Lösung: Ereignisse auf einer Lebenslinie werden von oben nach unten gelesen. — Die Lebenslinien ordnen Ereignisse von oben nach unten. Abstände allein geben gewöhnlich keine absolute Zeit an.
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.

Definition

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: User nennt Instanz und Typ.
  • :Backend bezeichnet eine anonyme Instanz des Typs Backend.
  • frontend nennt nur die Instanz.
  • self verweist 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.

Beispiel

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.

Teste dich
Frage 1 von 1MittelIn einem Diagramm beginnt die Lebenslinie rechnung: Rechnung erst bei der Nachricht new(). Was bedeutet das?
Lösung: Das Rechnungsobjekt wird an dieser Stelle erzeugt und existiert vorher im dargestellten Ablauf nicht. — Beginnt eine Lebenslinie bei einer Erzeugungsnachricht, entsteht der Kommunikationspartner erst an diesem Punkt. Eine Zerstörung wird dagegen mit einem X markiert.
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.

Beispiel

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.

Merke

Synchron: senden und warten. Asynchron: senden und weiterarbeiten.

Lückentext

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 .

Lösungen: Lücke 1: Sender; Lücke 2: synchronen; Lücke 3: asynchronen; Lücke 4: Selbstnachricht. Entscheidend ist das Warteverhalten des Senders: Synchron bedeutet warten, asynchron bedeutet weiterarbeiten. Eine Selbstnachricht beginnt und endet bei demselben Partner.
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 Nachricht
  • E1: Empfangen der ersten Nachricht
  • S2: Senden der zweiten Nachricht
  • E2: 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, E2
  • S1, 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.

Gut zu wissen

Diese Betrachtung beschreibt eine partielle Ordnung: Das Diagramm legt notwendige Vorher-nachher-Beziehungen fest, ohne für jedes Ereignispaar eine messbare Uhrzeit anzugeben.

Teste dich
Frage 1 von 2MittelEin Sender verschickt zwei asynchrone Nachrichten. Welche Folge kann zulässig sein?
Lösung: S1, S2, E1, E2 — Bei asynchronen Nachrichten darf der Sender die zweite Nachricht senden, bevor die erste empfangen wurde. Für jede Nachricht muss das Sendeereignis dennoch vor dem Empfang liegen.
Frage 2 von 2SchwerWarum reicht der vertikale Abstand zweier Nachrichten nicht aus, um ihre genaue Zeitdifferenz zu bestimmen?
Lösung: Die Achse ordnet Ereignisse, stellt aber ohne zusätzliche Zeitbedingungen keine absolute Zeit dar. — Die normale Anordnung zeigt Vorher und Nachher. Messbare Vorgaben wie drei Sekunden benötigen ausdrücklich modellierte Zeitbedingungen.
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.
Beispiel

Beim Login kann ein alt-Fragment zwei Bereiche enthalten:

  1. [daten korrekt]: Die Anwendung öffnet die Startseite.
  2. [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.

Teste dich
Frage 1 von 2LeichtWelches Fragment passt zu einer wiederholten Passwortprüfung mit höchstens drei Versuchen?
Lösung: looploop umfasst eine wiederholte Nachrichtenfolge. Die Abbruchbedingung oder maximale Anzahl gehört in den Guard.
Frage 2 von 2MittelEin Ablauf hat genau zwei Wege: [zahlung erfolgreich] und [zahlung abgelehnt]. Welcher Operator passt?
Lösung: altalt stellt gegenseitig ausschließende, bedingte Abläufe dar. Jeder Weg erhält einen eigenen Operanden mit Guard.
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:

  1. Umfang festlegen: Dargestellt wird nur das Hinzufügen eines Artikels, nicht der gesamte Einkauf.
  2. Kommunikationspartner bestimmen: kundin, shop: ShopSystem und warenkorb: Warenkorb.
  3. Lebenslinien anordnen: Die Partner stehen horizontal nebeneinander.
  4. Nachrichten ermitteln: artikelHinzufuegen(artikel), speichern(artikel) und eine Bestätigung.
  5. Reihenfolge festlegen: Die Nachrichten werden von oben nach unten angeordnet.
  6. Nachrichtenarten wählen: Muss der Shop das Speichern abwarten, wird speichern(artikel) synchron dargestellt.
  7. Aktivierungen ergänzen: Aktivierungsbalken zeigen die Bearbeitungsphasen.
  8. Diagramm prüfen: Jeder Pfeil besitzt einen Sender, einen Empfänger und einen klaren Namen.
Beispiel

Ein vollständiger Ablauf lässt sich in Worten so prüfen:

  1. kundin sendet artikelHinzufuegen(artikel) an shop.
  2. shop sendet synchron speichern(artikel) an warenkorb und wartet.
  3. warenkorb bestätigt das Speichern an shop.
  4. shop bestä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.

Teste dich
Frage 1 von 1SchwerEin Entwurf bestätigt der Kundin den gespeicherten Artikel, bevor der Warenkorb das Speichern bestätigt hat. Der Shop soll aber auf das Speichern warten. Welche Korrektur ist nötig?
Lösung: Die Bestätigung an die Kundin muss unterhalb der Speicherbestätigung stehen. — Wenn der synchrone Speichervorgang zuerst abgeschlossen sein muss, steht seine Antwort vor der Bestätigung an die Kundin.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Sequenzdiagramm
    • Kommunikationspartner und Lebenslinien
    • Nachrichten in zeitlicher Reihenfolge
    • Synchrones oder asynchrones Warteverhalten
    • Aktivierungsphasen und Objektlebenszyklen
    • Bedingungen, Alternativen und Wiederholungen
    • Zweckgerechter Detailgrad und Prüfung
Abschluss-Check
Teste dich
Frage 1 von 4LeichtWas zeigt ein Aktivierungsbalken?
Lösung: Eine Phase aktiver Verarbeitung oder Kontrolle auf einer Lebenslinie — Der schmale Balken liegt auf einer Lebenslinie und kennzeichnet aktive Beteiligung, Verarbeitung oder Warten auf einen synchronen Aufruf.
Frage 2 von 4MittelEine App sendet eine Protokollnachricht und soll sofort weiterarbeiten. Welche Nachrichtenart passt?
Lösung: Eine asynchrone Nachricht — Asynchrones Senden erlaubt dem Sender, seinen Ablauf unmittelbar fortzusetzen.
Frage 3 von 4SchwerEin Diagramm soll zeigen, dass bei gültigem Gutschein ein Rabatt berechnet wird, ansonsten aber nichts Zusätzliches geschieht. Welches Fragment ist am passendsten?
Lösung: opt mit dem Guard [gutschein gültig]opt eignet sich für eine einzelne optionale Nachrichtenfolge. Der Inhalt wird nur bei wahrer Bedingung ausgeführt.
Frage 4 von 4SchwerWelche Prüfung verbessert ein selbst erstelltes Sequenzdiagramm am stärksten?
Lösung: Für jede Nachricht Sender, Empfänger, Name, Reihenfolge und passendes Warteverhalten kontrollieren — Ein gutes Sequenzdiagramm ist nicht möglichst voll, sondern bildet den gewählten Ablauf korrekt, eindeutig und zweckgerecht ab.

Passend dazu