Einheitliche Modellierungssprache (UML) ist eine Modellierungssprache im Bereich Software Engineering, die darauf abzielt, Standardmethoden zur Visualisierung des Entwurfs eines Systems festzulegen. UML unterstützt die Erstellung mehrerer Diagrammtypen, z. B. Interaktions-, Struktur- und Verhaltensdiagramme. A Sequenzdiagramm wird am häufigsten verwendet Interaktion Diagramm.

Interaktionsdiagramm
Zur Darstellung wird ein Interaktionsdiagramm verwendet interaktives Verhalten eines Systems. Da es schwierig sein kann, die Interaktionen in einem System zu visualisieren, verwenden wir verschiedene Arten von Interaktionsdiagrammen, um verschiedene Merkmale und Aspekte der Interaktion in einem System zu erfassen.
- Ein Sequenzdiagramm stellt einfach die Interaktion zwischen den Objekten in einer sequentiellen Reihenfolge dar, d. h. in der Reihenfolge, in der diese Interaktionen stattfinden.
- Wir können auch die Begriffe Ereignisdiagramme oder Ereignisszenarien verwenden, um ein Sequenzdiagramm zu bezeichnen.
- Sequenzdiagramme beschreiben, wie und in welcher Reihenfolge die Objekte in einem System funktionieren.
- Diese Diagramme werden häufig von Geschäftsleuten und Softwareentwicklern verwendet, um Anforderungen an neue und bestehende Systeme zu dokumentieren und zu verstehen.
Wichtige Themen für die Sequenzdiagramme
- Sequenzdiagramm-Notation
- Schauspieler
- Wie erstelle ich Sequenzdiagramme?
- Anwendungsfälle von Sequenzdiagrammen
- Herausforderungen bei der Verwendung von Sequenzdiagrammen
1. Sequenzdiagramm-Notation
1.1. Schauspieler
Ein Akteur in einem UML-Diagramm stellt eine Art Rolle dar, bei der er mit dem System und seinen Objekten interagiert. Dabei ist es wichtig zu beachten, dass sich ein Akteur immer außerhalb des Geltungsbereichs des Systems befindet, das wir mithilfe des UML-Diagramms modellieren möchten.

Wir verwenden Schauspieler, um verschiedene Rollen darzustellen, darunter menschliche Benutzer und andere externe Subjekte. Wir stellen einen Akteur in einem UML-Diagramm mithilfe einer Strichpersonennotation dar. Wir können mehrere Akteure in einem Sequenzdiagramm haben.
Zum Beispiel:
Hier wird der Benutzer im Sitzplatzreservierungssystem als Akteur dargestellt, sofern er außerhalb des Systems existiert und nicht Teil des Systems ist.

1.2. Lebensadern
Eine Lebenslinie ist ein benanntes Element, das einen einzelnen Teilnehmer in einem Sequenzdiagramm darstellt. Grundsätzlich wird jede Instanz in einem Sequenzdiagramm durch eine Lebenslinie dargestellt. Lebenslinienelemente befinden sich oben in einem Sequenzdiagramm. Der Standard in UML für die Benennung einer Lebenslinie folgt dem folgenden Format:
Instanzname: Klassenname

String in Array Java
Wir zeigen eine Lebenslinie in einem Rechteck namens an Kopf mit seinem Namen und Typ. Der Kopf befindet sich wie oben gezeigt auf einer vertikalen gestrichelten Linie (als Stiel bezeichnet).
- Wenn wir eine unbenannte Instanz modellieren möchten, folgen wir demselben Muster, außer dass jetzt der Teil des Namens der Lebenslinie leer bleibt.
- Unterschied zwischen einer Lebensader und einem Akteur
- Eine Lebenslinie stellt immer ein systeminternes Objekt dar, während Akteure zur Darstellung systemexterner Objekte verwendet werden.
Das Folgende ist ein Beispiel für ein Sequenzdiagramm:

1.3. Mitteilungen
Die Kommunikation zwischen Objekten wird durch Nachrichten dargestellt. Die Nachrichten erscheinen in sequentieller Reihenfolge auf der Lebenslinie.
- Wir stellen Nachrichten mit Pfeilen dar.
- Lebensadern und Nachrichten bilden den Kern eines Sequenzdiagramms.

Nachrichten können grob in die folgenden Kategorien eingeteilt werden:
Synchrone Nachrichten
Eine synchrone Nachricht wartet auf eine Antwort, bevor die Interaktion fortgesetzt werden kann. Der Sender wartet, bis der Empfänger die Verarbeitung der Nachricht abgeschlossen hat. Der Anrufer fährt erst dann fort, wenn er weiß, dass der Empfänger die vorherige Nachricht verarbeitet hat, also eine Antwortnachricht erhält.
- Eine große Anzahl von Aufrufen in der objektorientierten Programmierung erfolgt synchron.
- Wir benutzen ein solide Pfeilspitze um eine synchrone Nachricht darzustellen.

