UML Sequenzdiagramm: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Amanasiki (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(70 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
TODO:
Ein '''Sequenzdiagramm''' ist ein '''Verhaltensdiagramm''', welches eine '''Interaktion''' im Sinne der '''UML''' grafisch darstellt.<br>
* Was ist ein Sequenzdiagramm?
'''Sequenzdiagramme''' dienen zur '''dynamischen Modellierung''' von '''Kommunikationsabläufen''' und '''Interaktionen''' zwischen '''Systemkomponenten'''. Der zeitliche Verlauf bekommt in dieser Darstellungsform eine besondere Bedeutung. Die Leseflussrichtung in '''Sequenzdiagrammen''' erfolgt in der Regel von '''oben nach unten''' und '''von links nach rechts'''.


* Wozu wird es benötigt?
= Usecase =
Sequenzdiagramme dienen zur dynamischen Modellierung von Kommunikationsabläufen und Interaktionen zwischen Systemkomponenten. Der zeitliche Verlauf bekommt in dieser Darstellungsform eine besondere Bedeutung.  
== Verhaltensweise von Methoden ==
Während der Softwareentwicklung werden '''Sequenzdiagramme''' überwiegend verwendet, um die Funktionsweise von '''Methoden bzw. Funktionen''' zu modellieren. Die Modellierung kann reverse (nach dem die Software bereits entwickelt wurde) 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.


* Welche Elemente gibt es? Erkläre dies so detailliert und anschaulich wie möglich
== System Usecases ==
• Option:
Auch in der obersten Modellierungsebene, der Systemebene, können '''Sequenzdiagramme''' verwendet werden, um die '''Usescases''' ('''Anwendungsfälle''') des Systems abzubilden. Besonders schwierige oder unklare '''Anwendungsfälle''' können so dokumentiert werden.
Optionen sind mit dem Struktogrammelement „einseitige Verzweigung“ vergleichbar. Der eingerahmte Bereich
wird bei Nichterfüllung der Bedingung
(genannt „Guard“) übersprungen. Es
muss aus dem Kontext erkennbar sein,
woher die Daten für die Bedingungsprüfung stammen.
Zur Kennzeichnung wird in den oberen
linken Bereich „opt“ notiert.
[[Datei:Option.jpg|mini|none]]
• Alternative


• Schleife
= Zusammenfassung =
• Abbruch
• Negation
• Parallelität
• Schwache und strikte Sequenz
• Kritischer Bereich
• Relevante und irrelevante Nachrichten


* Erstelle ein paar anschauliche Beispiele
'''Sequenzdiagramme''' gehören zur '''UML''' und sind in der Prozessmodellierung sowie in der Software-Entwicklung zur Darstellung der '''Interaktion''' von Objekten untereinander sehr verbreitet. In der Prozessmodellierung stellen '''Sequenzdiagramme''' die '''Interaktionen''' zwischen '''Akteuren''' und dem '''Geschäftssystem''' dar. Als Modellierungssprache sind '''Sequenzdiagramme''' insbesondere in der Informatik bzw. Wirtschaftsinformatik verbreitet. Die gegenseitigen Abhängigkeiten, Aufrufhierarchien und Lebenszeiten von Objekten können einem '''Sequenzdiagramm''' leicht verständlich entnommen 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).
== Sequenzdiagramme zeigen ==
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.
* '''Abhängigkeiten:''' Welche Objekte interagieren mit welchen anderen Objekten?
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.
* '''Aufrufhierarchie:''' Welche Objekte rufen das Objekt auf und welche werden vom Objekt aufgerufen?
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.
* '''Lebenszeiten:''' Wie lange existieren Objekte bzw. wie lange werden Objekte benötigt?
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”.
* '''Aktivitätszeiten:''' Wie lange sind Objekte aktiv?
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:
 
alt == alternative bzw. If-Else
= Elemente von Sequenzdiagrammen =
assert == assertion
Im folgenden werden die wichtigsten Elemente von '''Sequenzdiagrammen''' beschrieben.
break
== Objekte ==
consider
'''Objekte''' sind die wichtigsten Elemente im '''Sequenzdiagramm''' und werden mit einem Rechteck dargestellt. Der Objektname wird unterstrichen. '''Objekte''' können als Klassenobjekte in der objektorientierten Programmierung verstanden werden. Meistens werden sie mit '''Objektname:Klassenname''' beschrieben.  
critical == critical region
 
ignore
[[Datei:12324324.jpg|mini|none|]]
loop (z. B. While-Schleife)
Die '''Objekte''' repräsentieren '''Objekte''' aus '''Klassen''' im [[UML Klassendiagramm|Klassendiagramm]]. Objekte können auch Lebewesen sein, z. B. das Objekt “Miau” der Klasse “Katze”.
neg == negative
 
opt == option
== Lebenslinien ==
par == parallel
 
ref == link
'''Lebenslinien''' verlaufen vertikal (Lesefluss von oben nach unten) und zeigen die Existenzlaufzeit von {{Link|Objekte|Objekten}} im System an. Ein {{Link|Objekte|Objekt}} kann nur eine '''Lebenslinie''' haben.
seq == weak sequencing
 
strict == strict sequencing
[[Datei:2sefef.jpg|mini|none|]]
 
Jede Lebenslinie beginnt mit einem {{Link|Objekte|Objekt}} oder '''Akteur'''.
 
== Nachricht ==
 
Zwischen {{Link|Lebenslinien}} und Aktivitätsbalken der {{Link|Objekte}} können '''Nachrichten''' gesendet bzw. empfangen werden. Trifft eine '''Nachricht''' auf eine {{Link|Lebenslinie}}, wird eine {{Link|Aktivitätsbalken (Aktivitäsphasen|Aktivitätsphase}} eröffnet.
[[Datei:2a.jpg|mini|none|]]
Die zeitliche Reihenfolge erfolgt chronologisch von oben nach unten.
 
=== Klarstellung Synchrone/Asynchrone Nachricht ===
Beim weiter unten ersichtlichen Beispiel bitte auf die korrekte Verwendung der '''Notation''' der '''Nachrichten''' achten. Im Beispiel ist wahrscheinlich das meiste '''synchron''' weiters sollte die '''create''' Notation für das erstellen der '''Pommes''' verwendet werden.
[[Datei:UmlSequenzdiagramm-3.svg.png|mini|400px|none|Man beachte den '''{{Link|Aktivitätsbalken (Aktivitätsphasen)|Aktivitätsbalken}}''' bei der '''synchronen Nachricht mit Rückgabe''' <ref>https://de.wikipedia.org/wiki/Sequenzdiagramm</ref>]]
 
== Aktivitätsbalken (Aktivitätsphasen) ==
 
'''Aktivitätsbalken''' überlagern {{Link|Lebenslinien}} und zeigen '''Aktivitätsphasen''' von {{Link|Objekte|Objekten}} in '''Sequenzdiagrammen''', denn es ist nicht immer alles aktiv. Wenn etwas aktiv ist, ist der Balken über der {{Link|Lebenslinien}}. Ist der Balke nicht mehr da, so ist das Objekt im Moment nicht aktiv. Der '''Aktivitätsbalken''' wird auch bei '''synchronen {{Link|Nachricht|Nachrichten}} mit Rückgabe''' verwendet.
 
[[Datei:2b.jpg|mini|none|]]
 
== Beispiel Essensbestellung bei McDonald's ==
 
1. Ein Kunde geht zu McDonald's und bestellt bei dem Mitarbeiter Pommes.
2. Der Mitarbeiter fragt den Kunden, ob er Mayo haben will.
'''ACHTUNG'''
* Bei '''mayoAsk()''' fehlt der Pfeil nach links. Die '''Nachricht''' geht vom '''Mitarbeiter''' zum '''Kunden'''
* '''Pfeilnotation''' teilweise nicht korrekt, wenn '''synchrone Nachricht''', dann '''ausgefüllte Spitze'''
* '''Create Notation''' für erstellen von Pommes verwenden
 
[[Datei:2c.jpg|mini|none|]]
 
3. Der Kunde bestätigt dies.
 
[[Datei:2d.jpg|mini|none|]]
 
4. Dann fängt der Mitarbeiter an, die Pommes vorzubereiten und nach einiger Zeit liefert er dem Kunden die Pommes.
 
[[Datei:2e.jpg|mini|none|]]
 
5. Der Kunde isst die Pommes.
 
[[Datei:2f.jpg|mini|none|]]
 
 
Objekte: Modellierung von Kunde als '''k''' der Klasse Kunde, Fast-Food Mitarbeiter als '''m''' der Klasse Mitarbeiter.
 
= Zusatzmaterial für die Füchsle unter uns =
 
[[Datei:Awd.jpg|mini|600px|none]]
[[Datei:Aaa.jpg|mini|600px|none]]
[[Datei:Amana.jpg|mini|600px|none]]
[[Datei:WIN 20181009 14 01 22 Pro.jpg|mini|none|600px]]
 
== Quellen ==
 
 
https://www.youtube.com/watch?v=16VdlGiHTq0&ab_channel=Draw-My-BusinessAnabelDerlam
 
https://www.der-wirtschaftsingenieur.de/index.php/sequenzdiagramm/
 
https://www.ionos.at/digitalguide/websites/web-entwicklung/sequenzdiagramme-mit-uml-erstellen/

Aktuelle Version vom 5. März 2021, 10:55 Uhr

Ein Sequenzdiagramm ist ein Verhaltensdiagramm, welches eine Interaktion im Sinne der UML grafisch darstellt.
Sequenzdiagramme dienen zur dynamischen Modellierung von Kommunikationsabläufen und Interaktionen zwischen Systemkomponenten. Der zeitliche Verlauf bekommt in dieser Darstellungsform eine besondere Bedeutung. Die Leseflussrichtung in Sequenzdiagrammen erfolgt in der Regel von oben nach unten und von links nach rechts.

Usecase

Verhaltensweise von Methoden

Während der Softwareentwicklung werden Sequenzdiagramme überwiegend verwendet, um die Funktionsweise von Methoden bzw. Funktionen zu modellieren. Die Modellierung kann reverse (nach dem die Software bereits entwickelt wurde) 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 (Anwendungsfälle) des Systems abzubilden. Besonders schwierige oder unklare Anwendungsfälle können so dokumentiert werden.

Zusammenfassung

Sequenzdiagramme gehören zur UML und sind in der Prozessmodellierung sowie in der Software-Entwicklung zur Darstellung der Interaktion von Objekten untereinander sehr verbreitet. In der Prozessmodellierung stellen Sequenzdiagramme die Interaktionen zwischen Akteuren und dem Geschäftssystem dar. Als Modellierungssprache sind Sequenzdiagramme insbesondere in der Informatik bzw. Wirtschaftsinformatik verbreitet. Die gegenseitigen Abhängigkeiten, Aufrufhierarchien und Lebenszeiten von Objekten können einem Sequenzdiagramm leicht verständlich entnommen werden.

Sequenzdiagramme zeigen

  • Abhängigkeiten: Welche Objekte interagieren mit welchen anderen Objekten?
  • Aufrufhierarchie: Welche Objekte rufen das Objekt auf und welche werden vom Objekt aufgerufen?
  • Lebenszeiten: Wie lange existieren Objekte bzw. wie lange werden Objekte benötigt?
  • Aktivitätszeiten: Wie lange sind Objekte aktiv?

Elemente von Sequenzdiagrammen

Im folgenden werden die wichtigsten Elemente von Sequenzdiagrammen beschrieben.

Objekte

Objekte sind die wichtigsten Elemente im Sequenzdiagramm und werden mit einem Rechteck dargestellt. Der Objektname wird unterstrichen. Objekte können als Klassenobjekte in der objektorientierten Programmierung verstanden werden. Meistens werden sie mit Objektname:Klassenname beschrieben.

Die Objekte repräsentieren Objekte aus Klassen im Klassendiagramm. Objekte können auch Lebewesen sein, z. B. das Objekt “Miau” der Klasse “Katze”.

Lebenslinien

Lebenslinien verlaufen vertikal (Lesefluss von oben nach unten) und zeigen die Existenzlaufzeit von Objekten im System an. Ein Objekt kann nur eine Lebenslinie haben.

Jede Lebenslinie beginnt mit einem Objekt oder Akteur.

Nachricht

Zwischen Lebenslinien und Aktivitätsbalken der Objekte können Nachrichten gesendet bzw. empfangen werden. Trifft eine Nachricht auf eine Lebenslinie, wird eine Aktivitätsphase eröffnet.

Die zeitliche Reihenfolge erfolgt chronologisch von oben nach unten.

Klarstellung Synchrone/Asynchrone Nachricht

Beim weiter unten ersichtlichen Beispiel bitte auf die korrekte Verwendung der Notation der Nachrichten achten. Im Beispiel ist wahrscheinlich das meiste synchron weiters sollte die create Notation für das erstellen der Pommes verwendet werden.

Man beachte den Aktivitätsbalken bei der synchronen Nachricht mit Rückgabe [1]

Aktivitätsbalken (Aktivitätsphasen)

Aktivitätsbalken überlagern Lebenslinien und zeigen Aktivitätsphasen von Objekten in Sequenzdiagrammen, denn es ist nicht immer alles aktiv. Wenn etwas aktiv ist, ist der Balken über der Lebenslinien. Ist der Balke nicht mehr da, so ist das Objekt im Moment nicht aktiv. Der Aktivitätsbalken wird auch bei synchronen Nachrichten mit Rückgabe verwendet.

Beispiel Essensbestellung bei McDonald's

1. Ein Kunde geht zu McDonald's und bestellt bei dem Mitarbeiter Pommes.

2. Der Mitarbeiter fragt den Kunden, ob er Mayo haben will.

ACHTUNG
* Bei mayoAsk() fehlt der Pfeil nach links. Die Nachricht geht vom Mitarbeiter zum Kunden
* Pfeilnotation teilweise nicht korrekt, wenn synchrone Nachricht, dann ausgefüllte Spitze
* Create Notation für erstellen von Pommes verwenden

3. Der Kunde bestätigt dies.

4. Dann fängt der Mitarbeiter an, die Pommes vorzubereiten und nach einiger Zeit liefert er dem Kunden die Pommes.

5. Der Kunde isst die Pommes.


Objekte: Modellierung von Kunde als k der Klasse Kunde, Fast-Food Mitarbeiter als m der Klasse Mitarbeiter.

Zusatzmaterial für die Füchsle unter uns

Quellen

https://www.youtube.com/watch?v=16VdlGiHTq0&ab_channel=Draw-My-BusinessAnabelDerlam

https://www.der-wirtschaftsingenieur.de/index.php/sequenzdiagramm/

https://www.ionos.at/digitalguide/websites/web-entwicklung/sequenzdiagramme-mit-uml-erstellen/