UML Sequenzdiagramm: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein '''Sequenzdiagramm''' ist ein '''Verhaltensdiagramm''', welches eine '''Interaktion''' im Sinne der '''UML''' grafisch darstellt.
Ein '''Sequenzdiagramm''' ist ein '''Verhaltensdiagramm''', welches eine '''Interaktion''' im Sinne der '''UML''' grafisch darstellt.<br>
'''* Wozu wird es benötigt?'''
'''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'''.
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.


==== Auch Sequenzdiagramme haben unterschiedliche Usecases. ====  
= 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.


'''Verhaltensweise von Methoden:'''  
== System Usecases ==
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.
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 =


'''Zeitlicher Ablauf von Testfällen:'''  
'''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.  
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.


 
== Sequenzdiagramme zeigen ==
'''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.
 
 
== Nochmals eine (hoffentlich) verständliche 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?
* '''Abhängigkeiten:''' Welche Objekte interagieren mit welchen anderen Objekten?
Zeile 31: Zeile 25:
* '''Aktivitätszeiten:''' Wie lange sind Objekte aktiv?
* '''Aktivitätszeiten:''' Wie lange sind Objekte aktiv?


 
= Elemente von Sequenzdiagrammen =
== Welche Elemente gibt es? Erkläre dies so detailliert und anschaulich wie möglich ==
Im folgenden werden die wichtigsten Elemente von '''Sequenzdiagrammen''' beschrieben.
== Objekte ==
==== 1. 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.  
 
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.  


[[Datei:12324324.jpg|mini|none|]]
[[Datei:12324324.jpg|mini|none|]]
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”.


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 {{Link|Objekte|Objekten}} im System an. Ein {{Link|Objekte|Objekt}} kann nur eine '''Lebenslinie''' haben.
==== 2. LEBENSLINIE ====
 
Lebenslinien verlaufen vertikal (Lesefluss von oben nach unten) und zeigen die Existenzlaufzeit von Objekten im System an. Ein Objekt kann nur eine Lebenslinie haben.


[[Datei:2sefef.jpg|mini|none|]]
[[Datei:2sefef.jpg|mini|none|]]


Jede Lebenslinie beginnt mit einem Objekt oder Akteur.
Jede Lebenslinie beginnt mit einem {{Link|Objekte|Objekt}} oder '''Akteur'''.


== Nachricht ==


==== 3. 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.  
 
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.  
 
[[Datei:2a.jpg|mini|none|]]
[[Datei:2a.jpg|mini|none|]]
Die zeitliche Reihenfolge erfolgt chronologisch von oben nach unten.
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>]]


==== 4. AKTIVITÄTSBALKEN (AKTIVITÄTSPHASEN) ====
== Aktivitätsbalken (Aktivitätsphasen) ==


Aktivitätsbalken überlagern Lebenslinien (siehe Nr. 2 Lebenslinie) und zeigen Aktivitätsphasen von Objekten in Sequenzdiagrammen, denn es ist nicht immer alles aktiv. Wenn etwas aktiv ist, ist der Balken über der Lebensline. Ist der Balke nicht mehr da, so ist das Objekt im Moment nicht aktiv.
'''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|]]
[[Datei:2b.jpg|mini|none|]]


== Beispiel Essensbestellung bei McDonald's ==


== Erstelle ein paar anschauliche Beispiele ==
1. Ein Kunde geht zu McDonald's und bestellt bei dem Mitarbeiter Pommes.
 
McDonald's Essen bestellen:
 
1. Ein Kunde geht zu McDonald's und bestellen bei dem Mitarbeiter Pommes.
   
   
2. Der Mitarbeiter fragt den Kunden, ob er Mayo haben will.
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|]]
[[Datei:2c.jpg|mini|none|]]


3. Der Kunde bestätigen dies.
3. Der Kunde bestätigt dies.


[[Datei:2d.jpg|mini|none|]]
[[Datei:2d.jpg|mini|none|]]
Zeile 91: Zeile 82:




Lösung in Schrift für (hoffentlich) besseres Verständnis
Objekte: Modellierung von Kunde als '''k''' der Klasse Kunde, Fast-Food Mitarbeiter als '''m''' der Klasse Mitarbeiter.
 
 
Objekt: Modellierung von Kunde als k der Klasse Kunde, Fast-Food Mitarbeiter als m der Klasse Mitarbeiter.
 
 


== Zusatzmaterial für die Füchsle unter uns: ==
= Zusatzmaterial für die Füchsle unter uns =


[[Datei:Awd.jpg|mini|none]]
[[Datei:Awd.jpg|mini|600px|none]]
[[Datei:Aaa.jpg|mini|none]]
[[Datei:Aaa.jpg|mini|600px|none]]
[[Datei:Amana.jpg|mini|none]]
[[Datei:Amana.jpg|mini|600px|none]]
[[Datei:WIN 20181009 14 01 22 Pro.jpg|mini|none]]
[[Datei:WIN 20181009 14 01 22 Pro.jpg|mini|none|600px]]


== Quellen ==
== Quellen ==

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/