Asynchrone Nachrichten
Eine asynchrone Nachricht wartet nicht auf eine Antwort vom Empfänger. Die Interaktion wird unabhängig davon fortgesetzt, ob der Empfänger die vorherige Nachricht verarbeitet hat oder nicht. Wir benutzen ein gefütterte Pfeilspitze um eine asynchrone Nachricht darzustellen.

1.4. Nachricht erstellen
Wir verwenden eine Create-Nachricht, um ein neues Objekt im Sequenzdiagramm zu instanziieren. Es gibt Situationen, in denen ein bestimmter Nachrichtenaufruf die Erstellung eines Objekts erfordert. Es wird durch einen gepunkteten Pfeil und die Beschriftung „Wort erstellen“ dargestellt, um anzugeben, dass es sich um das Symbol „Nachricht erstellen“ handelt.
Zum Beispiel:
Die Erstellung einer neuen Bestellung auf einer E-Commerce-Website würde die Erstellung eines neuen Objekts der Order-Klasse erfordern.

Java-Codierung, if else-Anweisung
1.5. Nachricht löschen
Wir verwenden eine Löschnachricht, um ein Objekt zu löschen. Wenn für ein Objekt der Speicher freigegeben wird oder es innerhalb des Systems zerstört wird, verwenden wir das Symbol „Nachricht löschen“. Es zerstört das Vorkommen des Objekts im System. Es wird durch einen Pfeil dargestellt, der mit einem x endet.
Zum Beispiel:
Im folgenden Szenario kann das Objekt der Bestellklasse zerstört werden, wenn die Bestellung beim Benutzer eingeht.

1.6. Selbstbotschaft
In bestimmten Szenarien kann es vorkommen, dass das Objekt eine Nachricht an sich selbst senden muss. Solche Nachrichten werden Selbstnachrichten genannt und mit a dargestellt U-förmiger Pfeil .

Ein anderes Beispiel:
Stellen Sie sich ein Szenario vor, in dem das Gerät auf seine Webcam zugreifen möchte. Ein solches Szenario wird anhand einer Selbstnachricht dargestellt.

1.7. Antwortnachricht
Antwortnachrichten werden verwendet, um die Nachricht anzuzeigen, die vom Empfänger an den Absender gesendet wird. Wir stellen eine Rückgabe-/Antwortnachricht mit einem dar Pfeilspitze mit gestrichelter Linie öffnen . Die Interaktion wird erst fortgesetzt, wenn eine Antwortnachricht vom Empfänger gesendet wird.

Zum Beispiel:
Stellen Sie sich das Szenario vor, in dem das Gerät ein Foto vom Benutzer anfordert. Hier ist die Nachricht, die das gesendete Foto zeigt, eine Antwortnachricht.
Fibonacci-Reihe in Java

1.8. Nachricht gefunden
Eine „Gefunden“-Nachricht wird verwendet, um ein Szenario darzustellen, in dem eine unbekannte Quelle die Nachricht sendet. Es wird mit einem dargestellt Pfeil, der auf eine Lebensader gerichtet ist von einem Endpunkt aus.
Zum Beispiel:
Stellen Sie sich das Szenario eines Hardwarefehlers vor.

Dies kann mehrere Gründe haben und wir sind uns nicht sicher, was den Hardwarefehler verursacht hat.

1.9. Verlorene Nachricht
Eine verlorene Nachricht wird verwendet, um ein Szenario darzustellen, bei dem der Empfänger dem System nicht bekannt ist. Es wird durch einen Pfeil dargestellt, der von einer Lebenslinie auf einen Endpunkt gerichtet ist.
Zum Beispiel:
Stellen Sie sich ein Szenario vor, in dem eine Warnung generiert wird.

Die Warnung kann für den Benutzer oder eine andere Software/ein anderes Objekt generiert werden, mit dem die Lifeline interagiert. Da das Ziel nicht im Voraus bekannt ist, verwenden wir das Symbol „Verlorene Nachricht“.

1.10. Wachen
Um Bedingungen zu modellieren, verwenden wir Guards in UML. Sie werden verwendet, wenn wir den Nachrichtenfluss unter dem Vorwand der Erfüllung einer Bedingung einschränken müssen. Guards spielen eine wichtige Rolle dabei, Softwareentwickler über die mit einem System oder einem bestimmten Prozess verbundenen Einschränkungen zu informieren.
Zum Beispiel:
Um Bargeld abheben zu können, muss ein Guthaben von mehr als Null erfüllt sein (siehe unten).


