Sequenzdiagramme richtig modellieren – Wann, Warum und Wie?

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”.

Beispiel eines Sequenzdiagramms

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 folgende 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.
Ihr Ansprechpartner:
Dipl.-Ing. Goran Madzar, Systemingenieur und Projektleiter
E-Mail: madzar@medtech-ingenieur.de
Tel.:  +49 9131 691 240
Benötigen Sie Unterstützung bei der Entwicklung Ihres Medizingeräts? Wir helfen gerne! MEDtech-Ingenieur bietet Hardware-, Software Entwicklung, Systems Engineering und Beratung aus einer Hand. Nehmen Sie Kontakt auf.

Kontakt aufnehmen

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.

SymbolNameBeschreibung
LebenslinieEine 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).
AkteurEin 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/
GrenzeEine 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ätsbalkenAktivitä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 NachrichtAsynchrone 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 NachrichtSynchrone Funktionsaufrufe oder Nachrichten werden mit einer durchgezogenen Linie und einer ausgefüllten Pfeilspitze dargestellt. Der Funktionsaufruf und Eingabeparameter können darüber geschrieben werden.
ReturnHandelt 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.
NewWird eine neue Instanz eines Objektes angelegt, kann ein gestrichelter Pfeil mit nicht ausgefüllter Pfeilspitze und dem Stereotypen <<create>> verwendet werden.
DeleteWird 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”.
FragmenteFragmente 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:

  • alt == alternative bzw. If-Else
  • assert == assertion
  • break
  • consider
  • critical == critical region
  • ignore
  • loop (z. B. While-Schleife)
  • neg == negative
  • opt == option
  • par == parallel
  • ref == link
  • seq == weak sequencing
  • strict == strict sequencing

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/

Auch interessant:

Koexistenz zwischen Anforderungs- und Modellierungswerkzeug

Auf dem Requirementsengineering Barcamp 2016 in Köln hatte ich eine Session zu genau diesem Thema. Auf der einen Seite die Anforderungen, auf…

Daniel Saffer

Daniel Saffer studiert Elektro- und Informationstechnik (Master) an der Hochschule Coburg. Zurzeit arbeitet er als Masterand im Ingenieurbüro Madzar und Bosch. Aktuelle Aufgabengebiete umfassen die hardwarenahe Entwicklung in C und die Entwicklung einer skalierbaren GUI-Plattform für medizinische Geräte.

Getagged mit: , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.