3. Tutorium zu Softwaretechnik I Aktivitäts-, Sequenz- & Zustandsdiagramme Michael Hoff 20.05.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Übersicht 1 Aktivitätsdiagramm 2 Sequenzdiagramm 3 Zustandsdiagramm
Letztes Übungsblatt
Unified Modeling Language (UML)
UML Diagramme Übersicht Ablauf Anwendungsfalldiagramm Szenarien Aktivitätsdiagramm Strukturen Interaktionsdiagramm Verhalten zwischen Klassen Klassendiagramm Interaktion zwischen Objekten Paketdiagramm Strukturierung Verhalten einer Klasse Zustandsdiagramm 2 Kapitel 2.2 - Weitere UML-Diagrammtypen Michael Hoff 3. Tutorium 20.05.2014 5/34
Aktivitätsdiagramm
Aktivitätsdiagramm Verhaltensdiagramm - Modelliert einen Ablauf Subsystem Anwendungsfall Algorithmus Funktion / Prozedur Erlaubt Darstellung paralleler Teilabläufe Ermöglicht Partitionierung Wer führt welche Aktion aus? Michael Hoff 3. Tutorium 20.05.2014 7/34
Beispiel Michael Hoff 3. Tutorium 20.05.2014 8/34
Elemente eines Aktivitätsdiagramms Notation Aktionen Elementare Aktion Verschachtelte Aktion Knoten Startknoten Startpunkt eines Ablaufs Endknoten Beendet alle Aktionen und Kontrollflüsse Ablaufende Beendet einen einzelnen Objektund Kontrollfluss A B Michael Hoff 3. Tutorium 20.05.2014 9/34
Notation Elemente eines Aktivitätsdiagramms (2) Entscheidung bedingte Verzweigung [x>0] [x<=0] Zusammenführung oder -Verknüpfung Teilung Aufteilung eines Kontrollflusses Synchronisation und -Verknüpfung 12 Kapitel 2.2 - Weitere UML-Diagrammtypen Michael Hoff 3. Tutorium 20.05.2014 10/34
Partitionen (Verantwortlichkeitsbereiche) Verantwortlichkeitsbereiche Partitionen beschreiben wer oder was für einen Knoten verantwortlich ist oder welche gemeinsame Eigenschaft sie kennzeichnet. Partitionen könnten z.b. unterschiedliche Rechner sein, die zusammenwirken (z.b. Dienstgeber und Klient) Partition A Partition B Schritt 1 (Partition A) Schritt 1 Schritt 3 Schritt 2 (Partition B) Schritt 2 (Partition A) Schritt 3 34 Kapitel 2.2 - Weitere UML-Diagrammtypen Michael Hoff 3. Tutorium 20.05.2014 11/34
Aktivitätsdiagramm: Aufgabe Bernd Bruegge fühlt sich nicht wohl und möchte sich untersuchen lassen, um eine Diagnose zu erhalten. Er geht dazu ins Krankenhaus und meldet sich an der Pforte. Der Pförtner macht ihn darauf aufmerksam, dass er seine Krankenkassenkarte dabei haben muss falls nicht, kann ihm keine Diagnose gestellt werden. Bernd B. hat seine Krankenkassenkarte dabei und lässt sich daher den Weg zur Patientenaufnahme zeigen, da er sich dort zunächst anmelden muss. Während der Sachbearbeiter an der Patientenaufnahme die Krankenakte mit den persönlichen Daten anlegt, füllt Bernd B. den Anamnesebogen aus. Danach wird Bernd B. vom Arzt untersucht. Die Untersuchung ergibt, dass der Arzt zur weiteren Diagnose ein Blutbild und ein Röntgenbild der Lunge benötigt und er in der Zwischenzeit ein Gespräch mit einem anderen Patienten führen kann. Dazu wird Bernd B. zunächst Blut abgenommen. Während das Blut im Labor analysiert wird, geht Bernd B. in die radiologische Abteilung und lässt das Röntgenbild der Lunge anfertigen. Als der Arzt von seinem Gespräch mit dem anderen Patienten zurückkommt, liegen das Röntgen- und das Blutbild vor und er stellt Bernd B. eine Diagnose. Michael Hoff 3. Tutorium 20.05.2014 12/34
Aktivitätsdiagramm: Lösung Michael Hoff 3. Tutorium 20.05.2014 13/34
Sequenzdiagramm
Sequenzdiagramm Verhaltens- bzw. Interaktionsdiagramm Modelliert einen Weg in einem Entscheidungsbaum eines Systemablaufs Visualisierung von Interaktionen (Nachrichtenaustausch) zwischen Objekten Michael Hoff 3. Tutorium 20.05.2014 15/34
Beispiel: Artikelreservierung anonymes Objekt Nachricht :Artikel- Reservierung b:bestellung bpos:bestell- Position :Artikel- Lager reserviere(b) bpos=gibbestellpos() Lebenslinie artikel=gibartikel() Lokale Attribute anzahl=gibanzahl() Steuerungsfokus reserviere(artikel, anzahl) Antwort 41 Kapitel 2.2 - Weitere UML-Diagrammtypen Michael Hoff 3. Tutorium 20.05.2014 16/34
Notation Elemente Sequenzdiagramm Nachrichtentypen Synchrone Nachrichten Antworten (optional) Asynchrone Nachrichten Steuerungsfokus Überlagerung der gestrichelten Lebenslinien durch senkrechte Balken Gibt an, welche Rolle die Programmkontrolle besitzt Optional Michael Hoff 3. Tutorium 20.05.2014 17/34
Notation Weitere Notationselemente sd Interaktion1 Deklaration lokaler Attribute i:integer nachricht() x:klasse1 y:klasse2 z:klasse3 alt [i>0] nachricht1() Verzweigung [else] nachricht2() Interaktionsverweis Selbstaufruf ref nachricht3() nachricht4() Interaktion2 Objekt- Zerstörung create :KlasseX Objekt- Erzeugung 43 Kapitel 2.2 - Weitere UML-Diagrammtypen Michael Hoff 3. Tutorium 20.05.2014 18/34
Sequenzdiagramm: Aufgabe public class A { private C c; } public static void main(string[] args) { A a = new A(); a.r(); } public A() { c = new C(this); } public void r() { c.y(); } public void s() { t(); } private void t() { } public class B { private C c; } public B(C c) { this.c = c; } public void u() { } public void w() { c.x(); } public class C { private A a; private B b1, b2, last; } public C(A a) { this.a = a; b1 = new B(this); b2 = new B(this); } public void x() { if (b1 == last) { b2.u(); } else { b1.u(); } } public void y() { last = b1; b1.w(); a.s(); last = b2; b2.w(); }
Sequenzdiagramm: Lösung Michael Hoff 3. Tutorium 20.05.2014 20/34
Zustandsdiagramm
Zustandsdiagramm Verhaltensdiagramm Beschreibt mögliche Zustände von Objekten/Systemen Definiert Bedingungen für Übergänge (guarded transitions) Eintritts- (entry) und Austrittsaktionen (exit) je Zustand Unterstützt Hierarchisierung und Parallelität Angelehnt an endliche Automaten (vgl. GBI) Michael Hoff 3. Tutorium 20.05.2014 22/34
Notation: Beispiel Flugreservierung Beispiel Flugreservierung Anfangszustand Zustand Ereignis Bedingung (auch: guard, Wächter) stornieren() [reservierteplaetze>1] reservieren() [freieplaetze>1] Ohne Reservierung entry / zurücksetzen reservieren() stornieren() [reservierteplaetze=1] Teilweise reserviert flugstreichen() schliessen() stornieren() reservieren() [freieplaetze=1] Geschlossen schliessen() Ausgebucht Endzustand ε-übergang Transition / Zustandsübergang 47 Kapitel 2.2 - Weitere UML-Diagrammtypen Michael Hoff 3. Tutorium 20.05.2014 23/34
Zustandsdiagramm: Aufgabe Durch Drücken der Taste A wird die Stoppuhr gestartet. Läuft die Stoppuhr, pausiert A die Zeitnahme. Im pausierten Zustand bringt das Drücken der Taste B die Stoppuhr wieder in den Ausgangszustand. Falls die Stoppuhr läuft, soll durch das Drücken von B die aktuelle Zeit (Rundenzeit) stehenbleiben. Die Zeitnahme läuft allerdings im Hintergrund weiter. Ein erneutes Drücken von B blendet die Rundenzeit wieder aus. Ein Drücken von A pausiert die Uhr wie gewöhnlich und blendet die Rundenzeit aus. Michael Hoff 3. Tutorium 20.05.2014 24/34
Zustandsdiagramm: Lösung B pressed initial entry/reset() A pressed paused entry/stop() A pressed A pressed B pressed running entry/start() A pressed lap time entry/showcurrenttime() exit/showcounter() B pressed Michael Hoff 3. Tutorium 20.05.2014 25/34
Prüfungsfragen
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Ein Sequenzdiagramm stellt einen möglichen Ablauf eines Anwendungsfalls exemplarisch dar. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Ein Sequenzdiagramm stellt einen möglichen Ablauf eines Anwendungsfalls exemplarisch dar. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Ein Sequenzdiagramm stellt einen möglichen Ablauf eines Anwendungsfalls exemplarisch dar. Bei asynchronen Aufrufen im Sequenzdiagramm wird die Quelle in der Ausführung bis zum Erhalt der Antwort blockiert. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Ein Sequenzdiagramm stellt einen möglichen Ablauf eines Anwendungsfalls exemplarisch dar. Bei asynchronen Aufrufen im Sequenzdiagramm wird die Quelle in der Ausführung bis zum Erhalt der Antwort blockiert. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Ein Sequenzdiagramm stellt einen möglichen Ablauf eines Anwendungsfalls exemplarisch dar. Bei asynchronen Aufrufen im Sequenzdiagramm wird die Quelle in der Ausführung bis zum Erhalt der Antwort blockiert. Eine Klasse B wird erst dann zu einer Unterklasse einer Klasse A, wenn gezeigt werden kann, dass jedes Exemplar von A auch als ein Exemplar von B gesehen werden kann. Michael Hoff 3. Tutorium 20.05.2014 27/34
Prüfungsfragen Das Sequenzdiagramm ist ein Interaktionsdiagramm. Unter welchen Umständen ein Objekt welche Botschaft entgegen nimmt, spezifiziert man in einem UML-Zustandsdiagramm. Ein Klassendiagramm hebt Implementierungsdetails hervor. Ein Sequenzdiagramm stellt einen möglichen Ablauf eines Anwendungsfalls exemplarisch dar. Bei asynchronen Aufrufen im Sequenzdiagramm wird die Quelle in der Ausführung bis zum Erhalt der Antwort blockiert. Eine Klasse B wird erst dann zu einer Unterklasse einer Klasse A, wenn gezeigt werden kann, dass jedes Exemplar von A auch als ein Exemplar von B gesehen werden kann. Michael Hoff 3. Tutorium 20.05.2014 27/34
Aktuelles Übungsblatt
Fragen?
Ende Michael Hoff 3. Tutorium 20.05.2014 30/34
Appendix
Aufgabe: Zustandsautomaten AUFGABE 4: UML-ZUSTANDSAUTOMATEN (13 P) a) Gegeben ist der folgende UML-Zustandsautomat. Geben Sie an, in welcher Zustandskombination sich der Zustandsautomat, jeweils ausgehend vom Startzustand, nach den beiden Eingabefolgen befindet. (1 P) a,b, c, c c, c, a, b, b, a, c, c, a A a a b) Wandeln Sie den UML-Zustandsautomaten aus Teil a) in einen äquivalenten neuen UML-Zustandsautomaten um, der weder nebenläufige noch hierarchische Zustände oder Zustände mit Historie enthält. Leiten Sie die Namen für die Zustände in Ihrem neuen UML-Zustandsautomaten wie folgt aus den Namen der Zustände des alten UML-Zustandsautomaten ab: Regel 1: Die Kombination der alten Zustände 1 und 2 wird zum neuen Zustand 1 2. Regel 2: Wurde der alte Zustand 1 vom alten Zustand 2 aus erreicht, ergibt dies den neuen Zustand 1(2). (5 P) B H C b c b D c E d Zustandsautomaten Michael Hoff 3. Tutorium 20.05.2014 32/34
/ schlechtere Performanz (eine Nennung: 1 P). Problem bei schwergewichtigen Komponenten: Nur die Schnittmenge der auf allen Zielplattformen verfügbaren Komponenten ist verfügbar; nicht angebotene Komponenten müssen von Hand nachgebaut werden (1 P). Lösung AUFGABE 4: UML-ZUSTANDSAUTOMATEN (13 P) a) Gegeben ist der folgende UML-Zustandsautomat. Geben Sie an, in welcher Zustandskombination sich der Zustandsautomat, jeweils ausgehend vom Startzustand, nach den beiden Eingabefolgen befindet. (1 P) a,b, c, c A D c, c, a, b, b, a, c, c, a B C A a a b) Wandeln Sie den UML-Zustandsautomaten aus Teil a) in einen äquivalenten neuen UML-Zustandsautomaten um, der weder nebenläufige noch hierarchische Zustände oder Zustände mit Historie enthält. Leiten Sie die Namen für die Zustände in Ihrem neuen UML-Zustandsautomaten wie folgt aus den Namen der Zustände des alten UML-Zustandsautomaten ab: Regel 1: Die Kombination der alten Zustände 1 und 2 wird zum neuen Zustand 1 2. Regel 2: Wurde der alte Zustand 1 vom alten Zustand 2 aus erreicht, ergibt dies den neuen Zustand 1(2). (5 P) Zustandsautomaten B H C b c b Michael Hoff 3. Tutorium 20.05.2014 33/34 D c E d
Lösung c, c, a, b, b, a, c, c, a 0,5 P B C 0,5 P a a B H b c b c D E d b) A a a B H C b c b c D E d d c E(C) c c AxC a a BxC b b b b AxD a a BxD c c c E(D) d Zustand E richtig geteilt: 0,5 P; Startzustand korrekt: 0,5 P Richtige Kombinationen aus den Zuständen A, B, C, D: 4 0,5 P Übergänge a, b, c, d korrekt: 4 0,5 P Zustandsautomaten Michael Hoff 3. Tutorium 20.05.2014 34/34