Unified Modeling Language (UML)

Transcription

Unified Modeling Language (UML)
15.
Überblick und Wiederholung UML
Unified Modeling Language (UML)
Unified Modeling Language ursprünglich entwickelt von
• Grady Booch,
• James Rumbaugh und
• Ivar Jacobson
(3 Amigos).
Graphische Sprache, um Artifakte von Software-Systemen zu
• visualisieren,
• spezifizieren,
• konstruieren und
• dokumentieren.
Dokumentation der „Baupläne“ eines Software Projektes.
UML 1.0 wurde 1997 der Object Management Group (OMG) zur
Standardisierung angeboten.
Im September 1997 angenommen.
Pflege der UML durch die OMG Revision Task Force (RTF).
Im Herbst 1998 wurde UML 1.3 freigegeben.
- 393
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.1
Überblick und Wiederholung UML
Entwicklungsprozeß
Entwicklungsprozeß
• UML ist Modellierungssprache, keine Methode.
• Enthält keine Prozeßbeschreibung, die wichtigen Teil einer Methode
ausmacht.
• UML ist unabhängig von dem verwendeten Prozeß.
• Lösung der 3 Amigos: Rational Objectory Process.
- Eher ein Prozeßrahmenwerk (Process Framework) mit Spielräumen zur Anpassung.
• Iterativer und inkrementeller Entwicklungsprozeß.
• Software wird in Teilen entwickelt und freigegeben.
• Insbesondere die Konstruktionsphase besteht aus vielen Iterationen,
- wobei bei jeder Iteration real nutzbare Software erstellt, getestet
und integriert wird (Teilmenge der Anforderungen des Projektes).
Einstieg
(Inception)
Konstruktion
(Construction)
Ausarbeitung
(Elaboration)
1
2
3
Überleitung
(Transition)
...
Jede Iteration besteht aus den üblichen Phasen Analye, Entwurf,
Implementierung und Test.
- 394
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.1
Überblick und Wiederholung UML
Entwicklungsprozeß
Zwei Vorphasen
Einstieg
• Begründung der geschäftlichen Absichten des Projektes
(Kosten/Nutzen).
• Anwendungsdomäne kennenlernen.
• Abgrenzung.
• O.K. des Managements weiterzumachen.
• „Machbarkeitsstudie“
- 395
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.1
Überblick und Wiederholung UML
Entwicklungsprozeß
Zwei Vorphasen
Ausarbeitung
• Sammeln detaillierter Anforderungen.
• Analyse und Entwurf auf hohem Abstraktionsgrad: Grundlegende
Architektur, Plan für die Konstruktion.
• Welche Technologien sollen eingesetzt werden?
• Welche Risiken sind vorhanden?
• Vorgehensweise:
- Anwendungsfälle entdecken
- Gerüst eines konzeptionellen Modells des Problembereichs:
Grundlage für Objektmodell -> Problembereichsmodell
- Entwurfsmodell: Klassen zur Übernahme der Aufgaben. Wiederverwendbare Architektur für künftige Erweiterungen.
• Nicht alle Anwendungsfälle auf einmal.
- Zunächst nur zentrale Anwendungsfälle und zentrale Klassen des
Problembereichs.
- Weitere Anwendungsfälle können inkrementell hinzugefügt werden.
• Wichtige UML-Techniken neben Anwendungsfällen hierbei
(Problembereichsmodell):
- Klassendiagramme,
- Aktivitätsdiagramme (Arbeitsabläufe, workflows),
- Interaktionsdiagramme (später nützlicher).
- 396
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.1
Überblick und Wiederholung UML
Entwicklungsprozeß
Eine nachgeschaltete Phase
Überleitung
• Betatests,
• Performance-Verbesserungen,
• Benutzertraining.
Im Prinzip Iterationen auch in den anderen Phasen (neben
Konstruktion).
- 397
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.1
Überblick und Wiederholung UML
Entwicklungsprozeß
Konstruktion
Einstieg
(Inception)
Konstruktion
(Construction)
Ausarbeitung
(Elaboration)
1
2
3
Überleitung
(Transition)
...
• Erstellung des Systems in einer Folge von Iterationen.
- Jeweils ein eigenes Miniprojekt.
• Analyse, Entwurf, Programmierung, Test und Integration
- für jeden Anwendungsfall, der der Iteration zugewiesen ist.
- Ziel: Risikoverminderung.
- Ständiges Testen und Integrieren.
• Vorgang ist sowohl inkrementell als auch iterativ:
- Inkrementell bezüglich Funktionalität.
- Jede Iteration baut auf Anwendungsfällen der vorigen Iteration
auf.
- Iterativ bezüglich der Codebasis.
- Jede Iteration wird ein Umschreiben eines Teils des existierenden Codes zur Folge haben (Umstrukturierung, refactoring).
- Reduktion der „Softwareentropie“.
- Gleiche Funktionalität bei geänderter innerer Struktur (Umbenennung einer Methode, Verschieben von Attributen in andere
Klasse, Zusammenführung gleichartiger Methoden zweier Klassen
in Superklasse).
- 398
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.1
Überblick und Wiederholung UML
Entwicklungsprozeß
Konstruktion
• Alle UML-Techniken sind in der Konstruktion wichtig und nützlich:
- Anwendungsfälle (auch Abgrenzung des Arbeitsgebietes)
- Konzeptionelles Klassenmodell (Vorbereitung einiger Konzepte für
den Anwendungsfall)
- Aktivitätsdiagramm, falls Anwendungsfall bedeutende Arbeitsablaufelemente enthält
• Dies zusammen mit Experten der Anwendungsdomäne.
• Übergang zum Entwurf:
- Detaillierte Ausarbeitung der Klassendiagramme
- Interaktionsdiagramme (Sequenz- und Kollaborationsdiagramme)
zum Zusammenspiel der Klassen zur Implementierung des Anwendungsfalls
- Klassenkarten (CRC cards): Verantwortlichkeiten der Klassen
• Nicht unbedingt detaillierte Diagramme für das ganze Systems. Nur
dort, wo es auch etwas bringt.
• Weiterhin:
- Paketdiagramme als logischer Plan des Systems.
- Für jedes Paket ein spezifikationsorientiertes Klassendiagramm
(Assoziationen, nur die wichtigen Attribute und Methoden)
-> Graphisches Inhaltsverzeichnis
- Zustandsdiagramme, falls Klasse komplexes Verhalten während
ihres Lebenszyklus hat. Selten notwendig.
- Eher Interaktionsdiagramme
- Einsatz von Entwurfsmustern (Design Patterns)
Martin Fowler, Kendall Scott:
„Iterative Entwicklung nur für Projekte einsetzen, von denen man will,
daß sie erfolgreich ablaufen“.
- 399
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.2
Überblick und Wiederholung UML
Anwendungsfälle
Anwendungsfälle
Use Cases.
• Typische Interaktion zwischen einem Benutzer und einem
Computersystem:
- Eine dem Benutzer sichtbare Funktion
- Kann klein und groß sein
- Benutzer erreicht ein abgrenzbares Ziel
• Zunächst: Name und einige Absätze beschreibender Text.
• Anwendungsfälle werden häufig erst in ihrer Iteration detailliert.
• Graphische Darstellung: Anwendungsfalldiagramme (use case
diagrams).
• Beispiel: Anwendungsfälle eines Finanzhandelsplatzes:
Aktualisiere
Konten
Setze Grenze
Analysiere Risiko
<<include>>
Bewertung
Manager
Buchhaltungssystem
<<include>>
Preis für Handel
bestimmen
Handel
festmachen
Händler
Verkäufer
<<extend>>
Grenze
überschritten
- 400
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.2
Überblick und Wiederholung UML
Anwendungsfälle
Akteur (actor)
• Vom Anwender in Bezug auf das System eingenommene Rolle.
- Ein Anwender kann mehrere Rollen einnehmen.
• Akteure führen Anwendungsfälle durch.
- Ein Akteur kann mehrere Anwendungsfälle ausführen.
- Ein Anwendungsfall kann von mehreren Akteuren ausgeführt
werden.
• Ein Akteur kann auch ein externes System sein.
• Hauptfokus sollte darauf liegen, die Anwendungsfälle zu erhalten,
nicht so sehr auf den Varianten der Akteure.
Beziehungen
Zwei Verbindungstypen zwischen den Anwendungsfällen:
• Extend (früher extends):
- Seltene Variation des erweiterten Anwendungsfalles.
- Sonderfall, Fehlerbehandlung.
- Dadurch wird der eigentliche Anwendungsfall nicht durch Spezialfälle überfrachtet.
- Eingefügt an extension points.
- Beschrieben im extending use case.
• Include (früher uses):
- Gleicher Verhaltensteil in mehreren Anwendungsfällen.
- Wird ausfaktorisiert (factoring out).
In UML 1.3 gibt es Generalisierung/Spezialisierung von
Anwendungsfällen
- 401
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Klassendiagramme
• Erstellung von Klassendiagrammen ist zentrale Technik innerhalb
aller objektorientierten Methoden.
• Zwei Arten statischer Beziehungen zwischen Klassen:
- Assoziationen
- Untertypen (Generalisierung/Spezialisierung)
• Klassendiagramme zeigen auch
- Attribute und
- Operationen/Methoden der Klassen sowie
- die Bedingungen der Verbindung ihrer Objekte.
Assoziationen
Auftrag
empfangsDatum
istVorausBezahlt
anzahl: String
preis: Geld
ausführen()
abschliessen()
1
Kunde
*
1
{ wenn Auftrag.kunde.
kreditWürdigkeit() ==
"gering" dann muß
Auftrag.istVorausBezahlt
true sein }
name
adresse
kreditWürdigkeit(): String
*
Auftragsposition
menge: Integer
preis: Geld
istGeliefert:
Boolean
*
Positionen
1
Produkt
Firmenkunde
unternehmensName
kreditWürdigkeit
kreditLimit
kreditkartenNr
erinnern()
forderungenImMonat(Integer)
kreditWürdigkeit(): String
Verkäufer
*
0..1
{ kreditWürdigkeit() ==
"gering" }
Angestellter
- 402
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
Privatkunde
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Rolle
• Entweder besonderer Bezeichner bei der Klasse, die für die Klasse
der anderen Seite diese Rolle spielt.
- Ohne besonderen Bezeichner: Name der Klasse ist auch Rollenbezeichner.
• Eine Rolle besitzt eine Kardinalität:
- Wieviele Objekte sind an der Beziehung beteiligt?
- „*“ bedeutet 0 bis viele.
• Aus den Beziehungen können Methoden abgeleitet werden, die den
Zugriff auf die verbundenen Klasse ermöglichen.
• Bei mehrwertigen Beziehungen sind Container und Iteratoren
einzusetzen.
Beispiel
class Auftrag {
private Kunde kunde;
private Vector auftragsPositionen;
...
}
class Kunde {
private Vector auftraege;
...
}
- 403
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Assoziationen
Navigierbarkeit
• Durch zusätzliche Pfeile kann die Navigierbarkeit angezeigt werden:
Auftrag
empfangsDatum
istVorausBezahlt
anzahl: String
preis: Geld
ausführen()
abschliessen()
1
Kunde
*
1
{ wenn Auftrag.kunde.
kreditWürdigkeit() ==
"gering" dann muß
Auftrag.istVorausBezahlt
true sein }
name
adresse
kreditWürdigkeit(): String
*
Auftragsposition
menge: Integer
preis: Geld
istGeliefert:
Boolean
*
Positionen
Firmenkunde
Privatkunde
unternehmensName
kreditWürdigkeit
kreditLimit
kreditkartenNr
erinnern()
forderungenImMonat(Integer)
kreditWürdigkeit(): String
1
Produkt
Verkäufer
*
0..1
{ kreditWürdigkeit() ==
"gering" }
Angestellter
• Assoziationen können zusätzlich – meist durch ein Verb – benannt
werden.
• Für die Rollenbezeichnung verwendet man Substantive.
- 404
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Attribute
Volle Spezifikation:
Sichtbarkeit Name: Typ = Defaultwert {Property-String}
Sichtbarkeiten:
Public
+
Protected
#
Private
Properties:
{changeable}
{addOnly}
{frozen}
Voreinstellung
Bei Feldern o.ä. kann Element hinzugefügt werden,
aber nie eines wieder entfernt werden
const Attribut
Assoziationen implizieren für die Navigierbarkeit Attribute.
- 405
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Operationen
• Prozesse, die eine Klasse ausführen kann.
• Korrespondieren mit den Methoden der Klasse.
• Triviale Methoden (get- und set-Methoden für Attribute) werden
üblicherweise nicht dargestellt.
Spezifikation:
Sichtbarkeit Name (Parameterliste) : Rückgabetyp { Property-String }
Jeder Parameter in der Parameterliste hat die folgende Struktur:
Richtung Name : Typ = Defaultwert
Richtung steht für die Möglichkeiten
in
out
inout
Vordefinierte Properties:
{isQuery}
Zustand des Objektes bleibt unverändert
{sequential}
Nutzer müssen sicherstellen, daß ein Objekt über
diese Operation nur einmal zu einer Zeit
angesprochen wird
{guarded}
Alle Aufrufe werden serialisiert
{concurrent} Operation wird als atomar angesehen (synchronized
in Java)
Lange Listen von Operationen können durch Stereotypen klassifiziert
werden:
«constructor»
«process»
«query»
«modifier»
«helper»
- 406
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Bedingungsregeln
Engl.: constraints
Strikte Syntax in UML:
Eingebettet zwischen geschweifte Klammern: { ... }.
Corporation
Bank Account
{ or }
Person
gender : {female, male}
0..1
wife
0..1
husband
{ self.wife.gender = female and
self.husband.gender = male }
Hier wird UML's Object Constaint Language (OCL) verwendet.
- 407
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Stereotypen
• Weitere Klassifizierung von Klassen.
- Z.B. Entity-, Control-, Interface-Klassen bei Ivar Jacobson (hier
jedoch eigene graphische Darstellung) oder
- im MVC-Konzept.
• Bedeutet auch eine bestimmte Verantwortlichkeitskategorie.
• Dient auch als allgemeiner Erweiterungsmechanismus der UML.
• Üblicherweise zwischen « ... » dargestellt ( «Entity» ).
- 408
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Aggregation und Komposition
Aggregation
• Unterschied zwischen Assoziation und Aggregation wird von
verschiedenen Autoren nicht einheitlich definiert.
• Ist die Assoziation zwischen Firma und ihren Angestellten eine
Aggregation?
- Peter Coad: ja,
- Jim Rumbaugh: nein.
• Aggregation ist eine
- konzeptionelle Ganzes-Teil Beziehung
- ohne konkrete Auswirkungen auf
- die Navigierbarkeit zwischen den beteiligten Klassen und
- deren Existenzabhängigkeiten.
- 409
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Aggregation und Komposition
Komposition
• Bei der Komposition ist das anders. Hier kommt zusätzliche
Semantik ins Spiel.
- Das Ganze ist Eigentümer seiner Teile.
- Soweit Teile flexible Multiplizitäten haben können sie zwar dem
Ganzen hinzugefügt und wieder entnommen werden.
- Sie leben und sterben jedoch mit dem Ganzen zusammen.
• Ein Teil einer Komposition kann immer nur Teil eines Ganzen sein.
• Bei einer normalen Aggregation kann ein Teil Bestandteil mehrerer
Aggregate sein.
• Bei der Komposition muß das Ganze auch die Erzeugung und
Vernichtung seiner Teile verantwortlich übernehmen.
Beispiel für eine Komposition:
Window
*
Frame
Die Teile einer Komposition ähneln Attributen. Sie sind feste
Bestandteile der Ganzes-Klasse.
- 410
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Abhängigkeit
Engl.: dependency
• Abhängigkeit von einer anderen Klasse.
- Diese kommt etwa als Typ in der Parameterversorgung einer
Methode vor.
• Bedeutet, daß eine Änderung in der Spezifikation einer Sache
(Event) Auswirkungen auf eine andere Sache (Window) hat, die die
erste Sache verwendet.
Window
open()
close()
move()
display()
handleEvent()
Event
• Die Klasse Window benutzt die Klasse Event,
- jedoch nicht im Sinne einer Assoziation, sondern
- nur im Sinne der Verwendung der Spezifikation.
• Auch die friend-Beziehung von C++ kann als Abhängigkeit
modelliert werden:
CourseSchedule
Course
add(c: Course)
remove(c: Course)
<<friend>>
Iterator
- 411
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Abstrakte Klassen und Schnittstellen
Abstrakte Klassen
WindowsFenster
Fenster
TextEditor
nachVorne()
nachHinten()
nachVorne()
nachHinten()
X11Fenster
nachVorne()
nachHinten()
MacFenster
nachVorne()
nachHinten()
• Darstellung durch
- Kursivschrift oder
- Constraint: {abstract}.
• Gilt für Klassen und Methoden.
- 412
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Abstrakte Klassen und Schnittstellen
Schnittstellen
• Sei InputStream eine abstrakte Klasse,
• DataInput ein Interface.
• DataInputStream ist konkreter Nachfahre von InputStream und
implementiert zusätzlich DataInput.
• Die Klasse OrderReader verwendet an einigen Stellen die
Schnittstelle DataInput und ist daher davon abhängig.
InputStream
{abstract}
<<interface>>
DataInput
OrderReader
DataInputStream
Andere Darstellung von Schnittstellen:
DataInput
OrderReader
DataInputStream
InputStream
• Hier keine Unterscheidung in der Darstellung zwischen Schnittstelle
und abstrakter Klasse.
- 413
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Sammlungen mehrwertiger Rollen
multi-valued roles
Rolle, deren obere Schranke der Kardinalität größer als 1 ist (z.B. *).
Window
*
Subwindow
Wird üblicherweise als Menge angesehen.
- Keine besondere Anordnung der Zielobjekte.
- Kein Zielobjekt tritt mehrfach auf.
- 414
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Sammlungen mehrwertiger Rollen
Dies kann verändert werden durch Angabe von constraints.
Window
{ordered}
*
Subwindow
Mögliche Angaben:
{ordered}
Bestimmte Anordnung, jedes Objekt nur einmal
{bag}
Keine Anordnung, Objekte können mehrfach
vorkommen
{ordered bag} Bestimmte Anordnung, Objekte können mehrfach
vorkommen
Weitere Möglichkeiten:
{hierarchy}
{dag}
Zielobjekte bilden Hierarchie
Zielobjekte bilden gerichteten azyklischen Graphen
(directed acyclic graph)
- 415
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Qualifizierte Assoziationen
UML-Äquivalent des Programmierkonzeptes Assoziatives Feld
(associative array), Abbildung (map) und Dictionary.
Auftragsposition
0..1
Auftrag
menge: int
Produkt
Aussage:
- Für jeden Wert von Produkt kann es eine Auftragsposition geben.
- In einem Auftrag kann man nicht zwei Auftragspositionen für
dasselbe Produkt haben.
• Produkt dient als Index zum Zugriff auf die zugehörige
Auftragsposition.
• Kardinalität wird durch Qualifizierung reduziert.
- 416
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Assoziationsklassen
Eine Assoziation zwischen zwei Klassen kann selbst Eigenschaften
besitzen.
Dies können Attribute, aber auch Operationen ein.
arbeitgeber
Person
1..*
Firma
*
Anstellung
stellung
einstellDatum
zeitraum
gehalt
Zusätzliche Bedingung:
- Es kann nur eine Instanz der Assoziationsklasse zwischen zwei
teilnehmenden Objekten bestehen.
Nach obigem Diagramm dürfte eine Person nicht aus der Firma
ausscheiden und später nocheinmal eingestellt werden.
Dann müßte die Assoziationsklasse als reguläre Klasse implementiert
werden:
Anstellung
Person
1
*
stellung
einstellDatum
zeitraum
gehalt
- 417
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
1..*
1
Firma
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.3
Überblick und Wiederholung UML
Klassendiagramme
Parametrisierbare Klassen
Engl.: templates
Typisch für C++. Nützlich für Container-Klassen.
T
Menge
einfuegen(e: T)
entfernen(e: T)
Verwenden von Template-Klassen als gebundenes Element (bound
element):
Menge <Angestellter>
Oder ausführlicher:
T
Menge
einfuegen(e: T)
entfernen(e: T)
Verfeinerung
<<bind>>
<Angestellter>
Parameterbindung
AngestelltenMenge
• Eigentlich nicht dasselbe wie Vererbung oder Implementierung einer
Schnittstelle.
- 418
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Interaktionsdiagramme
interaction diagrams
Mit welchem Verhalten arbeiten Gruppen von Objekten zusammen.
Ein Interaktionsdiagramm beschreibt üblicherweise das Verhalten
eines Anwendungsfalles.
Anzahl exemplarischer Objekte und die Nachrichten, die zwischen
diesen Objekten innerhalb des Anwendungsfalles ausgetauscht
werden.
Beispiel-Anwendungsfall:
• Auftragserfassungsfenster sendet nachricht bereiteVor an einen
Auftrag
• Auftrag sendet bereiteVor an jede Auftragsposition des Auftrags
• Jede Auftragsposition prüft den angegebenen Lagerartikel auf
Verfügbarkeit:
- Ist noch genügend am Lager, löscht Auftragsposition die entsprechende Menge von Lagerartikeln aus dem Lager.
- Sonst fordert Lagerartikel eine neue Lieferung an.
Zwei Arten von Interaktionsdiagrammen: Sequenz- und
Kollaborationsdiagramme.
- 419
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Sequenzdiagramme (1/3)
Unser Beispiel-Anwendungsfall:
af : Auftragserfassungsfenster
ap : Auftragsposition
a : Auftrag
bereiteVor()
lagArt : LagerArtikel
* [für alle Auftragspositionen]
bereiteVor()
vorhanden := prüfe()
Bedingung
Objekt
Selbstdelegation
[vorhanden]
entnehmen()
Nachricht
Iteration
nachzubestellen :=
nachbestellungNotwendig()
[nachzubestellen]
<<create>>
nb : NachbestellArtikel
[vorhanden] <<create>>
lf : LieferArtikel
Rückgabe
Erzeugung
• Vertikale Linien sind die Lebenslinien der Objekte.
- Solange lebt das Objekt.
- Zeit läuft von oben nach unten.
- Erstmals von Ivar Jacobson so verwendet.
• Nachricht durch Pfeil zwischen den Lebenslinien zweier Objekte.
- Reihenfolge der Nachrichten anhand der vertikalen Zeitachse gegeben.
- Kennzeichnung durch wenigstens den Namen der Nachricht.
- Weiterhin möglich: Parameter, Steuerinformation.
- 420
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Sequenzdiagramme (2/3)
af : Auftragserfassungsfenster
ap : Auftragsposition
a : Auftrag
bereiteVor()
lagArt : LagerArtikel
* [für alle Auftragspositionen]
bereiteVor()
vorhanden := prüfe()
Bedingung
Selbstdelegation
Objekt
[vorhanden]
entnehmen()
Nachricht
Iteration
nachzubestellen :=
nachbestellungNotwendig()
[nachzubestellen]
<<create>>
nb : NachbestellArtikel
[vorhanden] <<create>>
lf : LieferArtikel
Rückgabe
Erzeugung
• Nachricht an eigenes Objekt (eigene Methode): Selbstdelegation.
• Steuerinformationen:
- Bedingung, daß Nachricht gesendet wird.
In eckigen Klammern.
Z.B. [nachzubestellen].
Bedingung muß wahr sein, damit Nachricht gesendet wird.
- Iterationsmarkierung: Nachricht wird mehrmals an verschiedene
Empfängerobjekte geschickt (z.B. an alle Objekte eines Containers).
Eingeleitet durch einen *
Beispiel: *[für alle Auftragspositionen].
- 421
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Sequenzdiagramme (3/3)
af : Auftragserfassungsfenster
ap : Auftragsposition
a : Auftrag
bereiteVor()
lagArt : LagerArtikel
* [für alle Auftragspositionen]
bereiteVor()
vorhanden := prüfe()
Bedingung
Selbstdelegation
Objekt
[vorhanden]
entnehmen()
Nachricht
Iteration
nachzubestellen :=
nachbestellungNotwendig()
[nachzubestellen]
<<create>>
nb : NachbestellArtikel
[vorhanden] <<create>>
lf : LieferArtikel
Rückgabe
Erzeugung
• Rückgaben sind optional und meistens überflüssig, wenn man
Aktivierungen verwendet.
- Rückgaben sind keine neue Nachricht!
- Sollten eher vermieden werden.
• Aktivierungen (focus of control) stellen dar, wie lange die Methode,
die auf die Nachricht hin gestartet wird, aktiv ist.
- Ist in UML optional.
- Aber sehr empfehlenswert, da dadurch die Übersichtlichkeit extrem steigt.
- 422
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Nebenläufige Prozesse
Anwendungsfall:
• Neue Transaktion: Sie erzeugt einen Transaktionskoordinator, um
die Prüfung der Transaktion zu koordinieren.
• Koordinator erzeugt Anzahl von Transaktionsprüfobjekten (hier
zwei), die unabhängig voneinander verschiedene Aspekte prüfen
können. Sie werden asynchron aufgerufen und können ihre Arbeit
unabhängig voneinander durchführen.
• Ist einer der Transaktionsprüfer fertig, benachrichtigt er den
Transaktionskoordinator (synchron oder asynchron).
• Dieser schaut nach, ob sich schon alle Prüfer gemeldet haben.
• Ist dies geschehen und die Prüfungen waren erfolgreich, dann
benachrichtigt er die Transaktion, daß alles o.k. ist.
t : Transaktion
<<create>>
tk : Transaktionskoordinator
<<create>>
asynchrone
Nachricht
tp1 : Transaktionsprüfer1
<<create>>
ok
tp2 : Transaktionsprüfer2
erledigt()
ok
erledigt()
istGültig
ggf. asynchron
Vernichtung
ggf. asynchron
- 423
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Nebenläufige Prozesse
Asynchrone Nachrichten können verschiedenes tun:
• Einen neuen Thread zur Abarbeitung der Nachricht erzeugen
• Ein neues Objekt erzeugen, das dann in einem separaten Thread
läuft
• Mit einem Thread kommunizieren, der bereits läuft.
Ein anderer Verlauf des Anwendungsfalles:
Wenn eine Transaktion erzeugt wird
...
... erzeugt sie einen
Koordinator zur
Verwaltung der
Prüfung
t : Transaktion
<<create>>
tk : Transaktionskoordinator
<<create>>
Dieser erzeugt eine
Folge von Prüfern.
Diese erledigen ihre
Aufgabe in separaten Prozessen.
tp1 : Transaktionsprüfer1
<<create>>
nicht o.k.
Wenn eine Prüfung
nicht o.k. ist, sorgt
der Koordinator für
den Abbruch aller
anderen Prüfer, die
noch aktiv sind ...
tp2 : Transaktionsprüfer2
abbrechen()
abbrechen
istUngültig
... und teilt der
Transaktion mit, daß
sie ungültig ist.
- 424
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.4
Überblick und Wiederholung UML
Interaktionsdiagramme
Kollaborationsdiagramme
Hier steht nicht so sehr
- der zeitliche Ablauf der Kommunikation im Mittelpunkt,
- als vielmehr die Zusammenarbeit der Objekte,
also z.B. die Frage,
- welches Objekt ruft welches andere Objekt auf und wenn ja,
- welche seiner Methoden.
Unser Beispiel der Auftragserfassung:
af : Auftragserfassungsfenster
Sequenznummer
1: bereiteVor()
5: nachzubestellen :=
nachbestellungNotwendig()
a : Auftrag
2: * [für alle Auftragspositionen]
bereiteVor()
3: vorhanden := prüfe()
4: [vorhanden] entnehme()
ap : Auftragsposition
7: [vorhanden] <<create>>
lagArt : Lagerartikel
6: [nachzubestellen] <<create>>
lf : Lieferartikel
nb : Nachbestellartikel
Sequenz- und Interaktionsdiagramme sind semantisch identisch.
Das eine Diagramm läßt sich in das andere überführen.
- 425
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.5
Überblick und Wiederholung UML
Paketdiagramme
Paketdiagramme
Wie zerlegt man ein großes System in kleinere Einheiten?
• Funktionale Zerlegung aus der Zeit der strukturierten Analyse:
Anwendungsfälle tun das im wesentlichen.
• Objekte fassen Daten und Funktionen zusammen. Wie könnte man
Objekte zu größeren Einheiten zusammenfassen?
• Eine solche Gruppierungseinheit wird in der UML als Paket
(package) bezeichnet. Siehe auch packages von Java.
- Kriterien der Paketbildung: Abhängigkeiten.
• Darstellung in Paketdiagrammen (package diagrams).
- Streng genommen ist ein Paketdiagramm auch ein Klassendiagramm, nur auf abstrakterer Ebene.
• Eine Abhängigkeit (dependency) besteht zwischen zwei Elementen,
wenn eine Änderung an der Definition eines Elements eine
Änderung an der Definition des anderen Elements hervorrufen
würde.
• Abhängigkeiten:
- Eine Klasse sendet eine Nachricht an eine andere
- Eine Klasse hat eine andere Klasse als Teil ihrer Daten
- Eine Klasse erwähnt eine andere Klasse als Typ eines Operationenparameters.
• Wenn letztere Klasse die Schnittstelle ändert, dann muß auch die
erstere Klasse geändert werden. Nachrichten sind sonst nicht mehr
gültig.
- 426
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.5
Überblick und Wiederholung UML
Paketdiagramme
Paketdiagramme
• Idealerweise dürfen nur Schnittstellenänderungen, nicht
Implementierungsänderungen, andere Klassen berühren.
• Kunst des Entwurfs großer Systeme: Abhängigkeiten minimieren.
Beispiel
Auftragserfassung UI
Adresskartei
UI
AWT
Auftragserfassungsanwendung
Adresskarteianwendung
Auftraege
Kunden
• Abhängigkeiten sind nicht transitiv:
- Wenn sich im Paket „Auftraege“ etwas ändert, muß das nicht die
Notwendigkeit einer Änderung am Paker „Auftragserfassungs UI“
zur Folge haben.
- Das Paket „Auftragserfassungsanwendung schirmt diese Änderung ab.
• Dies ist die Semantik des Java „import“-Verhaltens, jedoch nicht
des „include“-Verhaltens bei C++.
- 427
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.5
Überblick und Wiederholung UML
Paketdiagramme
Paketdiagramme
• Pakete können andere Pakete enthalten.
- Es ist nicht klar, was dabei Abhängigkeit bedeutet: Auch zu den
Unterpaketen oder nur zu dem äußeren Paket?
- In einem konkreten Projekt sollte das zuvor festgelegt werden.
- Andere Möglichkeit: Stereotypen für Abhängigkeiten: «transparent» oder «opaque».
• Was sieht man von einem Paket, zu dem man eine Abhängigkeit
hat:
- Alle öffentlichen Klassen und deren öffentliche Methoden.
• In Java ist die Default-Sichtbarkeit „package“.
- Damit kann man Dinge im Package veröffentlichen, ohne daß sie
für andere Packages sichtbar sind.
- Bei C++ ist das nicht möglich.
• Reduktion der Kopplung nach draußen:
- Allen Klassen des Pakets nur „package“-Sichtbarkeit geben und
- zusätzlich öffentliche Fassaden-Klassen definieren (Facades Design Pattern).
- Öffentliche Methoden werden an Package-interne Methoden delegiert.
- 428
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.5
Überblick und Wiederholung UML
Paketdiagramme
Paketdiagramme
Das obige Beispiel erweitert:
Auftragserfassung UI
Adresskartei
UI
AWT
Auftragserfassungsanwendung
Adresskarteianwendung
Problembereich
Auftraege
Gemeinsam
Kunden
OracleSchnittstelle
{global}
+ Menge
+ Geld
+ Datumsbereich
Datenbankschnittstelle
SybaseSchnittstelle
Neu:
- Übergeordnetes Paket „Problembereich“. Abhängigkeit kann zum
gesamten Paket oder nur zu einem Unterpaket bestehen.
- Globales Package: Abhängigkeit von allen Paketen
- Generalisierung
- 429
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.5
Überblick und Wiederholung UML
Paketdiagramme
Paketdiagramme
• Generalisierung impliziert immer eine Abhängigkeit des Untertyps
von dem Obertyp. Diese wird nicht explizit dargestellt.
• Zyklen in den Abhängigkeiten sollten vermieden (wenigstens
minimiert) werden.
Einsatz von Paketdiagrammen
• Unerläßlich bei großen Projekten
• Wenn da Gesamtdiagramm nicht mehr auf einer DIN A4-Seite
darstellbar ist
• Kopplung zwischen Paketen sollte minimal sein
• Paket stellt Einheit zum Testen dar (Modultest)
- 430
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Zustandsdiagramme
• Verbreitete Technik zum Beschreiben des dynamischen Verhaltens
von Systemen.
- Beschreiben Zustände, die ein bestimmtes Objekt annehmen
kann, und
- wie sich sein Zustand als Ergebnis von das Objekt erreichenden
Ereignissen verändert.
• Meistens für einzelne Klasse verwendet, wenn sie ein genügend
komplexes dynamisches Verhalten während ihrer Lebenszeit
besitzen.
• Die in der UML eingesetzten Zustandsdiagramme gehen zurück auf
die sog. Statecharts von David Harel (1987). Verwendet in OMT und
später auch von Booch.
Zustände eines Auftrags
H
/hole erste Auftragsposition
in Prüfung
hole nächste Auftragsposition
[noch Positionen ungeprüft]
[alle Positionen geprüft &&
alle Positionen verfügbar]
do/prüfe Position
[alle Positionen geprüft &&
einige Positionen nicht am Lager]
freigegeben
do/initiiere
Auslieferung
ausgeliefert
Position erhalten
[alle Positionen verfügbar]
Position erhalten
[einige Positionen nicht am Lager]
wartend
ausgeliefert
- 431
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Zustandsdiagramme: Syntax
Syntax einer Transition:
Ereignis [Bedingung] /Aktion
Nach dem Start nur eine Aktion: /hole erste Auftragsposition.
Sobald diese Aktion ausgeführt ist, betreten wir den Zustand „in
Prüfung“. Mit diesem Zustand ist eine Aktivität verbunden.
Syntax:
do/ Aktivität
Unterschied Aktion und Aktivität:
• Aktion: Kurzzeitiger, nicht unterbrechbarer Prozeß
• Aktivität: Mit Zustand asoziiert, kann länger andauern. Kann durch
Ereignis unterbrochen werden.
Dennoch immer als Methoden realisiert.
Regeln:
• Enthält die Beschriftung einer Transition kein Ereignis, so tritt sie
ein, sobald jede mit dem Zustand assoziierte Aktivität beendet ist.
• Eine Transition kann eine Bedingung (guard) in eckigen Klammern
enthalten. Nur wenn sie wahr ist, findet der Übergang statt (die
Bedingung „bewacht“ den Übergang).
• Aus einem Zustand muß über die Bedingungen eindeutig genau ein
Übergang in den nächsten Zustand führen. Die Bedingungen
müssen entsprechend sein.
• Der Übergang von dem Zustand „freigegeben“ in den Zustand
„ausgeliefert“ findet nur statt, wenn da Ereignis ausgeliefert eintritt.
Sonst verharrt das Objekt im Zustand „freigegeben“.
- 432
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Zustandsdiagramme: Unterbrechung
• Wir fügen eine Transition „abbrechen“ hinzu, die jederzeit durch das
Ereignis abgebrochen ausgelöst werden kann:
H
/hole erste Auftragsposition
in Prüfung
hole nächste Auftragsposition
[noch Positionen ungeprüft]
do/prüfe Position
[alle Positionen geprüft &&
alle Positionen verfügbar]
freigegeben
do/initiiere
Auslieferung
[alle Positionen geprüft &&
einige Positionen nicht am Lager]
Position erhalten
[alle Positionen verfügbar]
Position erhalten
[einige Positionen nicht am Lager]
wartend
ausgeliefert
abgebrochen
abgebrochen
abgebrochen
abgebrochen
ausgeliefert
• Da dieser Übergang von 3 Zuständen gleichermaßen ausgehen
kann, ist es nützlich, diese in einem Oberzustand (superstate)
zusammenzufassen.
• Die verschachtelten Unterzustände (substates) erben jede Transition
des Oberzustandes.
- 433
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Verschachtelet Zustandsdiagramme
H
/hole erste Auftragsposition
Aktiv
in Prüfung
hole nächste Auftragsposition
[noch Positionen ungeprüft]
do/prüfe Position
[alle Positionen geprüft &&
alle Positionen verfügbar]
freigegeben
do/initiiere
Auslieferung
[alle Positionen geprüft &&
einige Positionen nicht am Lager]
Position erhalten
[alle Positionen verfügbar]
Position erhalten
[einige Positionen nicht am Lager]
ausgeliefert
wartend
abgebrochen
abgebrochen
ausgeliefert
- 434
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Nebenläufige Zustandsdiagramme
Parallel zur Auftragsbearbeitung gibt es Zustände, die von der
Zahlungsautorisierung abhängen:
H
in Autorisierung
do/prüfe Zahlung
[Zahlung nicht OK]
[Zahlung OK]
autorisiert
abgelehnt
ausgeliefert
- 435
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Nebenläufige Zustandsdiagramme
Die Zustände der beiden Diagramme können in einem nebenläufigen
Zustandsdiagramm (concurrent state diagram) kombiniert werden:
abgebrochen
abgebrochen
wartend
H
in Prüfung
freigegeben
H
ausgeliefert
H
H
in Autorisierung
autorisiert
H
abgelehnt
• Details der internen Zuständ wurden hier weggelassen.
• Ein Auftrag kann sich zu jeder Zeit gleichzeitig in zwei
verschiedenen Zuständen befinden, jeweils einer aus jedem Bereich.
• Verläßt der Auftrag die nebenläufigen Zustände, dann befindet er
sich nur noch in einem einzelnen Zustand.
- 436
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.6
Überblick und Wiederholung UML
Zustandsdiagramme
Einsatz von Zustandsdiagrammen
• Verhalten eines Objektes über mehrere Anwendungsfälle hinweg.
- Nicht sehr gut bei Beschreibung der Wechselwirkung mehrerer
Objekte untereinander.
- Dazu sind besser Interaktionsdiagramme, aber auch Aktivitätsdiagramme geeignet.
• Oft werden in Standardsituationen Zustandsdiagramme nicht als
sehr nützlich angesehen.
• Anders ist es bei Realzeitanwendungen, wenn Objekte sehr
komplexe Zustände und Zustandsänderungen haben können.
- Z.B. wenn dieselbe Botschaft (d.h. derselbe Methodenaufruf) vom
Zustand des Objektes abhängige unterschiedlichen Reaktionen
hervorruft.
- 437
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Aktivitätsdiagramme
• Ein am wenigsten erwartetes Bestandteil der UML. Keine Wurzel in
den vorigen Arbeiten der Amigos.
• Das Aktivitätsdiagramm (activity diagram) kombiniert Ideen aus
mehreren Techniken:
- Ereignisdiagramme (event diagrams) von Jim Odell,
- Zustandsbasierte Modellierungstechnik SDL,
- Petri-Netze.
• Verwand mit (altmodischen) Flußdiagrammen.
• Nützlich auch für die Beschreibung von Geschäftsprozessen.
• Kann benutzt werden, um den Kontrollfluß in einer Methode zu
beschreiben, aber auch das dynamische Verhalten mehrerer
Objekte.
- 438
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Aktivitätsdiagramme
• Zentrales Symbol ist die Aktivität (activity). Bedeutung abhängig von
Entwicklungsphase:
- Analyse:Aktivität von Mensch oder Maschine.
- Design/Implementierung: Methode einer Klasse.
• Eine Aktivität kann von einer anderen Aktivität gefolgt werden (wie
Flußdiagramm).
[kein Kaffee]
Bestimme
Getränk
H
[keine Cola]
[Kaffee gefunden]
[Cola gefunden]
Kaffeepulver in
Filter füllen
Behälter mit
Wasser füllen
Cola-Büchsen
holen
Tasse holen
Filter in Machine
einsetzen
Maschine
anschalten
Kaffee filtern
Kontroll-Lampe geht aus
Kaffee
einschenken
Getränk trinken
- 439
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
H
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Aktivitätsdiagramme
• Unterschiede zu Flußdiagrammen:
- Es können mehrer Aktivitäten folgen, d.h. mehrere Trigger gehen
von einer Aktivität aus.
- Unterschieden durch Bedingungen (guard). Logischer Ausdruck
(wie in Zustandsdiagrammen).
- Aus einem Synchronisationsbalken (synchronization bar) können
mehrere Trigger herausführen (ohne Bedingungen).
- Die darauf folgenden Aktivitäten können parallel stattfinden.
- Kann nebenläufig oder verschränkt (interleaving) sein.
- Aktivitätsdiagramme sind zur Beschreibung nebenläufiger Prozesse gut geeignet. Modellierung von Geschäftsprozessen.
- Parallele Aktivitäten müssen bei der Zusammenführung wieder
synchronisiert werden.
- Alle Trigger müssen eingetreten sein, damit die dem Synchronisationsbalken folgende Aktivität angestoßen wird (UNDBedingung).
- Wenn mehrer Trigger in eine Aktivität münden („Getränk trinken“), entspricht das einer ODER-Bedingung.
- 440
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Aktivitätsdiagramme bei Anwendungsfällen
• Aktivitätsdiagramme sind zur Beschreibung komplizierter Methoden
gut geeignet.
• Sie können aber auch dazu eingesetzt werden, Anwemdungsfälle zu
beschreiben.
• Beispiel: Anwendungsfall Auftragseingang:
Bei Eintreffen eines Auftrags prüfen wir für jeden dort aufgeführten Artikel
dessen Verfügbarkeit im Lager.
Sind sie verfügbar, weisen wir diese diesem Auftrag zu.
Führt dies zu einer Lagermenge unter der Nachbestellmenge für diesen Artikel,
bestellen wir den Artikel nach.
Zeitgleich prüfen wir, ob die Zahlung (z.B. Kreditkartenzahlung) autorisiert
wird. Ist dieses OK und haben wir die Artikel im Lager, wird der Auftrag zur
Auslieferung freigegeben. Ist die Zahlung OK, Artikel aber nicht auf Lager,
lassen wir den Auftrag bei den offenen Aufträgen warten.
Ist die Zahlung nicht OK, weisen wir diesen Auftrag zurück.
Auftrag
annehmen
H
*[für jede Auftragsposition]
Auftrag
abweisen
[erfolglos]
Zahlung
autorisieren
Artikel dieser
Position prüfen
[erfolgreich]
[auf Lager]
dem Auftrag
zuweisen
[allen Auftragspositionen
Ware zugewiesen und
Zahlung autorisiert]
[Nachbestellung
nötig]
Auftrag
freigeben
Artikel
nachbestellen
- 441
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Aktivitätsdiagramme bei Anwendungsfällen
• Neues syntaktisches Element:
- Mehrfachtrigger (multiple trigger): * als Kardinalitätskennzeichen
(multiplicity marker).
• Jede dieser Aktivitäten kann parallel zu den anderen ablaufen!
• Alle parallelen Aktivitäten müsen wieder an einem
Synchronisationsbalken zusammenlaufen.
• Ein Synchronisationsbalken kann ebenfalls eine Bedingung haben.
- Diese wird bei jedem Eintreffen eines Triggers geprüft.
- Ein ausgehender Trigger findet nur statt, wenn die Bedingung
erfüllt ist.
• Ein Aktivitätsdiagramm muß nicht unbedingt ein definiertes Ende
haben.
- In dem Fall können auch einige „Ungereimtheiten“ verbleiben:
- Sackgassen wie „Artikel nachbestellen“.
- Oder eine Aktivität besitzt nur einen bedingungsbehafteten ausgehenden Trigger.
- Was passiert, wenn Bedingung nicht erfüllt ist? Nichts: Der
Thread stoppt an dieser Stelle.
- 442
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Anwendungsfall Wareneingang
Trifft Ware ein, betrachten wir die noch offenen Aufträge und entscheiden,
welche mit dieser Lieferung erfüllt werden können. Dann weisen wir die Waren
den einzelnen Aufträgen zu. Dies kann bei diesen zur Auslieferungsfreigabe
führen. Die verbleibenden Waren kommen ins Lager.
H
Ware annehmen
Offene Auftragspositionen
auswählen
*[für jede ausgewählte Auftragsposition]
Ware dem
Auftrag
zuweisen
[allen Auftragspositionen
Ware zugewiesen und
Zahlung autorisiert]
[alle offenen Auftragspositionen abgedeckt]
Rest zum
Lagerbestand
hinzufügen
Auftrag
freigeben
• Beide Anwendungsfälle sind miteinander gekoppelt.
- 443
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Gekoppelte Anwendungsfälle
• In einem kombinierten Diagramm kann man die beiden
Aktivitätsdiagramme überlagern.
- Man sieht, wie Aktionen in einem Anwendungsfall Aktionen eines
anderen Anwendungsfalles beeinflussen.
- Ein solches Aktivitätsdiagramm besitzt mehrer Startpunkte.
H
Auftrag
annehmen
H
Ware annehmen
*[für jede Auftragsposition]
Offene Auftragspositionen
auswählen
[erfolglos]
Auftrag
abweisen
Zahlung
autorisieren
Artikel dieser
Position prüfen
*[für jede ausgewählte
Auftragsposition]
[erfolgreich]
[auf Lager]
Ware dem
Auftrag
zuweisen
dem Auftrag
zuweisen
[Nachbestellung
nötig]
Artikel
nachbestellen
[allen Auftragspositionen
Ware zugewiesen und
Zahlung autorisiert]
[alle offenen Auftragspositionen abgedeckt]
Rest zum
Lagerbestand
hinzufügen
Auftrag
freigeben
- 444
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Verantwortlichkeitsgrenzen
• Aktivitätsdiagramme beschreiben nur was passiert (funktionale
Zerlegung), nicht wer dafür verantwortlich ist (es zu tun).
• Dazu dient die Einführung von Verantwortlichkeitsgrenzen (im
Original: swimlanes).
- Jeder Bereich repräsentiert die Verantwortlichkeit einer Klasse
oder – bei reinen Geschäftsprozessen – einer bestimmten Abteilung.
H
Rechnungswesen
H
Auftragsbearbeitung
Auftrag
annehmen
Ware annehmen
*[für jede Auftragsposition]
Offene Auftragspositionen
auswählen
Zahlung
autorisieren
[erfolgreich]
[erfolglos]
Artikel dieser
Position prüfen
Auftrag
abweisen
*[für jede ausgewählte
Auftragsposition]
[auf Lager]
dem Auftrag
zuweisen
Lagerverwalter
Ware dem
Auftrag
zuweisen
[Nachbestellung
nötig]
Artikel
nachbestellen
[allen Auftragspositionen
Ware zugewiesen und
Zahlung autorisiert]
[alle offenen Auftragspositionen abgedeckt]
Rest zum
Lagerbestand
hinzufügen
Auftrag
freigeben
- 445
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999
15.
15.7
Überblick und Wiederholung UML
Aktivitätsdiagramme
Einsatz von Aktivitätsdiagrammen
• Wie alle Techniken zur Verhaltensmodellierung haben auch
Aktivitätsdiagramme konkrete Stärken und schwächen.
- Man verwendet Sie am besten in Kombination mit anderen Techniken.
• Stärke:
- Modellierung von nebenläufigen Verhalten.
- Daher auch gut zum Modellieren von Geschäftsabläufen geeignet.
• Nachteil:
- Keine Verbindung zwischen Aktivitäten und Klassen.
• Man kann Aktivitäten mit dem zuständigen Objektnamen
beschriften oder swimlanes benutzen.
• Interaktionsdiagramme sind hierbei objektorientierter.
- 446
© Prof. Dr. B. Dreher, FB Informatik
FH Wiesbaden – University of Applied Sciences
-
Spez. Methoden der Softwaretechnik: Software-Komponenten, SS 1999