UML-Sequenzdiagramm
Der UML-Sequenzdiagramm ist ein Diagrammtyp der Unified Modeling Language (UML) und visualisiert den zeitlichen Ablauf von Interaktionen zwischen Partizipanten in einem System. Der Schwerpunkt liegt auf der chronologischen Abfolge der Nachrichten zwischen Lifelines, ohne dass absolute Zeitangaben betont werden. Im Gegensatz zu anderen UML-Diagrammen wie dem Klassendiagramm, das statische Strukturen abbildet, konzentriert es sich auf dynamische Aspekte.
Kurzüberblick
Das UML-Sequenzdiagramm zählt zu den Interaktionsdiagrammen der UML und stellt dynamische Aspekte eines Systems dar. Es veranschaulicht, wie Objekte und Akteure im Laufe der Zeit Nachrichten austauschen. Die vertikale Achse steht für den Zeitverlauf von oben nach unten, während horizontale Linien die Partizipanten verbinden. Das Diagramm unterstützt die Analyse von Use Cases und die Spezifikation von Systemverhalten.
Kontext und Einordnung
Sequenzdiagramme ergänzen andere UML-Diagramme wie Aktivitätsdiagramme oder Zustandsdiagramme, indem sie den Fokus auf zeitliche Abläufe legen. Sie finden Anwendung in der Softwareentwicklung zur Modellierung von Kommunikationsprotokollen, API-Interaktionen oder Geschäftsprozessen. Im Vergleich zum UML-Gesamtkonzept betonen sie Interaktionen statt Strukturen.
Begriffe und Definitionen
- Lifeline: Eine vertikale Linie, die den Lebenszyklus eines Partizipanten darstellt, oft mit einem Rechteck oben zur Bezeichnung (z. B.
objekt:Klasse). - Execution Specification: Ein rechteckiger Bereich auf einer Lifeline, der die aktive Phase eines Objekts anzeigt.
- Nachricht: Eine Kommunikation zwischen Lifelines, gekennzeichnet durch Pfeile (synchrone: gefüllter Pfeilkopf, asynchrone: offener Pfeilkopf).
- Combined Fragment: Ein Rahmen, der bedingte oder iterative Interaktionen gruppiert, mit Operatoren wie
altoderloop.
Grundelemente
Sequenzdiagramme bestehen aus folgenden Elementen:
- Partizipanten: Akteure oder Objekte, repräsentiert durch Lifelines.
- Nachrichten:
- Synchrone Nachrichten: Der Sender wartet auf eine Antwort.
- Asynchrone Nachrichten: Keine Wartezeit erforderlich.
- Return-Nachrichten: Antworten, dargestellt mit gestricheltem Pfeil.
- Create-Nachrichten: Erstellung neuer Objekte.
- Delete-Nachrichten: Zerstörung von Objekten.
- Execution Specifications: Aktivierungsbalken auf Lifelines.
Kombinierte Fragmente
Kombinierte Fragmente ermöglichen die Modellierung komplexer Abläufe mit Bedingungen und Wiederholungen. Sie umfassen einen Bereich mit einem Operator und optionalen Guards in eckigen Klammern.
- alt (Alternative): Wählt einen von mehreren Pfaden basierend auf einer Bedingung aus.
- opt (Optional): Führt einen Pfad aus, wenn die Bedingung erfüllt ist.
- loop (Schleife): Wiederholt einen Pfad, solange die Bedingung gilt.
- par (Parallel): Führt Pfade parallel aus.
- break (Ausnahme): Beendet das umfassende Fragment bei Erfüllung der Bedingung.
- critical (Kritisch): Markiert atomare Abschnitte.
Guards sind Bedingungen wie [x > 0], die den Ausführungspfad steuern.
Beispiele
Einfaches Beispiel: Anmeldung
sequenceDiagram
participant Benutzer
participant System
Benutzer->>System: Anmeldedaten eingeben
System-->>Benutzer: Bestätigung
System->>System: Daten prüfen
System-->>Benutzer: Erfolgreiche AnmeldungDas Diagramm zeigt eine synchrone Nachricht mit Rückgabe.
Beispiel mit Combined Fragment: Bedingte Verarbeitung
sequenceDiagram
participant Client
participant Server
participant DB
Client->>Server: Anfrage senden
alt [Daten verfügbar]
Server->>DB: Daten abrufen
DB-->>Server: Daten zurückgeben
else [Daten nicht verfügbar]
Server->>DB: Neue Daten erstellen
DB-->>Server: Bestätigung
end
Server-->>Client: AntwortDas Diagramm modelliert mit alt eine Alternative mit Guards.
Häufige Fehler und Tipps
- Verwechslung von synchronen und asynchronen Nachrichten: Synchrone Nachrichten blockieren den Sender; asynchrone nicht.
- Absolute Zeitangaben: Sequenzdiagramme zeigen Reihenfolge, nicht genaue Dauern.
- Lifelines vs. Objekte: Lifelines repräsentieren Instanzen, nicht Klassen.
- Einfache Diagramme bilden die Grundlage; Combined Fragments können schrittweise hinzugefügt werden.