OO-Phasen für Embedded Systems Dynamisches Verhalten in UML ...
OO-Phasen für Embedded Systems Dynamisches Verhalten in UML ...
OO-Phasen für Embedded Systems Dynamisches Verhalten in UML ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>OO</strong>-<strong>Phasen</strong> für <strong>Embedded</strong> <strong>Systems</strong><br />
Vorlesung Automatisierungsprojekte Seite 9/1<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>OO</strong>-<strong>Phasen</strong>übersicht<br />
Vorlesung Automatisierungsprojekte Seite 9/2
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
System-Fähigkeit<br />
Objekte arbeiten zusammen, um die System-Funktionalität herzustellen.<br />
Pilot<br />
Pilot<br />
Assoziation<br />
Steuerfläche<br />
Flügel<br />
Externes<br />
Interaktionsobjekt<br />
(Akteur, actor)<br />
Kursänderung<br />
Auf<br />
Ab<br />
Flugzeug-Autopilot<br />
Use cases<br />
kooperierende<br />
realisiert.<br />
Flugrechner<br />
L<strong>in</strong>ks<br />
Rechts<br />
Systemfähigkeit<br />
(Use Case)<br />
Setze Drehzahl<br />
Auf<br />
Aileron Seitenruder Höhenruder<br />
Druck+<br />
Druck+<br />
werden durch<br />
Objekte<br />
Druck-<br />
Druck-<br />
Ab<br />
Druck+<br />
Objekt<br />
Nachricht<br />
Triebwerk<br />
Steuerfläche<br />
Heck<br />
Hydrauliksystem<br />
Druck-<br />
Vorlesung Automatisierungsprojekte Seite 9/3<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Übungsbeispiel <strong>UML</strong>: Telefonanlagenverwaltung<br />
In e<strong>in</strong>em ersten Schritt: Spezifikation e<strong>in</strong>er Klasse Telefon und e<strong>in</strong>er Klasse Telefonanlage.<br />
Jedes Telefon ist an e<strong>in</strong>e Telefonanlage angeschlossen.<br />
Telefonanlage: Stellt die Verb<strong>in</strong>dung zum Telefonnetz der Telekom her und kann maximal 901<br />
Nebenstellen verwalten (3-stellige Durchwahl, 0 für die Zentrale).<br />
Jedes Telefon: Es müssen die Nebenstellennummer des Apparats, die Berechtigungsstufe<br />
(<strong>in</strong>ternational, national, <strong>in</strong>tern) sowie der Aufstellort und die Anzahl der verbrauchten E<strong>in</strong>heiten<br />
gespeichert werden. Es soll möglich se<strong>in</strong>, e<strong>in</strong> Telefon zu sperren, wenn e<strong>in</strong>e maximal erlaubte<br />
Anzahl von E<strong>in</strong>heiten verbraucht ist. Dazu gibt es e<strong>in</strong>e Operation Sperren, die die verbrauchten<br />
E<strong>in</strong>heiten mit e<strong>in</strong>er für alle Apparate gleichen maximal erlaubten Telefone<strong>in</strong>heitenanzahl vergleicht.<br />
Für die Telefonanlage wird die Anzahl der zur Verfügung stehenden Amtsleitungen, die<br />
Amtsnummer und e<strong>in</strong>e Anlagenkennung gespeichert.<br />
• Erstellen Sie e<strong>in</strong> Klassen-Diagramm für die beiden Klassen des beschriebenen Szenario <strong>in</strong><br />
<strong>UML</strong>-Notation.<br />
• Erstellen Sie e<strong>in</strong> Objekt-Diagramm für e<strong>in</strong>e Telefonanlage mit drei Nebenstellenapparaten <strong>in</strong><br />
<strong>UML</strong>-Notation.<br />
• Erweitern Sie das Klassendiagramm der Klasse Telefon um e<strong>in</strong>e Operation »Gesamt-<br />
Sperren«, die an alle Telefone die Botschaft Sperren schickt.<br />
Vorlesung Automatisierungsprojekte Seite 9/4
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Übungsbeispiel <strong>UML</strong>: Telefonanlagenverwaltung<br />
Vorlesung Automatisierungsprojekte Seite 9/5<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Übungsbeispiel <strong>UML</strong>: Telefonanlagenverwaltung<br />
Erweitern Sie das Klassen-Diagramm des beschriebenen Szenarios um<br />
Assoziationen und Kard<strong>in</strong>alitäten<br />
Vorlesung Automatisierungsprojekte Seite 9/6
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Übungsbeispiel <strong>UML</strong>: Telefonanlagenverwaltung<br />
Es ist erforderlich geworden, das Software-System um verschiedene Telefonarten zu<br />
erweitern (Fax und ISDN-Gerät). Bei Fax-Geräten muss zusätzlich zu den Telefondaten die<br />
Stationskennung (Text) und bei ISDN-Geräten die Art des Anschlusses (Modem, PC-Karte,<br />
Telefon) gespeichert werden.<br />
• Ändern Sie das Klassendiagramm so ab, dass der neuen Situation Rechnung<br />
getragen wird. Die bereits def<strong>in</strong>ierten Klassen sollen möglichst unverändert<br />
übernommen werden.<br />
• Erstellen Sie für diese erweiterte Telefonanlage e<strong>in</strong> Objekt-Diagramm mit drei<br />
unterschiedlichen Arten von Nebenstellenapparaten <strong>in</strong> <strong>UML</strong>-Notation.<br />
Vorlesung Automatisierungsprojekte Seite 9/7<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Übungsbeispiel <strong>UML</strong>: Telefonanlagenverwaltung<br />
Vorlesung Automatisierungsprojekte Seite 9/8
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Unified Model<strong>in</strong>g Language<br />
• Sprache zur Beschreibung von Komponenten und<br />
Beziehungen komplexer Systeme<br />
• Bei der OMG (Object Management Group) e<strong>in</strong>gereicht von<br />
– Grady Booch, Jim Rumbaugh & Ivar Jacobson<br />
• Unterstützt von<br />
– Digital, HP, Microsoft, MCI, Oracle, TI, Unisys, etc.<br />
– Von der OMG im November 1997 akzeptiert<br />
Vorlesung Automatisierungsprojekte Seite 9/9<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Primäreigenschaften<br />
• <strong>UML</strong> ist derzeit e<strong>in</strong>e der umfassendsten Methoden zur<br />
Modellierung komplexer Systeme,<br />
<strong>in</strong>kl. e<strong>in</strong>gebetteter Echtzeit-Systeme<br />
– Use Cases und Szenarien<br />
– Objektmodell<br />
– <strong>Verhalten</strong>smodellierung mit Zustandsdiagrammen<br />
– Paketierung von verschiedenen Arten von Entitäten<br />
– Repräsentation von Aufgaben und Aufgabensynchronisation<br />
– Modelle physikalischer Topologie<br />
– Modelle zur Quellkodeorganisation<br />
– Unterstützung von objektorientierten Mustern<br />
Vorlesung Automatisierungsprojekte Seite 9/10
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong>-Diagrammtypen<br />
• Use-Case-Diagramm (auch: Anwendungsfalldiagramm)<br />
• Kollaborationsdiagramm (engl. Collaboration Diagram)<br />
• Sequenzdiagramm (engl. Sequence Diagram)<br />
• Klassendiagramm (engl. Class Diagram)<br />
• Zustandsdiagramm (engl. Statechart Diagram)<br />
• Aktivitätsdiagramm (engl. Activity Diagram)<br />
• Komponentendiagramm (engl. Component Diagram)<br />
• Verteilungsdiagramm (engl. Deployment Diagram)<br />
• Objektdiagramm (engl. Object Diagram)<br />
Vorlesung Automatisierungsprojekte Seite 9/11<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Objektorientierte Analyse<br />
Anforderungsanalyse: Akteure und Geschäftsprozesse des <strong>Systems</strong><br />
• Use-Case-Diagramm (auch: Anwendungsfalldiagramm)<br />
Systemanalyse anhand Szenarios: Zusammenarbeit von Objekten, um<br />
mögliche Abläufe der Geschäftsprozesse zu realisieren: Beteiligte Objekte,<br />
ausgetauschte Nachrichten, benötigte Operationen.<br />
• Kollaborationsdiagramm (engl. Collaboration Diagram)<br />
• Sequenzdiagramm (engl. Sequence Diagram)<br />
Nicht konstruktivistisch: es kann ke<strong>in</strong> vollständiger Code abgeleitet<br />
werden. Weitere Abstraktion und Zusammenfassung nötig.<br />
• Objektanalyse: Abstraktion der Objekte<br />
• Klassendiagramm (engl. Class Diagram)<br />
• Dynamikanalyse: Abstraktion des <strong>Verhalten</strong>s<br />
• Zustandsdiagramm (engl. Statechart Diagram)<br />
Vorlesung Automatisierungsprojekte Seite 9/12
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekte<br />
• Repräsentation von D<strong>in</strong>gen, die sowohl Daten als auch <strong>Verhalten</strong><br />
aufweisen: realweltliche D<strong>in</strong>ge (z.B. Sensoren, Masch<strong>in</strong>en) oder<br />
begriffliche D<strong>in</strong>ge (z.B. Gefahr, Aufmerksamkeit)<br />
– Attribute (Daten)<br />
– <strong>Verhalten</strong> (Operationen oder Methoden)<br />
– Zustand (gespeicherte Werte)<br />
– Identität<br />
– Verantwortlichkeiten bzw. Zuständigkeiten<br />
Beispiel: W<strong>in</strong>kelsensor<br />
Vorlesung Automatisierungsprojekte Seite 9/13<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Verhalten</strong>smodelle für Objekte<br />
• E<strong>in</strong>fach<br />
– Das Objekt führt Dienstleistungen durch und speichert ke<strong>in</strong>erlei<br />
Daten vorhergehender Dienstleistungen.<br />
– Jede Handlung ist (von außen betrachtet) atomar und<br />
vollständig.<br />
z.B.: Verwaltung von primitiven Datentypen und Operationen, cos(x)<br />
• Automat: <strong>in</strong> <strong>UML</strong> besonders stark berücksichtigt!<br />
– Objekt wird als e<strong>in</strong>e spezielle Masch<strong>in</strong>e behandelt: EA<br />
– Endliche Menge von Bed<strong>in</strong>gungen, Zuständen und Übergängen<br />
– Muss <strong>in</strong> genau e<strong>in</strong>em Zustand zu e<strong>in</strong>em Zeitpunkt se<strong>in</strong>.<br />
– Zustand: wechselseitig ausschließliche Existenzbed<strong>in</strong>gung, def<strong>in</strong>iert durch<br />
verarbeitete Ereignisse und durchgeführte Aktionen.<br />
– EA reagiert auf Ereignisse: „reaktives Objekt“.<br />
• Kont<strong>in</strong>uierlich<br />
– Unbegrenzte Anzahl von Existenzbed<strong>in</strong>gungen<br />
Beispiel: Algorithmisches Objekt, welches e<strong>in</strong>en Algorithmus auf e<strong>in</strong>em ggf.<br />
unendlichen E<strong>in</strong>gabestrom ausführt, z.B. FIR-Filter.<br />
– Aktuelles <strong>Verhalten</strong> hängt vom vergangenen <strong>Verhalten</strong> ab.<br />
Vorlesung Automatisierungsprojekte Seite 9/14
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Klassen<br />
• E<strong>in</strong>e Klasse ist e<strong>in</strong>e Abstraktion geme<strong>in</strong>samer Merkmale e<strong>in</strong>er<br />
Menge von ähnlichen Objekten; e<strong>in</strong>e Art „Objekttyp“<br />
• E<strong>in</strong>e Klassendeklaration erfolgt meist durch Beobachtung e<strong>in</strong>er<br />
Reihe von Objekten und der anschließenden Abstraktion<br />
geme<strong>in</strong>samer Merkmale<br />
• <strong>UML</strong>-Notation<br />
Klassenname<br />
Klassenname<br />
Attributliste<br />
Operationen<br />
Vorlesung Automatisierungsprojekte Seite 9/15<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekt- und Klassenbeziehungen<br />
• Es gibt 5 elementare Typen von Objektbeziehungen<br />
– Assoziation: Beziehung manifestiert sich typisch zur<br />
Laufzeit und erlaubt Botschaftsaustausch<br />
– Aggregation: falls e<strong>in</strong> Objekt logisch oder physikalisch e<strong>in</strong><br />
anderes enthält oder be<strong>in</strong>haltet („□ consists of")<br />
– Komposition: Ähnlich wie Aggregation, Besitzer ist für die<br />
Instantiierung und Freigabe des Teilobjekts verantwortlich;<br />
es kann nur e<strong>in</strong>en Besitzer geben (nicht teilbar)<br />
– Generalisierung (Vererbung): „□ is-a-k<strong>in</strong>d-of"-Beziehung<br />
– Abhängigkeit: „□ depends-on"-Beziehung<br />
Vorlesung Automatisierungsprojekte Seite 9/16
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekt- und Klassenbeziehungen<br />
– Kard<strong>in</strong>alitäten am Beispiel der Beziehung Assoziation<br />
Klasse A<br />
K A<br />
Rolle A<br />
◄ Assoziationsname<br />
Assoziationsname ►<br />
K B<br />
Rolle B<br />
Klasse B<br />
Klasse A<br />
1<br />
Genau e<strong>in</strong>e Beziehung (Muss-Beziehung)<br />
Klasse A<br />
*<br />
Viele Beziehungen: Null, e<strong>in</strong>e, mehrere (Kann-Beziehung)<br />
Klasse A<br />
0...4<br />
Null bis fünf Beziehungen (Kann-Beziehung)<br />
Klasse A<br />
3<br />
Genau drei Beziehungen (Muss-Beziehung)<br />
Klasse A<br />
1,4,7<br />
E<strong>in</strong>e, vier oder sieben Beziehungen (Muss-Beziehung)<br />
Klasse A<br />
1..4,6,8..* E<strong>in</strong>e bis 4, 6, 8 oder mehr Beziehungen (Muss-Beziehung)<br />
Vorlesung Automatisierungsprojekte Seite 9/17<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekt- und Klassenbeziehungen<br />
– Assoziation: Interpretation<br />
Klasse A<br />
K A<br />
Rolle A<br />
◄ Assoziationsname<br />
Assoziationsname ►<br />
K B<br />
Rolle B<br />
Klasse B<br />
1 1..*<br />
Supervisor überwacht ►<br />
Kfz-Steuergerät<br />
Airbag-<br />
Steuergerät<br />
E<strong>in</strong> Airbag-Steuergerät <strong>in</strong> se<strong>in</strong>er Rolle als Supervisor überwacht e<strong>in</strong> oder<br />
mehrere Airbag-Steuergeräte.<br />
Rollennamen oder Assoziationsnamen müssen angegeben werden, wenn<br />
zwischen zwei Klassen mehr als e<strong>in</strong>e Assoziation besteht.<br />
1 *<br />
Mitarbeiter<br />
0..1 0..1<br />
Fahrer<br />
Unternehmen<br />
Arbeitgeber<br />
Arbeitnehmer<br />
Dienstwagen<br />
PKW<br />
E<strong>in</strong> Unternehmen hat <strong>in</strong> se<strong>in</strong>er Rolle als Arbeitgeber null, e<strong>in</strong>en oder mehrere Mitarbeiter.<br />
E<strong>in</strong> Mitarbeiter ist <strong>in</strong> se<strong>in</strong>er Rolle als Arbeitnehmer Mitglied genau e<strong>in</strong>er Firma.<br />
E<strong>in</strong> Mitarbeiter fährt <strong>in</strong> se<strong>in</strong>er Rolle als Fahrer e<strong>in</strong>en PKW.<br />
E<strong>in</strong> PKW wird <strong>in</strong> se<strong>in</strong>er Rolle als Dienstwagen von e<strong>in</strong>em Mitarbeiter gefahren.<br />
Vorlesung Automatisierungsprojekte Seite 9/18
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekt- und Klassenbeziehungen<br />
Komposition und Aggregation<br />
– Aggregation: falls e<strong>in</strong> Objekt logisch oder physikalisch e<strong>in</strong><br />
anderes enthält oder be<strong>in</strong>haltet ("consists of").<br />
E<strong>in</strong>e Instanz e<strong>in</strong>er Klasse kann Bestandteil mehrerer Instanzen e<strong>in</strong>er<br />
Aggregatklasse se<strong>in</strong>.<br />
Web-Auftritt<br />
* 1..*<br />
Web-Seite<br />
– Komposition: Ähnlich wie Aggregation, Besitzer ist für die<br />
Instantiierung und Freigabe des Teilobjekts verantwortlich;<br />
es kann nur e<strong>in</strong>en Besitzer geben (nicht teilbar).<br />
E<strong>in</strong>e Instanz e<strong>in</strong>er Klasse kann nur Bestandteil genau e<strong>in</strong>er Instanz e<strong>in</strong>er<br />
Aggregatklasse se<strong>in</strong>. Wird e<strong>in</strong>e Instanz der Aggregatklasse gelöscht, so<br />
werden auch alle durch Komposition referenzierten Instanzen gelöscht.<br />
Autopilot<br />
1 1..*<br />
Aerofoil-Surface-<br />
Controller<br />
Vorlesung Automatisierungsprojekte Seite 9/19<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Beispiel: Sensorklassenbeziehung<br />
{abstract}<br />
Wärmebildkamera<br />
Videokamera<br />
Laserscanner<br />
1...N<br />
Optischer<br />
Sensor<br />
Sensor<br />
„ist e<strong>in</strong>e Art von ...“<br />
Optische<br />
Messvorrichtung<br />
1<br />
Multiplex-<br />
Sensor<br />
*<br />
Uniplex-<br />
Sensor<br />
1<br />
A/D-<br />
Konverter<br />
1 1<br />
A/D-<br />
Konverter<br />
„besteht aus ...“<br />
Vorlesung Automatisierungsprojekte Seite 9/20
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Botschaften und Schnittstellen<br />
• Objekte tauschen Botschaften über Schnittstellen aus<br />
• E<strong>in</strong>e Botschaft ist e<strong>in</strong>e Datenabstraktion oder<br />
Kontroll<strong>in</strong>formation, Implementierungsmöglichkeiten:<br />
– Funktionsaufrufe<br />
– Ereignis (Event) via RTOS<br />
– Interrupt<br />
– Semaphore-geschützte geme<strong>in</strong>sam genutzte Ressource<br />
– RPC (Remote Procedure Call) im verteilten System<br />
• Bei der Analyse werden Schlüsselbotschaften identifiziert; beim<br />
Design Synchronisation und Zeitanforderungen<br />
• Intern geschieht im Objekt folgendes<br />
– Übersetzung <strong>in</strong> Operationen, Zustandsübergänge, Befehle<br />
oder Daten<br />
Vorlesung Automatisierungsprojekte Seite 9/21<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Nur Classifier wie Use Cases und Klassen können Zustandsmodelle def<strong>in</strong>ieren<br />
und nur Objekte können Zustandsmasch<strong>in</strong>en ausführen.<br />
Harel-Zustandsdiagramme (siehe Auto2_4) s<strong>in</strong>d die Grundlage der <strong>UML</strong> State<br />
Charts.<br />
Wesentliche Charakteristika:<br />
• Modellierung mit endlichen Automaten erweitert durch<br />
• Hierarchische Struktur<br />
• Nebenläufigkeit<br />
• Bed<strong>in</strong>gte Übergänge<br />
• Pseudozustände<br />
Vorlesung Automatisierungsprojekte Seite 9/22
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
State Chart Transitionen<br />
Erweiterung gegenüber Harel-Notation um Parameterliste:<br />
A<br />
Ereignis (Parameterliste) [Guard] / Aktionsliste<br />
B<br />
Parameterliste: Kommagetrennte Liste mit Namen der Datenparameter, die bei<br />
Ereignise<strong>in</strong>tritt weitergegeben werden. Deklaration der Parameter an der<br />
Transition, welche die Parameter entgegennehmen (und verarbeiten).<br />
X<br />
T1(a:<strong>in</strong>t, b:float) / c=b^a<br />
Y<br />
Aktionsliste: Kommagetrennte Liste der Operationen, die beim<br />
Zustandsübergang ausgeführt werden (Ereigniserzeugung,<br />
Operationsaufrufe).<br />
Guard: Boolescher Ausdruck, der den Wert „wahr“ ergeben muss, damit der<br />
Übergang stattf<strong>in</strong>den kann<br />
tm(Zeitdauer)<br />
X<br />
Y<br />
Timer-Ereignisse: Timer wird bei E<strong>in</strong>nahme des Zustandes gestartet,<br />
Ereignis bei Ablauf der Zeitdauer ausgelöst.<br />
Vorlesung Automatisierungsprojekte Seite 9/23<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
State Chart Transitionen<br />
Quell-Objekt<br />
Zust1<br />
S(a,b,x, y) / a=12, b=3.14,<br />
x=23, y=2.73, T<br />
Zust1<br />
Quelle 1<br />
1<br />
Quelle<br />
Ziel1<br />
1<br />
1<br />
Ziel2<br />
Obj1<br />
Obj2<br />
ZustA<br />
T(a:<strong>in</strong>t, b:float) / c=b^a<br />
ZustB<br />
ZustX<br />
T(x:<strong>in</strong>t, y:float) / z=x/y<br />
ZustY<br />
Vorlesung Automatisierungsprojekte Seite 9/24
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Pseudozustände von <strong>UML</strong> 1.3<br />
Initial oder Default: Gibt <strong>in</strong> e<strong>in</strong>em Superzustand an, welcher se<strong>in</strong>er<br />
Subzustände bei E<strong>in</strong>nehmen des Superzustandes zuerst<br />
e<strong>in</strong>genommen wird.<br />
Term<strong>in</strong>aler, f<strong>in</strong>aler oder End-Zustand: Beendigung des<br />
T<br />
e<strong>in</strong>geschlossenen zusammengesetzten Zustandes.<br />
Junction (Kreuzung): Zusammenführung mehrfacher Übergänge<br />
oder Aufspaltung e<strong>in</strong>er Transition <strong>in</strong> mehrere Folgetransitionen.<br />
Auswahlpunkt, choice po<strong>in</strong>t: E<strong>in</strong>e Junction, die ihre Aktionsliste<br />
ausführt, bevor zum nächsten Transitionssegment<br />
übergegangen wird. Erlaubt die Ausführung von Aktionen, die<br />
an das erste Übergangssegment gebunden s<strong>in</strong>d, vor der<br />
Auswertung nachfolgender Guards.<br />
Jo<strong>in</strong>: Verb<strong>in</strong>det mehrfache e<strong>in</strong>gehende Transitionen von<br />
nebenläufigen Zuständen <strong>in</strong> e<strong>in</strong>e e<strong>in</strong>zige Transition.<br />
Fork: Verzweigt e<strong>in</strong>e E<strong>in</strong>gangstransition <strong>in</strong> mehrere Transitionen<br />
nebenläufiger Zustände.<br />
Vorlesung Automatisierungsprojekte Seite 9/25<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Pseudozustände von <strong>UML</strong> 1.3<br />
History (flach): Gibt <strong>in</strong> e<strong>in</strong>em Superzustand an, dass derjenige<br />
se<strong>in</strong>er Subzustände bei E<strong>in</strong>nehmen des Superzustandes<br />
e<strong>in</strong>genommen wird, der zuletzt verlassen wurde.<br />
Verfe<strong>in</strong>erungszustände der Subzustände nehmen dann ihren<br />
Initialzustand e<strong>in</strong>.<br />
History (tief): Gibt <strong>in</strong> e<strong>in</strong>em Superzustand an, dass derjenige se<strong>in</strong>er<br />
Subzustände bei E<strong>in</strong>nehmen des Superzustandes<br />
e<strong>in</strong>genommen wird, der zuletzt verlassen wurde. Dies gilt auch<br />
für alle Verfe<strong>in</strong>erungszustände der Subzustände.<br />
H<br />
H*<br />
Vorlesung Automatisierungsprojekte Seite 9/26
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Pseudozustände von <strong>UML</strong> 1.3<br />
Junction (Kreuzung): Zusammenführung mehrfacher Übergänge<br />
oder Aufspaltung e<strong>in</strong>er Transition <strong>in</strong> mehrere Folgetransitionen.<br />
A<br />
T1/f<br />
T3/h<br />
C<br />
Diagramm 1<br />
[y>0]<br />
B<br />
T2[x0]/f,m,n<br />
T3/h,m,n<br />
C<br />
Diagramm 2<br />
D<br />
B<br />
T2[x0]/g,m,n<br />
Vorlesung Automatisierungsprojekte Seite 9/27<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Pseudozustände von <strong>UML</strong> 1.3<br />
Auswahlpunkt, choice po<strong>in</strong>t: E<strong>in</strong>e Junction, die ihre Aktionsliste ausführt, bevor zum<br />
nächsten Transitionssegment übergegangen wird. Erlaubt die Ausführung von<br />
Aktionen, die an das erste Übergangssegment gebunden s<strong>in</strong>d, vor der<br />
Auswertung nachfolgender Guards.<br />
Warten auf Münzen<br />
Entry/ Betrag = 0<br />
Münze_e<strong>in</strong>(Münzwert)/<br />
Betrag=+Münzwert<br />
[Betrag > Soll]<br />
Wechselgeld geben<br />
Entry/ Wechselbetrag=<br />
Betrag-Soll;<br />
Wechselgeld zurückgeben<br />
[else]<br />
[Betrag == Soll]<br />
Rückgabe_erfolgt<br />
erledigt<br />
Auswahl bearbeiten<br />
Vorlesung Automatisierungsprojekte Seite 9/28
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Aktionen<br />
• Aktionsliste von Übergängen<br />
• Entry actions<br />
• Exit actions<br />
Werden durchgeführt, wenn Zustandsübergang e<strong>in</strong>tritt, Zustand e<strong>in</strong>genommen<br />
bzw. verlassen wird. Laufen vollständig durch und s<strong>in</strong>d nicht unterbrechbar<br />
durch Ereignisse, die dem Objekt gesandt werden.<br />
Sie können se<strong>in</strong>:<br />
• Methodenaufrufe <strong>in</strong>nerhalb des Objekts, zu dem der Zustandsautomat<br />
gehört.<br />
• Methodenaufrufe anderer Objekte (mit denen das aktuelle Objekt<br />
Assoziationen hat.<br />
• Erzeugung oder Löschung anderer Objekte<br />
• Zuweisungen, wie z.B. „z += 18“<br />
• Löschung des Objekts, zu dem der Zustandsautomat gehört.<br />
• Erzeugung und Versendung von Signalen zu anderen nebenläufigen<br />
Automaten oder Objekten (sog. SendAction): Synchronisation.<br />
Vorlesung Automatisierungsprojekte Seite 9/29<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Aktivitäten<br />
• Werden durchgeführt, solange ihr Zustand e<strong>in</strong>genommen wird. Sie s<strong>in</strong>d<br />
unterbrech- und beendbar durch e<strong>in</strong>treffende Ereignisse.<br />
• Aktivitäten s<strong>in</strong>d gewöhnlich längere, unterbrechbare <strong>Verhalten</strong>, währen<br />
Aktionen kurze, ununterbrechbare <strong>Verhalten</strong> s<strong>in</strong>d.<br />
• Beendet e<strong>in</strong>e Aktivität vor e<strong>in</strong>em unterbrechenden Ereignis, sendet sie e<strong>in</strong>en<br />
completion event an ihr Objekt, was alle Übergänge ohne Ereignis-Trigger<br />
auslöst.<br />
Vorlesung Automatisierungsprojekte Seite 9/30
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Aktionen <strong>in</strong> verfe<strong>in</strong>erten Zuständen: Stubbed transitions<br />
• Entry Aktionen werden <strong>in</strong> der gleichen Reihenfolge durchgeführt wie die<br />
durchlaufenen Verfe<strong>in</strong>erungsstufen.<br />
Z1<br />
Entry/ en_1<br />
Exit/ ex_1<br />
E1 / a,b<br />
Z2<br />
Entry/ en_2<br />
Exit/ ex_2<br />
Z3<br />
Entry/ en_3<br />
Exit/ ex_3<br />
E2 / c,d<br />
E1: a, b, en_1, en_2, en_3<br />
E3: e, ex_3, ex_2, en_4<br />
E3 / e<br />
Z4<br />
Entry/ en_4<br />
Exit/ ex_4<br />
Vorlesung Automatisierungsprojekte Seite 9/31<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Nebenläufige Zustände<br />
S<strong>in</strong>d immer Unterzustände e<strong>in</strong>es Oberzustandes. Ist dieser auf der äußersten<br />
Ebene e<strong>in</strong>es Statecharts, wird er als e<strong>in</strong>zelner Zustand gezeichnet.<br />
Farbe<br />
Z_rot<br />
Betriebsart<br />
Initial<br />
Z_grün<br />
<strong>in</strong>it<br />
gestartet<br />
<strong>in</strong>it<br />
Z_blau<br />
grün<br />
[IS_IN(Fehlerstatus::Ok)<br />
[normal]<br />
Z_normal<br />
[else]<br />
Demo<br />
Fehlerzustand<br />
Ok<br />
Fehler(err)/log(err)<br />
Fehlerfall<br />
BehebungsCmd/genSignal(<strong>in</strong>it) Entry/handle(err)<br />
Vorlesung Automatisierungsprojekte Seite 9/32
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Nebenläufige Zustände<br />
• Jede der orthogonalen Komponenten arbeitet unabhängig.<br />
• E<strong>in</strong> Objekt muss <strong>in</strong> genau e<strong>in</strong>em Unterzustand jedes der nebenläufigen<br />
Zustände se<strong>in</strong>, solange der zugehörige Oberzustand aktiv ist.<br />
• Der Gesamtzustand des Objekts ist das Kreuzprodukt der Unterzustände <strong>in</strong><br />
den aktiven nebenläufigen Zuständen.<br />
• Empfängt e<strong>in</strong> Objekt e<strong>in</strong> Ereignis, wird es von allen aktiven Unterzuständen<br />
empfangen.<br />
• Synchronisation mit<br />
‣ Jo<strong>in</strong> Pseudozustand<br />
‣ Fork Pseudozustand (wenn nicht die Initialzustände e<strong>in</strong>genommen<br />
werden sollen)<br />
‣ Broadcast Ereignisse<br />
‣ Propagierte Ereignisse<br />
‣ IS_IN() Operator<br />
‣ Synch Pseudozustand<br />
Vorlesung Automatisierungsprojekte Seite 9/33<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Synchronisation mit<br />
‣ Jo<strong>in</strong> Pseudozustand<br />
‣ Fork Pseudozustand (wenn nicht die Initialzustände e<strong>in</strong>genommen<br />
werden sollen)<br />
Farbe<br />
Z_rot<br />
Ablauf<br />
t0<br />
Start<br />
Betriebsart<br />
Initial<br />
Z_grün<br />
<strong>in</strong>it<br />
gestartet<br />
<strong>in</strong>it<br />
Z_blau<br />
grün<br />
[IS_IN(Fehlerstatus::Ok)<br />
t1<br />
[normal]<br />
Z_normal<br />
t1<br />
[else]<br />
Demo<br />
Ende<br />
Vorlesung Automatisierungsprojekte Seite 9/34
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Synchronisation mit<br />
‣ Broadcast Ereignisse: Werden von allen nebenläufigen Zuständen des<br />
Objekts empfangen.<br />
‣ Propagierte Ereignisse: Werden als Ergebnis e<strong>in</strong>er Transition gesendet<br />
durch e<strong>in</strong>e Aktion SendAction (z.B. GenSignal()).<br />
‣ IS_IN() Operator: TRUE, wenn bezeichneter Zustand e<strong>in</strong>genommen.<br />
Bed<strong>in</strong>gung <strong>in</strong> Guard.<br />
Ober<br />
Unter1<br />
Unter3<br />
B<br />
e1<br />
F<br />
A<br />
e2/<br />
genSignal(e3(x,y,z))<br />
C<br />
e3(a:<strong>in</strong>t, b:float, c:char)<br />
D<br />
E<br />
Unter2 e1<br />
e4[IS_IN(D)]<br />
e5<br />
G<br />
e3(a:<strong>in</strong>t, e6<br />
b:float, c:char)<br />
H<br />
Vorlesung Automatisierungsprojekte Seite 9/35<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Synchronisation mit<br />
‣ Synch Pseudozustand: Analog zu Stellen <strong>in</strong> Stellen/Transitionsnetzen.<br />
In Verb<strong>in</strong>dung mit Fork- und Jo<strong>in</strong>-Pseudozuständen:<br />
‣ Synch ist Ausgabe e<strong>in</strong>es Fork-Pseudozustandes und wird mit jeder<br />
Aktivierung dessen <strong>in</strong>krementiert. Wird dabei die Kapazität des<br />
Synch überschritten, kann die Transition nicht stattf<strong>in</strong>den.<br />
‣ Synch ist auch E<strong>in</strong>gabe e<strong>in</strong>es Jo<strong>in</strong>-Pseudozustandes und wird mit<br />
jeder Aktivierung dessen dekrementiert. Wird dabei der Wert des<br />
Synch negativ, kann die Transition nicht stattf<strong>in</strong>den.<br />
A<br />
D<br />
B<br />
C<br />
4<br />
E<br />
F<br />
Vorlesung Automatisierungsprojekte Seite 9/36
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Hierarchische Zustände<br />
Untermasch<strong>in</strong>en<br />
Ober<br />
Unter1<br />
Unter2<br />
<strong>in</strong>clude/ subm1 <strong>in</strong>clude/ subm2<br />
ZS1_1<br />
ZS2_1<br />
ZS1_2<br />
ZS2_2<br />
ZS1_3<br />
Unter3<br />
subm1<br />
subm2<br />
ZS1_1<br />
…<br />
ZS1_2<br />
ZS1_3<br />
Vorlesung Automatisierungsprojekte Seite 9/37<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Hierarchische Zustände<br />
Vererbung<br />
Modifikationen im vererbten Modell:<br />
• H<strong>in</strong>zufügen neuer Zustände und Übergänge erlaubt<br />
• Löschen von Zuständen und Übergängen der Eltern nicht erlaubt<br />
• Modifikation von Aktions- und Aktivitätenlisten erlaubt<br />
• Spezialisierung von Aktionen und Aktivitäten<br />
• Unterzustände dürfen ihre Oberzustände nicht verändern.<br />
• Transitionen können auf andere Zustände umgebogen werden.<br />
• Orthogonale Komponenten dürfen zugefügt werden.<br />
Vorlesung Automatisierungsprojekte Seite 9/38
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd<br />
Spezifikation:<br />
• Im Zubereitungsmodus muss der Benutzer die Kochzeitdauer und kann Leistungsstufe<br />
e<strong>in</strong>geben. Nach Drücken des Aktivierungsknopfes wird das Licht im Ofen, das<br />
Gebläse, der Drehteller und die Mikrowelle für die e<strong>in</strong>gestellte Zeit e<strong>in</strong>geschaltet.<br />
• Die Leistungsstufe wird realisiert, <strong>in</strong>dem das Magnetron e<strong>in</strong>- und ausgeschaltet wird.<br />
Stufe 10 bedeutet, dass es <strong>in</strong> e<strong>in</strong>em Zyklus die ganze Zeit an ist, während Stufe 1<br />
bedeutet, dass es <strong>in</strong> 10% e<strong>in</strong>er Zykluszeit an ist. Im Zubereitungsmodus ist die<br />
Default-Stufe (falls nicht anders gesetzt) 10.<br />
• Der Herd schaltet das Magnetron nur e<strong>in</strong>, wenn die Tür geschlossen ist und schaltet<br />
es aus, sobald die Tür geöffnet wird.<br />
• Das Licht geht an, wenn die Tür geöffnet oder der Kochvorgang gestartet wird.<br />
• Der Herd besitzt e<strong>in</strong>en Auftau-Modus, für den die Default-Leistungsstufe 10 ist, und<br />
ferner e<strong>in</strong>en Timer-Modus, wor<strong>in</strong> er nur als Countdown-Timer ohne Licht, Ventilator,<br />
Drehteller oder Magnetron arbeitet.<br />
• Der Herd zeigt die e<strong>in</strong>gestellte Koch- bzw. Timer-Dauer, die Restlaufzeit, die<br />
Leistungsstufe und den Modus an.<br />
• Der Ablauf der Koch- bzw. Timer-Dauer wird durch e<strong>in</strong> akustisches Signal angezeigt.<br />
Vorlesung Automatisierungsprojekte Seite 9/39<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd<br />
Spezifikation:<br />
• Der E<strong>in</strong>gabe dienen e<strong>in</strong> Ziffernblock und Knöpfe für Timer- und Leistungsstufe-Setzen,<br />
Auftaumodus aktivieren, Zubereitungsmodus aktivieren und Timermodus aktivieren<br />
und Abbruch.<br />
• Zur Bestimmung der Zeitdauer<br />
werden die Zifferntasten und die<br />
Zeitsetz-Taste benutzt.<br />
Möglicher Ablauf: Zeitsetz-Taste zur<br />
Initialisierung der E<strong>in</strong>gabe und Umschalten<br />
des E<strong>in</strong>stellmodus für die<br />
e<strong>in</strong>zelnen Stellen von M<strong>in</strong>uten und<br />
Sekunden; Zifferntasten zur E<strong>in</strong>gabe.<br />
• Ähnlich kann die Leistungsstufe e<strong>in</strong>gegeben werden: „0“ für Stufe 1 bis „9“ für Stufe<br />
10.<br />
• Wird die Tür geöffnet, wir der laufende Modus unterbrochen und nach Schließen<br />
wieder aufgenommen.<br />
Zeit<br />
setz<br />
Leist.<br />
setz<br />
Objekte (physisch motiviert): Tasten, Display, Licht, Piepser, Türsensor, Ventilator,<br />
Drehteller, Mikrowellensender, Timer. Koord<strong>in</strong>ationskomponente: kochMeister<br />
7<br />
4<br />
1<br />
0<br />
8<br />
5<br />
2<br />
9<br />
6<br />
3<br />
Zuber.<br />
Auftau<br />
Timer<br />
Abbruch<br />
00:00<br />
9<br />
Vorlesung Automatisierungsprojekte Seite 9/40
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd - Klassendiagramm<br />
display<br />
1<br />
stufeView:str<strong>in</strong>gView<br />
1<br />
1 1<br />
timerView:str<strong>in</strong>gView modusView:bitMap<br />
1<br />
1<br />
1<br />
1<br />
kochMeister<br />
1<br />
licht<br />
1<br />
Tastenfeld<br />
10<br />
ziffernKnopf:Button<br />
1<br />
zuberAktKnopf:Button<br />
1<br />
auftauAktKnopf:Button<br />
1<br />
timerAktKnopf:Button<br />
1abbruchKnopf:Button<br />
1<br />
zeitsetzKnopf:Button<br />
1<br />
leistsetzKnopf:Button<br />
1<br />
1 1<br />
kochTimer<br />
1<br />
1<br />
türSensor<br />
1<br />
piepser<br />
1<br />
1<br />
1<br />
mw_sender<br />
1 1<br />
drehtellerMotor ventilator<br />
Vorlesung Automatisierungsprojekte Seite 9/41<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd<br />
Zusammengesetzte Klassen (Komposition): Tastenfeld, Display.<br />
Aggregation: kochMeister mit kochTimer, türSensor, piepser und mw_Sender.<br />
Sonst Assoziationen<br />
Konvention zur Benennung der Zeiger, welche die Assoziation implementieren:<br />
Anfügen von „se<strong>in</strong>“ vor den Namen der Klasse am anderen Ende der<br />
Assoziation. Z.B. se<strong>in</strong>Ventilator->e<strong>in</strong>schalten( ); ruft Operation e<strong>in</strong>schalten<br />
der Klasse Ventilator.<br />
Mit GEN(Ereignisname) wird e<strong>in</strong>e Operation zur Erzeugung e<strong>in</strong>es Ereignisses<br />
bezeichnet, dem der Zielobjektname vorangestellt wird.<br />
Z.B. als Aktion: evTürOffen/ se<strong>in</strong>Timer->GEN(evPause);<br />
Reaktive Klassen:<br />
• kochMeister,<br />
• kochTimer, -> Statecharts für das <strong>Verhalten</strong> dieser Klassen<br />
• türSensor<br />
• mw_Sender<br />
Vorlesung Automatisierungsprojekte Seite 9/42
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd<br />
Reaktive Klassen:<br />
• kochMeister<br />
Steuert die aggregierten Objekte entsprechend Modi, kochTimer-<br />
Zustand und Fertig-Ereignis von kochTimer.<br />
Suspendiert den laufenden Modus, solange Tür geöffnet ist.<br />
Vorlesung Automatisierungsprojekte Seite 9/43<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd, Statechart für kochMeister:<br />
evAbbruch / se<strong>in</strong>Timer->GEN(evAbbruch); se<strong>in</strong>Mw_sender->GEN(evAbbruch); se<strong>in</strong>Piepser->piep( );<br />
kochMeisterZustand<br />
Ablauf<br />
H<br />
Tim<strong>in</strong>g<br />
TimerAblauf<br />
bereit<br />
evTim<strong>in</strong>gSel<br />
[se<strong>in</strong>KochTimer-><br />
IS_IN(ZeitGesetzt)]<br />
evMicroAn<br />
[(se<strong>in</strong>TürSensor->IS_IN(zu)]<br />
evFertig / se<strong>in</strong>Mw_sender->GEN(evFertig); se<strong>in</strong>Piepser->piep( );<br />
evAuftauenSel<br />
[se<strong>in</strong>KochTimer-><br />
IS_IN(ZeitGesetzt)]<br />
Auftauen<br />
evZubereitenSel<br />
[se<strong>in</strong>KochTimer-><br />
IS_IN(ZeitGesetzt)]<br />
Zubereiten<br />
evMicroAn[(se<strong>in</strong>TürSensor->IS_IN(zu)] /<br />
se<strong>in</strong>Mw_sender->GEN(evMicroAn);<br />
evMicroAn[(se<strong>in</strong>TürSensor->IS_IN(zu)] /<br />
se<strong>in</strong>Mw_sender->GEN(evLeistungAn)<br />
KochenAblauf<br />
AuftauAblauf<br />
evTürÖffnet /<br />
se<strong>in</strong>Mw_sender->GEN(evPausieren);<br />
se<strong>in</strong>KochTimer->GEN(evPausieren);<br />
Pause<br />
evMicroAn[(se<strong>in</strong>TürSensor->IS_IN(zu)] /<br />
se<strong>in</strong>Mw_sender->GEN(evLeistungAn);<br />
se<strong>in</strong>KochTimer->GEN(evLeistungAn);<br />
Vorlesung Automatisierungsprojekte Seite 9/44
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd, Statechart für mw_sender:<br />
Steuert die Leistung des Magnetrons durch Pulsweitenmodulation.<br />
Steuert die mit se<strong>in</strong>em Betrieb verbundenen Objekte Licht, Ventilator und Drehteller.<br />
Schaltet Leistung ab, wenn Pause-Modus vom Objekt kochMeister angefordert wird.<br />
Schaltet Leistung ab, wenn Abbruch vom Objekt kochMeister gefordert oder Zeitablauf vom Objekt<br />
kochTimer signalisiert wird.<br />
bereit<br />
evLeistungAn / berechne(leistungStufe, sTime, wTime);<br />
evAbbruch<br />
evAbbruch<br />
evFertig<br />
Betrieb<br />
Abstrahlen<br />
tm(sTime) /<br />
magnetronAus( );<br />
Abwarten<br />
tm(wTime) /<br />
magnetronAn( );<br />
Pause<br />
evLeistungAn<br />
evPausieren<br />
entry/ se<strong>in</strong>Licht->e<strong>in</strong>schalten( );<br />
se<strong>in</strong>Ventilator->e<strong>in</strong>schalten( );<br />
se<strong>in</strong>Drehteller->e<strong>in</strong>schalten( );<br />
exit/ leistungAus( );<br />
if (se<strong>in</strong>TürSensor->IS_IN(Closed))<br />
se<strong>in</strong>Licht->ausschalten( );<br />
se<strong>in</strong>Ventilator->ausschalten( );<br />
se<strong>in</strong>Drehteller->ausschalten( );<br />
Vorlesung Automatisierungsprojekte Seite 9/45<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd, Statechart für mw_kochTimer:<br />
Ermittelt die Zeitdauer aufgrund von Tastendrücken.<br />
Verweilt <strong>in</strong> Zustand Countdown, bis e<strong>in</strong>gestellte Zeit abgelaufen; signalisert Objekt kochMeister,<br />
wenn Zeit abgelaufen.<br />
Hält den Timer an, im Falle, dass Objekt kochMeister Pausieren fordert.<br />
evZiffer/<br />
se<strong>in</strong>Zifferknopf->zahl(z1);<br />
Bereit<br />
evZeitsetz<br />
M<strong>in</strong>ErsteStelle<br />
do/ se<strong>in</strong>TimerView<br />
->bl<strong>in</strong>k(1,z1);<br />
evFertig<br />
evAbbruch<br />
evZeitsetz/<br />
berechneZeit(gesetzteZeit);<br />
ZeitGesetzt<br />
SekZweiteStelle<br />
do/ se<strong>in</strong>TimerView<br />
->bl<strong>in</strong>k(4,z4);<br />
evZiffer/<br />
se<strong>in</strong>Zifferknopf->zahl(z4);<br />
evZeitsetz [z1bl<strong>in</strong>k(2,z2);<br />
evZeitsetz<br />
evZeitsetz[z3bl<strong>in</strong>k(3,z3);<br />
evZiffer/<br />
se<strong>in</strong>Zifferknopf->zahl(z2);<br />
evZiffer/<br />
se<strong>in</strong>Zifferknopf->zahl(z3);<br />
Vorlesung Automatisierungsprojekte Seite 9/46
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd, Statechart für mw_kochTimer:<br />
ZeitGesetzt<br />
bereit<br />
evMicroAn / kochZeit=gesetzteZeit;<br />
tm(kochZeit)/se<strong>in</strong>KochMeister->GEN(evFertig);<br />
Countdown<br />
evAbbruch<br />
evAbbruch<br />
Pause<br />
evMicroAn<br />
evPause / kochZeit=getRestZeit( );<br />
Vorlesung Automatisierungsprojekte Seite 9/47<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – <strong>Dynamisches</strong> Objektverhalten – State Charts<br />
Beispiel Mikrowellenherd, Statechart für türSensor:<br />
Ermittelt Status der Tür (wird vom Objekt mw_sender zur Aktivierung der Strahlung benutzt) und<br />
erzeugt das Ereignis TürSchließt (versetzt das Objekt kochMeister <strong>in</strong> den Pause-Modus).<br />
else<br />
Offen<br />
Entry/ se<strong>in</strong>Licht->e<strong>in</strong>schalten( )<br />
Status<br />
do/ s=getTürStatus( )<br />
evTürSchließt /<br />
se<strong>in</strong>KochMeister-><br />
GEN(evTürSchließt)<br />
evTürÖffnet /<br />
se<strong>in</strong>KochMeister-><br />
GEN(evTürÖffnet)<br />
[s==zu]<br />
Zu<br />
Entry/ se<strong>in</strong>Licht->ausschalten( )<br />
Vorlesung Automatisierungsprojekte Seite 9/48
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – State Charts und Klassendiagramme<br />
Beispiel Herzschrittmacher: Klassendiagramm<br />
Zustandsdiagramm zu<br />
AtrialModel auf der<br />
folgenden Folie<br />
Vorlesung Automatisierungsprojekte Seite 9/49<br />
Aus: Bruce Powel Douglass: Real Time <strong>UML</strong> Second Edition<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – State Charts und Klassendiagramme<br />
Beispiel Herzschrittmacher: State Chart für Objekte der Klasse<br />
AtrialModel<br />
Vorlesung Automatisierungsprojekte Seite 9/50<br />
Aus: Bruce Powel Douglass: Real Time <strong>UML</strong> Second Edition
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekte mit kont<strong>in</strong>uierlichem <strong>Verhalten</strong><br />
In technischen Anwendungen: Filter, Regler, …: streamOps<br />
E<strong>in</strong>gangs-Datenstrom x(t)<br />
quellObjekt<br />
E<strong>in</strong>gangsdatenstrom: Strom von<br />
Datenvektoren, z.B. zeitl. äquidistant<br />
v v v<br />
v N<br />
x(<br />
t),<br />
x(<br />
t − ∆),<br />
x(<br />
t − 2∆),<br />
L x ∈ R<br />
Zeit<br />
streamOp<br />
Ausgangsdatenstrom:<br />
Strom von Datenvektoren<br />
v v<br />
y(<br />
t −τ<br />
L<br />
), y(<br />
t − ∆ −τ<br />
L),<br />
v<br />
y(<br />
t − 2∆ −τ<br />
L),<br />
L<br />
v K<br />
y ∈ R , τ : Latenzzeit<br />
L<br />
empfObjekt<br />
Zeit<br />
Ausgangs-Datenstrom y(t)<br />
Vorlesung Automatisierungsprojekte Seite 9/51<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekte mit kont<strong>in</strong>uierlichem <strong>Verhalten</strong><br />
In technischen Anwendungen: StreamOps wie Filter, Regler, …<br />
Objekt streamOp arbeitet auf Strom von E<strong>in</strong>gangs-Datenstrukturen x und<br />
liefert daraus e<strong>in</strong>en Strom von Ausgangs-Datenstrukturen y.<br />
quellObjekt<br />
streamOp<br />
empfObjekt<br />
Dazu benutzt streamOp e<strong>in</strong>en jeweils aktuellen Ausschnitt der unmittelbaren<br />
Vergangenheit des E<strong>in</strong>gangs-Datenstrukturstromes<br />
x t),<br />
x(<br />
t − ∆ ), x(<br />
t − ∆ ), L,<br />
x(<br />
t − ∆ )<br />
(<br />
1 2<br />
N −1<br />
Diese werden <strong>in</strong> e<strong>in</strong>em R<strong>in</strong>gpuffer gespeichert und bilden die N Komponenten<br />
des Zeilenvektors X T . v<br />
T<br />
X x t),<br />
x(<br />
t − ∆ ), L,<br />
x(<br />
t − ∆ )<br />
[ ]<br />
= (<br />
1 N −1<br />
v<br />
Die Filterfunktion ist def<strong>in</strong>iert durch y(<br />
t)<br />
= f ( X<br />
Ausgangs-Datenvektor.<br />
T<br />
) und liefert den aktuellen<br />
Zum Anstoßen der Verarbeitung erzeugt das quellObjekt <strong>in</strong> streamOp das<br />
Ereignis evNewX.<br />
Wurde von streamOp e<strong>in</strong> neuer Ausgangs-Datenvektor erzeugt, wird <strong>in</strong><br />
empfObjekt das Ereignis evNewY erzeugt.<br />
Vorlesung Automatisierungsprojekte Seite 9/52
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>UML</strong> – Objekte mit kont<strong>in</strong>uierlichem <strong>Verhalten</strong><br />
StreamOps: Filter, Regler, …<br />
quellObjekt<br />
streamOp<br />
empfObjekt<br />
erzeugen<br />
vernichten<br />
T<br />
/ j=0<br />
Init<br />
v<br />
do/ = 0<br />
x j<br />
entry/ read( xneu<br />
);<br />
exit/ x = x ;<br />
N −1−<br />
j neu<br />
evNewX[j X T ist e<strong>in</strong> Zeilenvektor. K ist der Faltungskern.<br />
FaltungOp1d<br />
Kernelgröße: <strong>in</strong>t<br />
Kernel: float vector<br />
(Kernelgöße)<br />
quellObjekt<br />
FaltungOp1d<br />
empfObjekt<br />
/ j=0;<br />
<strong>in</strong>it<br />
v<br />
do/ = 0<br />
x j<br />
[j=N-1]<br />
AufDatenWarten<br />
evNewX[j
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Zeitverhalten von Objekten: Zeitablaufdiagramme<br />
Erweiterungen zur Erfassung von RT-Anforderungen<br />
Zustandszeitdiagramme:<br />
Darstellung des Verweilens <strong>in</strong> und des Wechsels von Zuständen<br />
Z3<br />
Zustand<br />
Z2<br />
Z1<br />
Zeit<br />
10ms 20ms 30ms 40ms 50ms 150ms 160ms 170ms 180ms<br />
Das Zeitablaufdiagramm zeigt e<strong>in</strong>en speziellen Pfad durch das<br />
Zustandsdiagramm e<strong>in</strong>er Zustandsmasch<strong>in</strong>e.<br />
Vorlesung Automatisierungsprojekte Seite 9/55<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Zeitverhalten von Objekten: Zeitablaufdiagramme<br />
Erweiterungen zur Erfassung von RT-Anforderungen<br />
Zustandszeitdiagramme für nebenläufige Zustände<br />
Vorlesung Automatisierungsprojekte Seite 9/56<br />
Aus: Bruce Powel Douglass: Real Time <strong>UML</strong> Second Edition
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Zeitverhalten von Objekten: Zeitablaufdiagramme<br />
Erweiterungen zur Erfassung von RT-Anforderungen<br />
Taskzeitdiagramme<br />
Vorlesung Automatisierungsprojekte Seite 9/57<br />
Aus: Bruce Powel Douglass: Real Time <strong>UML</strong> Second Edition<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Use cases<br />
• Zeigt das System <strong>in</strong> Beziehung zu se<strong>in</strong>er Umgebung (zu externen Objekten)<br />
und se<strong>in</strong>e grundlegenden Fähigkeiten der Wechselwirkung<br />
• Darstellung: Use case Diagramm<br />
<br />
Lokalisiere Trajektorien<br />
Identifiziere Flugzeug<br />
<br />
<br />
Zeige Luftraumsituation<br />
<br />
Zeige Flugpfad<br />
Verarbeite Nutzerbefehl<br />
<br />
Setze Zoomlevel Verschiebe Ausschnitt<br />
Detektiere Abstandsunterschreitung<br />
Primärradar<br />
Sekundärradar<br />
Flugzeug-<br />
Transponder<br />
Fluglotse<br />
Vorlesung Automatisierungsprojekte Seite 9/58
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Use cases: Beziehungen<br />
<strong>UML</strong> 1.3 def<strong>in</strong>iert drei verschiedene Beziehungen zwischen Use Cases:<br />
Generalisierung<br />
Bedeutet, dass e<strong>in</strong> Use Case e<strong>in</strong>e spezialisiertere oder verfe<strong>in</strong>erte Version des anderen<br />
ist. Analog zu Klassenvererbung. Symbol: Pfeil mit geschlossener Spitze, Richtung<br />
vom Eltern- zum K<strong>in</strong>dprozess.<br />
<br />
Wenn z.B. mehrere Geschäftsprozesse die gleichen Unterprozesse besitzen, werden<br />
letztere als eigenständige Use Cases modelliert, analog e<strong>in</strong>em Unterprogramm. Die<br />
Unterprozesse existieren nie für sich alle<strong>in</strong>e. Symbol: gestrichelter Pfeil mit offener<br />
Spitze, Richtung von Basis zum Unterprozess, Stereotypenbeschriftung<br />
.<br />
<br />
Von e<strong>in</strong>em Use Case wird <strong>in</strong> e<strong>in</strong>en anderen verzweigt, wenn gegebene Bed<strong>in</strong>gungen<br />
erfüllt s<strong>in</strong>d. Ist der Use Case, <strong>in</strong> den verzweigt wurde, (die Erweiterung) beendet,<br />
erfolgt e<strong>in</strong>e Rückkehr <strong>in</strong> den Use Case, aus dem verzweigt wurde (die Basis).<br />
Symbol: gestrichelter Pfeil mit offener Spitze, Richtung von Erweiterung zu Basis,<br />
Stereotypenbeschriftung .<br />
Vorlesung Automatisierungsprojekte Seite 9/59<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Use cases: requirements<br />
1. Funktionale Anforderung wird durch Use Case selbst repräsentiert.<br />
2. Quality of Service (QoS): Wie gut muss der Use Case ausgeführt werden?<br />
• Geschw<strong>in</strong>digkeit<br />
• Rechtzeitigkeit<br />
• Durchsatz<br />
• Kapazität<br />
• Voraussagbarkeit<br />
• Zuverlässigkeit<br />
• Betriebssicherheit<br />
• Manipulationssicherheit<br />
QoS requirements werden als Randbed<strong>in</strong>gungen (constra<strong>in</strong>ts) formuliert.<br />
Constra<strong>in</strong>t: E<strong>in</strong>e Regel, die auf e<strong>in</strong>e Menge von Modellelementen angewandt<br />
wird und die außerhalb der Standard-Regeln von <strong>UML</strong> liegt.<br />
Vorlesung Automatisierungsprojekte Seite 9/60
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Use cases: requirements<br />
3. Darstellung der QoS<br />
Sekundärradar<br />
Flugzeug-<br />
Transponder<br />
Detektiere Abstandsunterschreitung<br />
Primärradar<br />
Lokalisiere Trajektorien<br />
Idenzifiziere Flugzeug<br />
Verarbeite Nutzerbefehl<br />
{ Identifikationsrate m<strong>in</strong>destens<br />
5/s, Latenzzeit < 100 ms,<br />
Verfügbarkeit > 1-10 -9 ,<br />
Fehlerrate < 10 -12 }<br />
{ Genauigkeit Position<br />
besser 500 m,<br />
Genauigkeit Höhe besser 50m,<br />
Latenzzeit < 100 ms}<br />
Fluglotse<br />
Setze Zoomlevel<br />
Vorlesung Automatisierungsprojekte Seite 9/61<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
<strong>Dynamisches</strong> <strong>Verhalten</strong>: Szenarios<br />
E<strong>in</strong> Use Case kann durch e<strong>in</strong>e Kollektion von Szenarios dokumentiert werden.<br />
Jedes Szenario wird durch e<strong>in</strong>e oder mehrere Bed<strong>in</strong>gungen def<strong>in</strong>iert, die<br />
zu e<strong>in</strong>em speziellen Ablauf des jeweiligen Use Cases führen.<br />
Darstellung dynamischer Abläufe <strong>in</strong> <strong>UML</strong> mittels<br />
• Objektdiagramm:<br />
Schnappschuss e<strong>in</strong>es <strong>Systems</strong> auf Objektebene zu e<strong>in</strong>em bestimmten<br />
Zeitpunkt<br />
• Kollaborationsdiagramm: Darstellung des Botschaftenflusses<br />
• Sequenzdiagramm: Präzise Beschreibung des Ablaufs der<br />
Operationsaufrufe.<br />
Vorlesung Automatisierungsprojekte Seite 9/62
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Objektdiagramm<br />
• Objektdiagramm:<br />
Schnappschuss e<strong>in</strong>es <strong>Systems</strong> auf Objektebene zu e<strong>in</strong>em bestimmten<br />
Zeitpunkt<br />
Vorlesung Automatisierungsprojekte Seite 9/63<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Kollaborationsdiagramm<br />
Kollaborationsdiagramm: Darstellung des Botschaftenflusses<br />
• Erweiterung des Objektdiagramms um Botschaften<br />
• Zeigt die Objekte, die für die Ausführung e<strong>in</strong>er bestimmten Operation relevant s<strong>in</strong>d.<br />
• Objekte, die während der Ausführung erzeugt bzw. gelöscht oder erzeugt und<br />
gelöscht werden, werden mit {new} bzw. {destroyed} oder {transient} gekennzeichnet.<br />
• Als Auslöser e<strong>in</strong>er Operation kann e<strong>in</strong> Akteur e<strong>in</strong>getragen werden.<br />
• An jede Verb<strong>in</strong>dung („l<strong>in</strong>k“: nur wenn Assoziation im Klassendiagramm) kann e<strong>in</strong>e<br />
Botschaft e<strong>in</strong>getragen werden: laufende Nummer, Operationsname, Pfeil.<br />
Reihenfolge und Verschachtelung gekennzeichnet durch hierarchische<br />
Nummerierung.<br />
Verschachtelung: Welche Nachrichten s<strong>in</strong>d aus welchen heraus gesendet<br />
1: Operation1()<br />
:Klasse3<br />
{new}<br />
:Klasse1<br />
{transient}<br />
2: Operation2() 3: Operation4()<br />
:Klasse2<br />
{new}<br />
2.1: Operation3()<br />
:Klasse4<br />
Im Kollaborationsdiagramm ist jedes<br />
dargestellte Objekt Platzhalter für e<strong>in</strong><br />
beliebiges Objekt der Klasse.<br />
Unterschied Klassendiagramm!<br />
Vorlesung Automatisierungsprojekte Seite 9/64
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Sequenzdiagramm<br />
Sequenzdiagramm: Abfolge von Nachrichten<br />
• Genauere zeitliche Darstellung als Kollaborationsdiagramm<br />
• Verzicht auf Attributangaben und Verb<strong>in</strong>dungen<br />
• Objekte, die Botschaften austauschen: gestrichelte, senkrechte L<strong>in</strong>ien // Zeitachse.<br />
Beg<strong>in</strong>nt nach Erzeugen und endet mit Löschen des Objekts (Symbol: X).<br />
• Botschaft: horizontaler Pfeil vom Sender zum Empfänger mit Name der Botschaft<br />
• Aktive Operation: Schmales vertikales Rechteck auf Objektl<strong>in</strong>ie<br />
• Wird e<strong>in</strong>e Objekt erzeugt, zeigt e<strong>in</strong>e Botschaft auf das Objektsymbol<br />
Existierende Objekte<br />
erstesObjekt<br />
:Klasse1<br />
Operation1()<br />
Botschaft<br />
Klasse3()<br />
:Klasse2<br />
Länge: relative<br />
Dauer der Methode<br />
neuesObjekt<br />
:Klasse3<br />
Neu erzeugtes Objekt<br />
Operation5()<br />
Operation3()<br />
Kontrollfluss nach<br />
Operationsende<br />
Operation2()<br />
X<br />
Objekt wird<br />
gelöscht<br />
Objekt sendet<br />
Botschaft an sich selbst<br />
Vorlesung Automatisierungsprojekte Seite 9/65<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Betrachten wir e<strong>in</strong>e Software, die e<strong>in</strong> sehr, sehr e<strong>in</strong>faches<br />
Mobiltelefon steuert. Dieses hat<br />
• Tasten zum e<strong>in</strong>geben der Ziffern<br />
• e<strong>in</strong>e „Send“-Taste<br />
• E<strong>in</strong>e „Dialer“-Hardware und Software zum Aufsammeln der<br />
Zahlen und Wiedergabe der zugehörigen Wähltöne<br />
• E<strong>in</strong> Mobilfunkgerät zur Verb<strong>in</strong>dung mit dem Funkzellen-<br />
Netzwerk um e<strong>in</strong> Gespräch herzustellen<br />
• Mikrophon<br />
• Lautsprecher<br />
• Display<br />
Wir stellen aus dieser e<strong>in</strong>fachen Spec e<strong>in</strong> statisches Modell auf.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/66
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Dagegen ist kaum etwas e<strong>in</strong>zuwenden. Die Kompositionsbeziehungen<br />
reflektieren die Spec. Woher wissen wir, ob dies das korrekte Modell ist?<br />
Kriterium 1: Vergleich mit der realen Welt: bestanden.<br />
Aber: Kriterium 1 notwendig, aber nicht h<strong>in</strong>reichend, da es mehrere<br />
statische Modelle gibt, welche mit der realen Welt e<strong>in</strong>es Mobiltelefons<br />
übere<strong>in</strong>stimmen.<br />
Auswahl durch weiteren, anwendungssensibleren Test.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/67<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Spezifikation des dynamischen <strong>Verhalten</strong>s<br />
Wie arbeitet das Mobiltelefon?<br />
Aufstellung des Use Case Diagramms und Analyse der Use Cases.<br />
Netzwerk<br />
Anruf empfangen<br />
Anruf tätigen<br />
{ ...}<br />
{ ...}<br />
Datenendgerät<br />
Telefonbenutzer<br />
SMS empfangen<br />
SMS versenden<br />
...<br />
Fax/Datenbetrieb<br />
Telefon<br />
konfigurieren<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/68
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Analyse des Use Cases „Anruf tätigen“. Anruf tätigen<br />
Use case: „Anruf tätigen“<br />
1. Benutzer drückt die Ziffern-Tasten, um die Telefonnummer e<strong>in</strong>zugeben.<br />
2. Bei jedem Ziffern-Tastendruck wird die Zahl im Display um die Ziffer<br />
ergänzt.<br />
3. Für jede Ziffer erzeugt der „Dialler“ den entsprechenden Ton und gibt ihn<br />
über den Lautsprecher aus.<br />
4. Der Benutzer drückt die „Send“-Taste.<br />
5. E<strong>in</strong> “<strong>in</strong> use” Anzeigesymbol ersche<strong>in</strong>t im Display.<br />
6. Das Mobilfunkgerät stellt e<strong>in</strong>e Verb<strong>in</strong>dung mit dem Netzwerk her.<br />
7. Die akkumulierten Ziffern werden an das Netzwerk gesendet.<br />
8. Die Verb<strong>in</strong>dung zum angerufenen Apparat wird hergestellt.<br />
Stark vere<strong>in</strong>fachte Darstellung des Use Cases. Der Use Case verdeutlicht,<br />
dass beim „Anruf tätigen“ e<strong>in</strong>e Ablaufprozedur stattf<strong>in</strong>det.<br />
Wie arbeiten also die Objekte des statischen Modells zusammen<br />
(kollaborieren), um diese Ablaufprozedur auszuführen?<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/69<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Analyse des Use Cases „Anruf tätigen“.<br />
Verfolgung des Prozesses Schritt für Schritt<br />
• Prozess wird dadurch <strong>in</strong>itiiert, dass der Benutzer e<strong>in</strong>e Zifferntaste drückt,<br />
um die E<strong>in</strong>gabe e<strong>in</strong>er Telefonnummer zu beg<strong>in</strong>nen. Woher weiß die<br />
Software im Telefon, dass e<strong>in</strong>e Taste gedrückt wurde?<br />
• Alle möglichen Arten können dah<strong>in</strong>gehend vere<strong>in</strong>facht werden, dass e<strong>in</strong><br />
„Button“ Objekt e<strong>in</strong>e „digit“ Nachricht sendet.<br />
• Welches Objekt soll die Nachricht empfangen? Antwort: Die<br />
Wählvorrichtung (der „Dialer“).<br />
• Der Dialer muss dann dem Display sagen, dass es die neue Ziffer<br />
anzeigen soll und dem Lautsprecher („Speaker“), dass er den<br />
zugehörigen Ton emittieren soll.<br />
• Der Dialer muss auch die Ziffer <strong>in</strong> e<strong>in</strong>er Liste abspeichern, welche die<br />
Telefonnummer akkumuliert.<br />
• Jeder Zifferntastendruck folgt derselben Prozedur, bis der „Send“-Button<br />
gedrückt wird.<br />
Fortsetzung nächste Seite<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/70
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
• Wenn der „Send“-Button gedrückt wird, schickt das entsprechende<br />
Button Objekt die Send Nachricht an den Dialer.<br />
•Der Dialer sendet dann e<strong>in</strong>e Connect Nachricht an das Mobilfunkgerät<br />
(Cellular Radio) und gibt ihm die akkumulierte Telefonnummer weiter.<br />
•Das Cellular Radio weist das Display an, das In Use Symbol anzuzeigen.<br />
Kollaborationsdiagramm des Use Case „Anruf tätigen“<br />
Vorlesung Automatisierungsprojekte Seite 9/71<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Überarbeitung des statischen Modells mit dem dynamischen Modell<br />
Kollaborationsdiagramm unähnlich dem Klassendiagramm.<br />
Problem: Die L<strong>in</strong>ks s<strong>in</strong>d Instanzen von Assoziationen Widerspruch<br />
Möglichkeiten: 1) Anpassung des dynamischen an das statische Modell, 2)<br />
Entwurf e<strong>in</strong>es statischen Modells für das Kollaborationsdiagramm<br />
Konsequenzen von 1): E<strong>in</strong> Telefon Objekt <strong>in</strong> der Mitte würde Nachrichten von<br />
allen anderen Objekten erhalten und auf jede e<strong>in</strong>gehende Nachricht mit<br />
eigenen ausgehenden Nachrichten antworten. Stark gekoppeltes<br />
Design: Telefon Objekt als Master Controller, das alle anderen Objekte<br />
kennt und von allen anderen gekannt wird. Enthält alle System<strong>in</strong>telligenz.<br />
Fehlergefahr bei Änderungen.<br />
Konsequenzen von 2): Aufgaben s<strong>in</strong>d vernünftig verteilt, jedes Objekt hat e<strong>in</strong><br />
wenig eigene Intelligenz und ke<strong>in</strong> spezielles Objekt ist für alles zuständig.<br />
Änderungen an e<strong>in</strong>em Teil des Modells breiten sich nicht unbed<strong>in</strong>gt zu<br />
anderen Teilen aus.<br />
Schlussfolgerung: Unser statisches Modell ist unangemessen und sollte<br />
abgeändert werden.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/72
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Geändertes Klassendiagramm<br />
• Ke<strong>in</strong>e Kompositionen<br />
mehr, nur noch<br />
Assoziationen: Ke<strong>in</strong>e<br />
der verknüpften<br />
Klassen hat e<strong>in</strong>e<br />
Gesamtheit/Teil-<br />
Beziehung.<br />
• Assoziationsrichtungen<br />
wegen Klarheit der<br />
Kommunikationsrichtung<br />
im dynamischen<br />
Modell.<br />
• Angabe der<br />
Operationen <strong>in</strong><br />
den Klassensymbolen<br />
wegen Offensichtlichkeit<br />
im dynamischen<br />
Modell<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/73<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Geändertes statisches Modell<br />
• Reflektiert nicht mehr die reale Welt wie das ursprüngliche Modell<br />
• Verlust der Abbildung des Telefons aus Tasten und Display, usw.<br />
• Abbildung basierte auf den physikalischen Komponenten, nicht auf<br />
Dynamik<br />
Neues Modell<br />
• basiert auf dem Realwelt-<strong>Verhalten</strong><br />
• Verlust der Klassen Telefon und Mikrofon (ke<strong>in</strong> Beitrag zum dyn. Modell),<br />
werden möglicherweise <strong>in</strong> e<strong>in</strong>em anderen Use Case benötigt und müssen<br />
dann wieder h<strong>in</strong>zugefügt werden.<br />
Zu e<strong>in</strong>em statischen, physischen Modell gehören häufig viele<br />
dynamische Modelle, von denen jedes e<strong>in</strong>e andere Variation e<strong>in</strong>es<br />
Use Cases (Szenario oder Anforderung) reflektiert.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/74
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Verfe<strong>in</strong>erung des statischen Modells<br />
Entkopplung von Button und Dialer zur Wiederverwendbarkeit der Button<br />
Klasse <strong>in</strong> Programmen, die ke<strong>in</strong>e Dialer haben.<br />
• Jede Klasse, die e<strong>in</strong>en<br />
Tastendruck erkennen<br />
muss, wird von<br />
ButtonServer abgeleitet<br />
und implementiert die<br />
Funktion ButtonPressed.<br />
• Wenn e<strong>in</strong>e Klasse (wie<br />
Dialer) verschiedene<br />
Button Objekte detektieren<br />
muss, können Adapter<br />
benutzt werden, um die<br />
ButtonPressed Nachrichten<br />
abzufangen und zu<br />
übersetzen.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/75<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Verfe<strong>in</strong>erung des statischen Modells<br />
Hohe Kopplung der Display Klasse. Änderung e<strong>in</strong>er Methode von Display wegen<br />
e<strong>in</strong>es <strong>in</strong> Dialer entstandenen Bedarfs Auswirkung auf CellularRadio<br />
Maßnahme zur Entkopplung: Segregation der Schnittstellen:<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/76
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Anpassung des dynamischen Modells an die Änderungen<br />
Adapter übersetzen die ButtonPressed Nachrichten <strong>in</strong> Nachrichten, die Dialer<br />
verstehen kann.<br />
Segregation der Schnittstellen: Objekt mit Namen display taucht zweimal mit<br />
verschiedenem Klassennamen auf.<br />
Vorlesung Automatisierungsprojekte Seite 9/77<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Schlussfolgerungen bisher:<br />
• Statische Modelle s<strong>in</strong>d notwendig, aber nicht h<strong>in</strong>reichend für vollständige<br />
objektorientierte Analysen.<br />
• E<strong>in</strong> statisches Modell ohne die Erkenntnisse e<strong>in</strong>er dynamischen Analyse<br />
ist zum Scheitern verurteilt.<br />
• Die angemessenen statischen Beziehungen s<strong>in</strong>d Ergebnisse der<br />
dynamischen Anforderungen der Applikation.<br />
• <strong>UML</strong> Kollaborationsdiagramme s<strong>in</strong>d geeignet, die dynamischen Modelle<br />
herzuleiten und sie den statischen Modellen gegenüberzustellen, von<br />
denen sie getragen werden.<br />
• In den Kollaborationsdiagrammen wird die Beziehung zwischen den<br />
Objekten unter dem Aspekt der Sequenz der Nachrichten dargestellt.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/78
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Sequenzdiagramm: Gleiche Information wie Kollaborationsdiagramm,<br />
Darstellung betont Sequenz der Nachrichten statt Beziehung der Objekte.<br />
1. Ereignisablauf, wenn e<strong>in</strong>e Zifferntaste gedrückt wird<br />
Iteration der<br />
Gruppe<br />
2. Ereignisablauf, wenn der „Send“ Button gedrückt wird<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/79<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Sequenzdiagramme versus Kollaborationsdiagramme<br />
Kollaborationsdiagramm<br />
Zeigt die gesamte Objektzusammenarbeit <strong>in</strong> e<strong>in</strong>em dichten Diagramm.<br />
Sequenzdiagramm<br />
Zeigt den Fluss des Algorithmus.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/80
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Erzeugung und Vernichtung von Objekten im Sequenzdiagramm<br />
Sequenzdiagramm für<br />
„Verb<strong>in</strong>dung herstellen“ und<br />
„Verb<strong>in</strong>dung beenden“<br />
Erzeugung:<br />
Nachrichtenpfeil auf das<br />
Objektsymbol des erzeugten<br />
Objekts<br />
Zerstörung:<br />
Nachrichtenpfeil auf e<strong>in</strong> „X“<br />
Symbol am Ende der<br />
Lebensl<strong>in</strong>ie des Objekts<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/81<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Asynchrone Nachrichten und Nebenläufigkeit<br />
Sequenzdiagramm für<br />
„Verb<strong>in</strong>dung herstellen“ und<br />
„Verb<strong>in</strong>dung beenden“<br />
„Halbpfeile“ symbolisieren<br />
asynchrone Nachrichten: kehren<br />
unmittelbar zurück, nachdem<br />
e<strong>in</strong> Thread im empfangenden<br />
Objekt ausgelöst wurde.<br />
Die Methode (z.B. Connect)<br />
kann weiter existieren.<br />
Methoden, deren Balken zur<br />
gleichen Zeit existieren,<br />
repräsentieren nebenläufige<br />
Prozesse.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/82
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Konfliktbed<strong>in</strong>gungen: wenn e<strong>in</strong> Objekt Nachrichten von zwei oder mehr<br />
konkurrierenden Quellen erhält. Immer möglich bei Nebenläufigkeit.<br />
Ausschnitt aus Sequenzdiagramm „Anruf empfangen“ / „Anruf tätigen“,<br />
normaler Ablauf (Aktivierungsbalken zur Übersichtlichkeit weggelassen)<br />
Das Mobilfunkgerät (CellularRadio) detektiert e<strong>in</strong>en e<strong>in</strong>gehenden Anruf und aktiviert<br />
den Anruftöner (R<strong>in</strong>ger). Es teilt ebenso dem Dialer den E<strong>in</strong>gang e<strong>in</strong>es Anrufs mit. Dies<br />
versetzt den Dialer <strong>in</strong> e<strong>in</strong>en speziellen Zustand, <strong>in</strong> welchem der Dialer bei Empfang<br />
e<strong>in</strong>er Send Nachricht an das Mobilfunkgerät e<strong>in</strong>e Answer Nachricht schickt.<br />
Zwei verschiedene Umstände, unter denen der Dialer e<strong>in</strong>e Send Nachricht empfängt:<br />
1) Zum Anrufen Connect(pno) Nachricht, 2) zum Antworten Answer Nachricht<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/83<br />
<strong>Dynamisches</strong> <strong>Verhalten</strong> <strong>in</strong> <strong>UML</strong><br />
Szenarios: Beispiel Mobiltelefon<br />
Konfliktbed<strong>in</strong>gungen<br />
Ausschnitt aus Sequenzdiagramm „Anruf empfangen“ / „Anruf tätigen“,<br />
Konfliktbed<strong>in</strong>gungs-Ablauf<br />
Benutzer wählt gerade e<strong>in</strong>e Nummer und drückt den Send-Button, als gerade<br />
e<strong>in</strong> Anruf e<strong>in</strong>geht. Die Wege der Incom<strong>in</strong>gCall Nachricht und der Connect<br />
Nachricht kreuzen sich: Konfliktsituation<br />
Wenn das Zustandsdiagramm von CellularRadio nicht berücksichtigt, dass<br />
Connect unmittelbar nach Versenden von Incom<strong>in</strong>gCall e<strong>in</strong>treffen kann, ist<br />
CellularRadio <strong>in</strong> undef<strong>in</strong>iertem Zustand.<br />
Abwärts gerichtete Nachrichten-Pfeile symbolisieren, dass zwischen Absenden und<br />
Empfang der Nachricht Zeit vergehen kann.<br />
Robert C. Mart<strong>in</strong>: „Eng<strong>in</strong>eer<strong>in</strong>g Column“<br />
Vorlesung Automatisierungsprojekte Seite 9/84
RT-Erweiterung <strong>UML</strong><br />
Sequenzdiagramme<br />
Erweiterungen zur Erfassung von RT-Anforderungen<br />
• Zustands-Marken: Auf der Lebensl<strong>in</strong>ie e<strong>in</strong>es Objekts werden die<br />
e<strong>in</strong>genommenen Zustände des Objekts <strong>in</strong> ihrem zeitlichen Ablauf<br />
dargestellt.<br />
• Zeitablauf-Marken (tim<strong>in</strong>g marks): Standard-Darstellung der Zeitdifferenz<br />
zwischen zwei Nachrichten<br />
• Nachrichten haben zusätzliche semantische Elemente. E<strong>in</strong>e Nachricht hat<br />
folgende Operationen:<br />
msg.sendTime: Zeit, zu der die Nachricht von der Quelle versandt wird.<br />
msg.receiveTime: Zeit, zu der die Nachricht vom Empfänger erhalten wird.<br />
• Weitere semantische Elemente können h<strong>in</strong>zugefügt werden<br />
• msg.executionTime<br />
• msg.arrivalPattern: periodisch/aperiodisch<br />
• msg.period<br />
• msg.jitter<br />
• msg.m<strong>in</strong>imumArrivalTime<br />
• msg.deadl<strong>in</strong>e<br />
• ...<br />
Erlauben Zeitablaufanalysen.<br />
Vorlesung Automatisierungsprojekte Seite 9/85<br />
RT-Erweiterung <strong>UML</strong><br />
Sequenzdiagramme<br />
Erweiterungen zur Erfassung von RT-Anforderungen<br />
Beispiel Sequenzdiagramm „Herzschrittmacher“<br />
Vorlesung Automatisierungsprojekte Seite 9/86<br />
Aus: Bruce Powel Douglass: Real Time <strong>UML</strong> Second Edition
RT-Erweiterung <strong>UML</strong><br />
Sequenzdiagramme<br />
Erweiterungen zur Erfassung von RT-Anforderungen<br />
Fortgeschrittene Sequenzdiagramme<br />
Vorlesung Automatisierungsprojekte Seite 9/87<br />
Aus: Bruce Powel Douglass: Real Time <strong>UML</strong> Second Edition