Das obige Sequenzdiagramm zeigt das Sequenzdiagramm für einen emotionsbasierten Musikplayer:
- Zunächst wird die Anwendung vom Benutzer geöffnet.
- Das Gerät erhält dann Zugriff auf die Webcam.
- Die Webcam erfasst das Bild des Benutzers.
- Das Gerät nutzt Algorithmen, um das Gesicht zu erkennen und die Stimmung vorherzusagen.
- Anschließend fordert es die Datenbank an, um ein Wörterbuch möglicher Stimmungen zu erstellen.
- Die Stimmung wird aus der Datenbank abgerufen.
- Dem Nutzer wird die Stimmung angezeigt.
- Die Musik wird aus der Datenbank angefordert.
- Die Playlist wird generiert und schließlich dem Benutzer angezeigt.
2. Wie erstelle ich Sequenzdiagramme?
Das Erstellen eines Sequenzdiagramms umfasst mehrere Schritte und wird normalerweise während der Entwurfsphase der Softwareentwicklung durchgeführt, um zu veranschaulichen, wie verschiedene Komponenten oder Objekte im Laufe der Zeit interagieren. Hier finden Sie eine Schritt-für-Schritt-Anleitung zum Erstellen von Sequenzdiagrammen:
- Identifizieren Sie das Szenario:
- Verstehen Sie das spezifische Szenario oder den Anwendungsfall, den Sie im Sequenzdiagramm darstellen möchten. Dies kann eine spezifische Interaktion zwischen Objekten oder der Nachrichtenfluss in einem bestimmten Prozess sein.
- Listen Sie die Teilnehmer auf:
- Identifizieren Sie die am Szenario beteiligten Teilnehmer (Objekte oder Akteure). Teilnehmer können Benutzer, Systeme oder externe Einheiten sein.
- Lebenslinien definieren:
- Zeichnen Sie für jeden Teilnehmer eine vertikale gestrichelte Linie, die die Lebenslinie jedes Objekts im Zeitverlauf darstellt. Die Lebenslinie repräsentiert die Existenz eines Objekts während der Interaktion.
- Lebenslinien anordnen:
- Positionieren Sie die Lebenslinien horizontal in der Reihenfolge ihrer Beteiligung an der Interaktion. Dies hilft bei der Visualisierung des Nachrichtenflusses zwischen den Teilnehmern.
- Aktivierungsleisten hinzufügen:
- Zeichnen Sie für jede Nachricht einen Aktivierungsbalken auf die Lebenslinie des sendenden Teilnehmers. Der Aktivierungsbalken stellt die Zeitdauer dar, in der der Teilnehmer die Nachricht aktiv verarbeitet.
- Nachrichten zeichnen:
- Verwenden Sie Pfeile, um Nachrichten zwischen Teilnehmern darzustellen. Nachrichten fließen horizontal zwischen Lebenslinien und zeigen die Kommunikation zwischen Objekten an. Zu den verschiedenen Arten von Nachrichten gehören synchrone (durchgezogener Pfeil), asynchrone (gestrichelter Pfeil) und Selbstnachrichten.
- Rücknachrichten einschließen:
- Wenn ein Teilnehmer eine Antwortnachricht sendet, zeichnen Sie einen gestrichelten Pfeil zurück zum ursprünglichen Absender, um die Antwortnachricht darzustellen.
- Geben Sie Zeitpunkt und Reihenfolge an:
- Verwenden Sie Zahlen, um die Reihenfolge der Nachrichten in der Sequenz anzugeben. Sie können auch vertikale gestrichelte Linien verwenden, um das Auftreten von Ereignissen oder den Zeitablauf darzustellen.
- Bedingungen und Schleifen einbeziehen:
- Verwenden Sie kombinierte Fragmente, um Bedingungen (z. B. if-Anweisungen) und Schleifen in der Interaktion darzustellen. Dies erhöht die Komplexität des Sequenzdiagramms und hilft bei der Detaillierung des Kontrollflusses.
- Erwägen Sie die parallele Ausführung:
- Wenn parallele Aktivitäten stattfinden, stellen Sie diese dar, indem Sie parallele vertikale gestrichelte Linien zeichnen und die Nachrichten entsprechend platzieren.
- Überprüfen und verfeinern:
- Überprüfen Sie das Sequenzdiagramm auf Klarheit und Richtigkeit. Stellen Sie sicher, dass es die beabsichtigte Interaktion genau darstellt. Nach Bedarf verfeinern.
- Anmerkungen und Kommentare hinzufügen:
- Fügen Sie alle zusätzlichen Informationen, Anmerkungen oder Kommentare hinzu, die Kontext oder Erläuterungen zu Elementen im Diagramm bieten.
- Dokumentannahmen und Einschränkungen:
- Wenn es irgendwelche Annahmen oder Einschränkungen im Zusammenhang mit der Interaktion gibt, dokumentieren Sie diese neben dem Diagramm.
- Werkzeuge:
- Verwenden Sie ein UML-Modellierungstool oder eine Diagrammsoftware, um ein übersichtliches und professionell aussehendes Sequenzdiagramm zu erstellen. Diese Tools bieten häufig Funktionen zur einfachen Bearbeitung, Zusammenarbeit und Dokumentation.
3. Anwendungsfälle von Sequenzdiagrammen
- Visualisierung des Systemverhaltens:
- Sequenzdiagramme werden verwendet, um das dynamische Verhalten eines Systems zu veranschaulichen, indem sie die Interaktionen zwischen verschiedenen Komponenten, Objekten oder Akteuren im Zeitverlauf zeigen.
- Sie bieten eine klare und visuelle Darstellung des Nachrichten- und Ereignisflusses in einem bestimmten Szenario.
- Softwaredesign und Architektur:
- Während der Entwurfsphase der Softwareentwicklung helfen Sequenzdiagramme Entwicklern und Architekten dabei, zu planen und zu verstehen, wie verschiedene Komponenten und Objekte interagieren, um bestimmte Funktionen zu erfüllen.
- Sie liefern eine Blaupause für das Verhalten des Systems.
- Kommunikation und Zusammenarbeit:
- Sequenzdiagramme dienen als Kommunikationsinstrument zwischen Beteiligten, darunter Entwicklern, Designern, Projektmanagern und Kunden.
- Sie helfen dabei, komplexe Interaktionen in einem leicht verständlichen visuellen Format zu vermitteln und fördern so die Zusammenarbeit und das gemeinsame Verständnis.
- Klärung der Anforderungen:
- Bei der Verfeinerung von Systemanforderungen können Sequenzdiagramme verwendet werden, um die erwarteten Interaktionen zwischen Systemkomponenten oder zwischen dem System und externen Einheiten zu verdeutlichen und zu spezifizieren.
- Sie tragen dazu bei, ein gemeinsames Verständnis des Systemverhaltens bei allen Beteiligten sicherzustellen.
- Debugging und Fehlerbehebung:
- Entwickler verwenden Sequenzdiagramme als Debugging-Tool, um Probleme im Zusammenhang mit der Reihenfolge und dem Timing von Nachrichten während Systeminteraktionen zu identifizieren und zu analysieren.
- Es bietet eine visuelle Darstellung des Kontrollflusses und hilft bei der Lokalisierung und Lösung von Problemen.
4. Herausforderungen bei der Verwendung von Sequenzdiagrammen
- Komplexität und Größe:
- Mit zunehmender Komplexität von Systemen können Sequenzdiagramme groß und kompliziert werden. Es kann eine Herausforderung sein, die Größe des Diagramms zu verwalten und gleichzeitig die Wechselwirkungen genau darzustellen, und zu komplexe Diagramme können schwierig zu verstehen sein.
- Abstraktionsebene:
- Die richtige Balance in Sachen Abstraktion zu finden, kann eine Herausforderung sein. Sequenzdiagramme müssen detailliert genug sein, um die notwendigen Informationen zu vermitteln, aber zu viele Details können den Leser überfordern. Es ist wichtig, sich auf die kritischsten Interaktionen zu konzentrieren, ohne sich in Kleinigkeiten zu verlieren.
- Dynamische Natur:
- Sequenzdiagramme stellen dynamische Aspekte eines Systems dar und können sich daher während des Entwicklungsprozesses häufig ändern. Sequenzdiagramme auf dem neuesten Stand des sich entwickelnden Systems zu halten, kann eine Herausforderung sein, insbesondere in sich schnell ändernden oder agilen Entwicklungsumgebungen.
- Mehrdeutigkeit in Nachrichten:
- Manchmal kann es schwierig sein, die genaue Art von Nachrichten zwischen Objekten zu definieren. Unklarheiten im Inhalt oder in der Bedeutung der Nachricht können zu Missverständnissen zwischen den Beteiligten führen und die Genauigkeit des Sequenzdiagramms beeinträchtigen.
- Parallelität und Parallelität:
- Die Darstellung gleichzeitiger und paralleler Prozesse kann komplex sein. Während Sequenzdiagramme über Mechanismen verfügen, um die parallele Ausführung anzuzeigen, kann die Visualisierung mehrerer gleichzeitig stattfindender Interaktionen eine Herausforderung sein und möglicherweise zusätzliche Diagrammelemente erfordern.
- Echtzeiteinschränkungen:
- Die Darstellung von Echtzeitbeschränkungen und präzisen Timing-Anforderungen kann eine Herausforderung sein. Während Sequenzdiagramme eine sequentielle Darstellung bieten, sind für die genaue Erfassung und Kommunikation von Echtzeitaspekten möglicherweise zusätzliche Dokumentation oder ergänzende Diagramme erforderlich.