11.03.2014 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!