Sequenzdiagramme (engl. Sequence Diagram) dienen zur dynamischen Modellierung von Kommunikationsabläufen und Interaktionen zwischen Systemkomponenten¹. Der zeitliche Verlauf bekommt in dieser Darstellungsform eine besondere Bedeutung. Dieser Artikel soll Ihnen dabei behilflich sein, Sequenzdiagramme richtig und sinnvoll zu modellieren. Dabei wird auf die gängigsten Komponenten eingegangen.
Warum verwendet man Sequenzdiagramme?
Bevor Sie mit der Modellierung starten, sollten Sie bereits Kenntnisse in UML (Unified Modelling Language) oder SysML (System Modelling Language) besitzen ². Falls nicht, haben wir einige interessante Artikel zu diesem Thema (mehr lesen). Wie bereits erwähnt handelt es sich bei einem Sequenzdiagramm um eine dynamische Darstellungsform. Anders als bei statischen Diagramme, werden Abläufe und Interaktionen des Systems, der Software oder der Hardware beschrieben. Im Diagramm sind also die Komponenten vorhanden, die miteinander interagieren oder Informationen austauschen und die Reihenfolge wie dies geschieht. Deshalb stellt die vertikale Achse des Sequenzdiagramms die Zeitachse dar. Die Leserichtung geht von oben nach unten. Mithilfe von Pfeilen in horizontaler Richtung können dann die Kommunikationen bzw. Interaktionen zwischen den Komponenten dargestellt werden. Sequenzdiagramme in SysML unterscheiden sich nicht zu derer in UML. In der folgenden Abbildung ist ein Sequenzdiagramm dargestellt, das bereits die wichtigen Modellierungselemente beinhaltet. Ein Benutzer verwendet in dem Beispiel eine Tastatur, um Zahlen auf einen Bildschirm ausgeben zu können. Wird ein Taster der Tastatur betätigt, wird eine Nachricht an den Computer gesendet. Um die Nachricht auswerten zu können, erstellt der Computer eine neue Instanz der Klasse „Message Parser“. Anschließend erhält er den ausgewählten Taster und kann überprüfen, ob es sich um eine Zahl handelt. Wenn ja, wird die Zahl auf dem Bildschirm ausgegeben. Wenn nicht, erscheint der String „not a number“.
Pro und Contra von Sequenzdiagrammen
Es ist nicht immer sinnvoll jedes Systemverhalten als Sequenzdiagramm abzubilden. Sie sollte sich deshalb immer im Klaren sein, warum Sie etwas modellieren möchten und welchen Zweck das Diagramm erfüllen soll. Die folgenden Pros und Contras können Ihnen bei der Entscheidung „modellieren oder nicht modellieren“ helfen.
Pro:
- Anwendungsfälle können detailliert dargestellt werden
- Interaktionen und Kommunikationsabläufen zwischen Systemkomponenten und Aktoren werden sehr verständlich
- Verhaltensentscheidungen können mithilfe von Sequenzdiagramme getroffen werden
- Abgleich des Ist-Zustands mit dem Wunsch-Zustand
- Sehr gut geeignet zur Dokumentation von Testfällen
- Befassen mit komplexer Logik, Prozessen oder Methoden
Contra:
- Sequenzdiagramme bilden nur Schnappschuss des Systems unter bestimmten Umständen ab
- Sehr hoher Wartungsaufwand bei Veränderungen am Systemverhalten
- Unmöglich jeden Schnappschuss darzustellen
- Modellierung eines Verhaltens, dass in der Realität so nicht realisiert ist
- Sequenzdiagramme neigen dazu, schnell komplex und unleserlich zu werden
Usecases von Sequenzdiagrammen
Auch Sequenzdiagramme haben unterschiedliche Usecases. In der Entwicklung von Medizingeräten eignen sich Sequenzdiagramme besonders in den folgenden Szenarien:
- Verhaltensweise von Methoden: Während der Softwareentwicklung werden Sequenzdiagramme überwiegend verwendet, um die Funktionsweise von Methoden bzw. Funktionen zu modellieren. Die Modellierung kann reverse stattfinden oder bereits zur Entscheidungsfindung zum Aufbau von Methoden verwendet werden.
- Zeitlicher Ablauf von Testfällen: Auch die Dokumentation von Testfällen ist wichtig, um später Tests und mögliche Fehler reproduzieren zu können. Mithilfe des Sequenzdiagramms kann der zeitliche Ablauf der Tests beschrieben werden. Bilder sagen oft mehr als tausend Worte. Denken Sie aber daran, das Diagramm möglichst einfach zu gestalten, sodass es gut lesbar und leicht verständlich ist.
- System Usecases: Auch in der obersten Modellierungsebene, der Systemebene, können Sequenzdiagramme verwendet werden, um die Usescases (z. dt. Anwendungsfälle) des Systems abzubilden. Besonders schwierige oder unklare Anwendungsfälle können so dokumentiert werden.
Komponenten von Sequenzdiagrammen
Ganz ohne Theorie lassen sich auch Sequenzdiagramme nicht erstellen. UML und SysML spezifiziert Symbole, Elemente und deren Namen. Auf die wichtigsten Symbole bzw. Elemente soll nun eingegangen werden. Mithilfe dieser Symbole können Sie selbstständig leserliche Sequenzdiagramme erstellen.
Bilder können zum Vergrößern angeklickt werden.
Symbol | Name | Beschreibung |
---|---|---|
Lebenslinie | Eine Lebenslinie ist ein Teilnehmer bzw. eine Komponente der aktuellen Darstellung. Mit Lebenslinien kann interagiert und Informationen ausgetauscht werden. Interaktionen zwischen Teilnehmern bzw. Komponenten werden mit Pfeilen dargestellt (siehe asynchroner bzw. synchroner Pfeil). | |
Akteur | Ein Akteur ist ein Benutzer des Systems. Akteure können menschliche Benutzer sein aber auch Maschinen, andere Systeme oder Subsysteme. Alles, was außerhalb der Systemgrenze mit dem System interagiert wird auch als Akteur bezeichnet. Weitere Informationen zu Akteuren und dem System Kontext bzw. Systemgrenzen erhalten Sie hier: https://medtech-ingenieur.de/category/systemarchitekten/ | |
Grenze | Eine Grenze kann verwendet werden, um die Systemgrenze zu modellieren. Hier können also die Schnittstellen verwendet werden, die im System Kontext Diagramm spezifiziert sind. Grenzen können auch als Lebenslinien mit dem Stereotypen „boundary“ oder „interface“ realisiert werden. | |
Aktivitätsbalken | Aktivitätsbalken stellen dar, wie viel Zeit eine Komponente für eine Aufgabe benötigt. Je länger eine Ausführung andauert, desto länger ist auch der Aktivitätsbalken. In der oberen Abbildung ist zu sehen, dass die Durchführung der Gesamtaufgabe (Tastendruck ⇾ Darstellung auf Display) natürlich am meisten Zeit benötigt. | |
Asynchrone Nachricht | Asynchrone Funktionsaufrufe oder Nachrichten werden mit einer durchgezogenen Linie und einer nicht ausgefüllten Pfeilspitze dargestellt. Der Funktionsaufruf und Eingabeparameter können darüber geschrieben werden. | |
Synchrone Nachricht | Synchrone Funktionsaufrufe oder Nachrichten werden mit einer durchgezogenen Linie und einer ausgefüllten Pfeilspitze dargestellt. Der Funktionsaufruf und Eingabeparameter können darüber geschrieben werden. | |
Return | Handelt es sich um einen Funktionsreturn oder allgemein um einen Return, kann ein gestrichelter Pfeil in umgekehrter Richtung mit nicht ausgefüllter Pfeilspitze verwendet werden. Rückgabeparameter können über den Pfeil geschrieben werden. | |
New | Wird eine neue Instanz eines Objektes angelegt, kann ein gestrichelter Pfeil mit nicht ausgefüllter Pfeilspitze und dem Stereotypen <<create>> verwendet werden. | |
Delete | Wird eine Instanz gelöscht, kann dies durch das Delete-Symbol dargestellt werden. Ab diesem Zeitpunkt existiert der Teilnehmer bzw. die Komponente nicht mehr. Bsp. siehe Abbildung „Message Parser“. | |
Fragmente | Fragmente werden verwendet, um ganz allgemein gesagt Abläufe zu beeinflussen. Fragmente können While-Schleifen oder If-Else-Bedingungen realisieren. Hierfür gibt es unterschiedliche Begriffe wie „alt“, die in das Fragment eingefügt werden. Die wichtigsten Begriffe sind:
|
Tool zur Erstellung von Sequenzdiagrammen
Bei MEDtech-Ingenieur kommt das Tool Enterprise Achitect zum Einsatz. Enterprise Architect ist ein kostenpflichtiges Tool von Sparx Systems und kann dazu verwendet werden, Diagramme in SysML, UML und weiteren Modellierungssprachen zu erstellen. Das Tool ist für die Systementwicklung sehr gut geeignet². Dokumentationen können automatisch generiert werden. Das Tool kann hier kostenlos als Testversion heruntergeladen und hier gekauft werden.
¹ Mehr über Systemkomponenten erfahren Sie in diesem Artikel: https://medtech-ingenieur.de/systeme-in-der-medizintechnik-sinnvolle-grenzen-setzen/
² System Architektur richtig erstellen mit UML und SysML: https://medtech-ingenieur.de/system-architektur/ und https://medtech-ingenieur.de/sprechen-sie-sysml/