Sequenzdiagramm
Sequenzdiagramme sind eng mit dem Strukturmodell gekoppelt. Ein Sequenzdiagramm stellt die Interaktion eines Akteurs mit den Objekten des Strukturmodells und ihre Interaktion untereinander dar.
Im Rahmen dieses Tutorials soll erklärt werden, wie das nachfolgende Sequenzdiagramm für die Aktivität „Artikel hinzufügen“ mit Astah modelliert werden kann.
Sequenzdiagramme sind eng mit dem Strukturmodell gekoppelt und stellen die Interaktion eines Akteurs mit den Objekten des Strukturmodells und ihre Interaktion untereinander dar. Ausgehend vom Strukturmodell aus dem Tutorial T 2.6 Klassendiagramme:
soll der folgende Ablauf dargestellt werden:
Ablauf der Aktion „Artikel hinzufügen“:
- Nummerierter ListenpunktDer Manager erstellt in der GUI den neuen Artikel mit allen in der Eingabemaske geforderten Informationen und klickt auf „Neuen Artikel hinzufügen“.
- Nummerierter ListenpunktDie GUI (bzw. das verantwortliche GUI-Objekt) holt sich über den zentralen OrderController den WarehouseController.
- Nummerierter ListenpunktAuf dem WarehouseController wird die Methode addNewItem(String name, int stock) mit den passenden Parametern aufgerufen.
- Nummerierter ListenpunktInnerhalb der Methode addNewItem(String name, int stock) wird eine neue ItemId für den neuen Artikel generiert und dann ein neues Item-Objekt erzeugt und dem Warehouse hinzugefügt.
- Nummerierter ListenpunktAbschließend wird mittels des WarehouseStockTableAUI-Objekts die GUI aktualisiert.
Das Astah Werkzeug
Zum Erstellen eines Sequenzdiagramms wählt man Diagramm → Sequence Diagram in einem bestehenden Projekt aus.
ProTipp: Um das Modellieren zu vereinfachen und Konsistenz zwischen dem Strukturmodell und dem Sequenzdiagramm zu gewährleisten, empfiehlt es sich, die Astah-Datei des Strukturmodells zu kopieren und das Sequenzdiagramm im selben Projekt zu erzeugen. Dadurch schlägt Astah bei Eingabe der Methode alle passenden Methoden zur Autovervollständigung. Ebenfalls können so im Strukturmodell fehlende Methoden schnell ermittelt werden.
Astah Werkzeugleiste für Sequenzdiagramme: Die Werkzeugleiste für Sequenzdiagramme unterscheidet sich von der für Klassendiagramme. Folgend werden die wichtigsten Werkzeuge vorgestellt:
Werkzeugleiste für Sequenzdiagramme
Symbol | Bezeichnung | Funktion |
---|---|---|
Select | Auswahltool, mit dem Elemente ausgewählt und verschoben werden können. | |
Lifeline | Erstellt ein neues Objekt mit seiner Lebenslinie. | |
Message | Eine synchrone Nachricht an / ein synchroner Methodenaufruf auf einem Objekt. | |
Asynchronous Message | Eine asynchrone Nachricht an / ein asynchroner Methodenaufruf auf einem Objekt. | |
Create Message | Eine Nachricht, die ein Objekt erzeugt. In der Regel der Konstruktor. | |
Destroy Message | Eine Nachricht, die ein Objekt zerstören soll. In Java nicht verfügbar. | |
Reply Message | Antwortnachricht bzw. Rückgabewert einer Methode. | |
Stop | Zeigt die Zerstörung eines Objekts an und beendet die Lebenslinie. | |
Combined Fragment | Fragmente zum Steuern des Kontrollflusses. Beispielsweise Schleifen oder Bedienungen. | |
Note | Notizzettel für weitere Anmerkungen wie z.B. das Werfen von Exceptions. |
Es ist ebenfalls möglich, einen Aufruf von Außerhalb eines Diagramms darzustellen. Dazu muss der Aufruf auf dem Rand des Diagramms beginnen. Entsprechend kann dann auch ein Rückgabepfeil gesetzt werden.
Tutorial
- Erstellen Sie ein neues Sequenzdiagramm in einem bereits existierenden Projekt, welches das Strukturmodell enthält.
Diagram → Sequenzdiagramm
(Alternativ laden Sie sich das Astah-Projekt mit modelliertem Strukturmodell herunter)
- Tragen Sie den Titel des Sequenzdiagramms in den Kasten oben links anstelle von Sequence Diagram0 ein.
- Wählen Sie im Dropdown-Menü für die Objekte die Lifeline(Actor) aus.
Geben Sie dem Actor den Namen „lagerverwalter“ vom Typ Management. Die beiden Bezeichner werden durch „:“ separiert.
- Fügen sie nun ein Objekt vom Typ GUI und dem Bezeichner „gui“ hinzu. Dazu wählen Sie aus dem Dropdown-Menü für die Objekte eine Lifeline. Das GUI-Objekt steht stellvertretend für alle GUI-Objekte des Programms. Es repräsentiert also alle Views und besitzt alle Eingaben des Nutzers.
Der Stereotyp «view» kann nach Auswahl des Objektes in der linken Leiste über Property → Stereotype → Add hinzugefügt werden.
- Fügen Sie einen synchronen Aufrufpfeil vom lagerverwalter zur gui ein und beschriften Sie in mit „Neuen Artikel hinzufügen“. Die Klammern werden von Astah automatisch gesetzt. Der Pfeil repräsentiert das Anstoßen der Aktion „Artikel hinzufügen“ durch den Nutzer.
- Erstellen Sie ein Objekt vom Typ OrderController mit dem Namen „oc“. Es repräsentiert das im laufenden Programm existierende OrderController-Objekt. Weiter fügen einen Pfeil mit dem Methodenaufruf getWarehouseController() hinzu. Im Normalfall sollte Astah dies nach Eingabe des ersten Buchstabens anzeigen, so dass Sie den Methodenaufruf nur noch auswählen müssen.
- Da die Methode getWarehouseController() den Rückgabetyp WarehoueController hat, muss noch ein Zurück-Pfeile mit dem Namen „wc“ des zurückgegebenen Warehouse-Objektes im Diagramm hinzugefügt werden.
- Folgend soll auf dem WarehouseController die Methode addNewItem(String name, int stock) aufgerufen werden. Dies wird wieder mit einem synchronen Pfeil dargestellt. Da die Methode die beiden Parameter name und stock besitzt, müssen diese noch die richtigen Werte übergeben bekommen. Da die GUI die Werte kennt, nehmen wir an, dass sie diese in den Attributen name und stock gespeichert hat und diese somit beim Methodenaufruf übergeben werden.
Häufiger Fehler: Meist wird vergessen, die Parameter anzupassen und stattdessen die Methodendefinition mit den Parametertypen angegeben. Da es sich jedoch um einen Methodenaufruf auf einem Objekt handelt, dürfen die Typen der Parameter nicht aufgeführt werden (vgl. Java-Code).
- Fügen Sie ein Warehouse-Objekt mit dem Name warehouse hinzu und rufen sie auf dem Objekt die Methode generateNewItemId() auf, die eine freie Id mit dem Namen itemId liefert.
- Um den neuen Artikel dem Datenbestand hinzufügen zu können, wird ein Objekt vom Typ Item mit dem Namen newItem benötigt. Fügen Sie dies in bekannter Weise in das Diagramm ein.
- Um kenntlich zu machen, dass das neue Item erst innerhalb der Methode erzeugt wird, verbinden Sie den Balken des WarehouseController mittels eines Create-Pfeils mit der Lebenslinie von newItem. Dieses wird nach dem Verbinden auf die Höhe des Pfeils versetzt und kennzeichnet so, dass das Objekt erst ab diesem Zeitpunkt existiert. Als Methodenaufruf auf dem Create-Pfeil wählen Sie den Konstruktor mit den Parametern itemId, name und stock.
- Rufen Sie nun auf dem Warehouse die Methode addNewItem(Item item) mit dem Parameter newItem auf, um den neu erzeugten Artikel in den Datenbestand des Warehouse-Objekts aufzunehmen.
- Abschließend muss noch die GUI benachrichtigt werden, dass sich der Datenbestand geändert hat und sie neue Daten anzeigen muss. Dazu wird auf dem WarehouseStockTableAUI-Objekt die Methode.
- Abschließend kann das nun fertige Sequenzdiagramm als Bild exportiert werden.
Das Tutorial im Zeitraffer