Post on 01-Oct-2018
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Einführung in die Unified Modeling
Language
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
WS 2008/09
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 2
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML (1)The Unified Modeling Language is a visual languagefor specifying, constructing, and documenting theartifacts of systems. It is a general-purpose modelinglanguage [...] that can be applied to all applicationdomains (e.g., health, finance, telecom, aerospace) and implementation platforms [www.uml.org].Die Unified Modeling Language (UML) ist eine von der Object Management Group (OMG) entwickelte und standardisierte Sprache für die Modellierung von Software und anderen Systemen [de.wikipedia.org].Aktuelle Version: 2.1
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 3
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML (2)Wurde entscheidend durch Grady Booch, Ivar Jacobson und James Rumbaugh geprägt. Hat die vor 1996 existierenden verschiedenen Modellierungsmethoden (der genannten drei, sowie anderer) abgelöstWird zur Prozessmodellierung, Analyse, Spezifikation und zum Systementwurf verwendetEs sind sehr viele gute Werkzeuge zur UML auf dem MarktBietet sehr konkreten Übergang zur Implementierung. Code-Generierung ist aus den Modellen heraus in vielen Teilen möglichIn Zukunft: MDA, MDD und Executable UML?
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 4
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Die drei „Amigos“Ivar Jacobson
GradyBooch
James Rumbaugh
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 5
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Geschichte der UML
Quelle: Mario Jeckle, 2003
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 6
©20
04-2
009,
Rai
ner S
chm
idbe
rger
„Entstehung“ der UML
Quelle: www.ibm.com
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Kurzübersicht über die UML-Diagramme
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 8
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Diagramm Übersicht
UML Diagramme
Struktur-diagramme
Verhaltens-diagramme
Interaktions-diagramme
Klassend. Objektd. Komponentend.
Kompositions-strukturd.
Verteilungsd. Paketd.
Use Case-D. Aktivitätsd. Zustandsd.
Sequenzd. Kommunikationsd.
Zeitdiagramm Interaktions-übersichtsd.
Neu in UML 2.0
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 9
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Diagramm Übersicht (engl.)
Quelle: www.uml.org, 2006
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 10
©20
04-2
009,
Rai
ner S
chm
idbe
rger
StrukturdiagrammeKlassendiagramm (class diagram)
Modellierung der Klassen mit Methoden, Attributen und Beziehungen
Paketdiagramm (paket diagram)Modellierung der logische Struktur der Modellelemente mit deren (z.T. abstrakten) Abhängigkeiten
Objektdiagramm (object diagram)Modellierung von „Momentaufnahmen“ konkreter Objekte mit Werten und Beziehungsausprägungen
Kompositionsstrukturdiagramm (composite structurediagram)
Modellierung der internen Struktur eines Modell-elements (Classifiers) sowie dessen Möglichkeiten zu Interaktion mit anderen Systemkomponenten
Komponentendiagramm (component diagram)Modellierung der Komponenten (=Module) und deren Abhängigkeiten
Verteilungsdiagramm (deployment diagram)Zeigt die (physischen) Geräte des Systems im Betrieb
Quelle: Mario Jeckle, 2003
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 11
©20
04-2
009,
Rai
ner S
chm
idbe
rger
VerhaltensdiagrammeUse-Case Diagramm (use case diagram)
Modellierung der Anwendungsfunktionalität aus der Sicht der Anwender
Aktivitätsdiagramm (activity diagram)Modellierung des dynamischen Ablaufs (i.d.R. eines Use Case)
Zustandsdiagramm (state transition diagram)Modelliert die Zustände und Zustandswechsel (i.d.R. zu einer Klasse)
Sequenzdiagramm (sequence diagram)Modelliert ein Szenario: den Botschaftsfluss zwischen Objekten
Kommunikationsdiagramm (comunicationdiagram)
Dynamik wie Sequenzdiagramm; zusätzlich Objekteigenschaften
Timing-Diagramm Präziser zeitlicher Verlauf
InteraktionsübersichtsdiagrammModellierung des Zusammenspiels einzelner Interaktionsdiagramme
Quelle: Mario Jeckle, 2003
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 12
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Diagramm Übersicht
UML Diagramme
Struktur-Diagramme
Verhaltens-Diagramme
Interaktions-Diagramme
Klassen-D. Objekt- D. Komponenten-D.
Kompositions-struktur-D.
Verteilungs-D. Paket-D.
Use Case-D. Aktivitäts-D. Zustands-D.
Sequenz- D. Kommunikations- D.
Zeit-D. Interaktions-Übersichts-D.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 13
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Personname : Stringvorname : String
belasten(betrag : Waehrungsbetrag)
KreditkartebetreibernrkontrollNrAblaufdatum
istGueltig()belasten(betrag : waehrungsbetrag)
0..*
1
0..*
1 +karteninhaber
Bestellvorgang
start()
Fahrkartestartpunktzielpunktwegstreckerabatt
bestellen()stornieren()
10..* 1
+fahrgast
0..*
KlassendiagrammModellierung der Klassen mit Methoden, Attributen und BeziehungenÄhnlich dem ER-Diagramm
Attribute
Beziehung
Rolle
Multiplizität
Sicht-barkeit
Methoden
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 14
©20
04-2
009,
Rai
ner S
chm
idbe
rger
PaketdiagrammPakete dienen als „Container“ für beliebige UML ModellelementeDas Paketdiagramm zeigt (abstrakte) Beziehungen zwischen einzelnen Paketen
GUI Klassen Businesslogic Klassen
Datenbankzugriffe
Ein Paket kann selber wieder Pakete oder andere Modellelemente wie z.B. Klassen enthalten
BerechnungslogikRechnung
Modellsicht:
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 15
©20
04-2
009,
Rai
ner S
chm
idbe
rger
ObjektdiagrammZeigt eine Momentaufnahme des SystemsDem Klassendiagramm sehr ähnlich: statt der (abstrakten) Klassen werden (konkrete) Objekte dargestelltObjektname ist in der Regel eine Rolle, in der ein Objekt agiertAttributwerte können auch angezeigt werden
Objektname : Klassenname
fluggast: Person
: Kreditkarte
name : String = „Duck“vorname : String = „Donald“
betreiber : String = „Visa“Nr : String = „1234567“
bezahltMit
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 16
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Kompositions-Struktur-DiagrammAb UML 2.0, Composite Structure„Kontext“-bezogenes Klassen-, Objekt oder KomponentendiagrammZeigt eine „Ausprägung“ oder eine bestimmte Konfiguration
fahrgast : Person
: Kreditkarte
Abrechnung Kollaborationstyp
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 17
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Komponenten DiagrammModelliert die Software-Architektur mit Bibliotheken, Komponenten, Datenbanken, usw.
Abhängigkeiten
Komponente
<<Component>>
GUISteuerung
<<Component>>
Verbindungsrechner
<<Component>>
Fahrplandatenbank
Anschlüsse
<<Component>>
BenutzerGUI
Verbindungen
Konnektor
InterfacePort
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 18
©20
04-2
009,
Rai
ner S
chm
idbe
rger
VerteilungsdiagrammDeployment diagramModelliert die Abbildung auf das physische Ziel-System (die Geräte) wie Server, Clients, externe Geräte, usw.Beschreibende Artefakte können ebenso mit aufgenommen werden
Application-ServerBrowser<<HTTP>>
Datenbank<<JDBC>>
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 19
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Diagramm Übersicht
UML Diagramme
Struktur-Diagramme
Verhaltens-Diagramme
Interaktions-Diagramme
Klassen-D. Objekt- D. Komponenten-D.
Kompositions-struktur-D.
Verteilungs-D. Paket-D.
Use Case-D. Aktivitäts-D. Zustands-D.
Sequenz- D. Kommunikations- D.
Zeit-D. Interaktions-Übersichts-D.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 20
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Verbindungen abfragen
Fahrgast
Fahrkarten bestellen
Use CaseModellierung der Anwendungsfunktionalität aus der Sicht der AnwenderGeschäftsprozesseSehr einfache Diagramme
Akteur: Nutzer des Systems Use Case
Beziehung: der Akteur benutzt einen Use Case
System
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 21
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Verbindungsstart eingeben
Verbindungsziel eingeben
Eingaben sind gültig
Weg berechnen Mind. eine Verbindung
wurde gefunden
Fehlerseite Verbindungen anzeigen
neinja
AktivitätsdiagrammBeschreibt den Ablauf eines Use CaseIst auch für parallele Abläufe geeignet
Aktivität
Entscheidung
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 22
©20
04-2
009,
Rai
ner S
chm
idbe
rger
ungültig
gültig
erfolgreiche Belastung eines Fahrgastkontos
storno
ZustandsdiagrammModelliert die Zustände und Zustandsübergänge einer Klasse oder einer KomponenteDen Zustandsübergängen können Ereignisse und Aktionen zugeordnet werden
ZustandEnde
Beginn
Transition
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 23
©20
04-2
009,
Rai
ner S
chm
idbe
rger
SequenzdiagrammBotschaftsfluss zwischen Objekten
: Fahrkarte kunde: Person : Kreditkarte
bestellen()berechnePreis()
belasten(betrag)istGueltig()
belasten(betrag)
Fahrkarte bestellen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 24
©20
04-2
009,
Rai
ner S
chm
idbe
rger
: Fahrgast : Bestellvorgang
: Fahrkarte
: Person
: Kreditkarte
1: start( ) 2: bestellen( )
3: berechnePreis( )
4: belasten(Waehrungsbetrag)
5: istGueltig( )6: belasten(waehrungsbetrag)
KommunikationsdiagrammÄhnlicher Inhalt wie beim SequenzdiagrammBei vielen Objekten mit wenig Botschaftsfluss geeignet
Botschaft
Beteiligtes Objekt
Reihenfolge
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 25
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Timing diagramAb UML 2.0Zeigt das Verhalten von Objekten mit genauer Zeitachse.Speziell für Hardware dominierte oder RealtimeSoftware.
Quelle: www.oose.de, www.sparxsystems.com.au
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 26
©20
04-2
009,
Rai
ner S
chm
idbe
rger
InteraktionsübersichtAb UML 2.0Zeigt den Zusammenhang zwischen einzelnen Interaktionsdiagrammen aufElemente wie im Aktivitätendiagramm
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 27
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML – Diagramm LayoutHeader
Syntax:• [<DiagrammTyp>]<DiagrammName>[<Parameter>]
DiagrammTyp (Kürzel) - optional• cd, sd, uc, ...
DiagrammNameParameter – optional
• wird nur selten benutzt
InhaltGraphisches Diagramm des angegebenen Typs
AnmerkungDie Diagramm-Darstellung wird letztendlich vom Werkzeug festgelegt
Header
Inhalt
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 28
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Werkzeuge: Rational Rosewww.ibm.com/software/rational
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 29
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Werkzeuge: Argo UMLwww.argouml.org
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 30
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Werkzeuge: Rational XDEwww.ibm.com/software/rational
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 31
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Werkzeuge: Enterprise Architecthttp://www.sparxsystems.com/
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 32
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Werkzeuge: Borland Togetherwww.borland.com/de/products/together/index.html
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 33
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Werkzeuge: Visual Paradigmhttp://www.visual-paradigm.com/
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 34
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML im ProjektverlaufEn
gine
erin
gM
anag
e-m
ent
Quelle: Rational Software
Klassendiagramm(Domänenmodell)
Aktivitätend.Klassendiagramm
(techn. Modell)
Sequenzd.
Komponentend. Zustandsd.
Verteilungsd.
Use Case D.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 35
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML LiteraturRumbaugh, James; Jacobson, Ivar; Booch, Grady : „Theunified modeling language reference manual“, Second Edition, Addison-Wesley, 2004
Jeckle, Mario; et al. : „UML2 glasklar“, Hanser Verlag, 2004
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 36
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML LiteraturMartin Fowler: „UML Distilled. A Brief Guide to the Standard Object Modeling Languange“, Addison-Wesley, 2003
Kendall Scott : „UML Explained “, Addison-Wesley, 2001
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 37
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Spezifikation (1)Erhältlich über www.uml.orgGliedert sich in zwei Dokumente:
Infrastucture (http://www.omg.org/docs/formal/05-07-05.pdf)Definition der grundlegenden Sprachelemente.Superstructure (http://www.omg.org/docs/formal/05-07-04.pdf)Definition der Diagrammtypen
Überwiegend in UML Klassendiagrammen und OCL (ObjectConstraint Language) spezifiziert.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 38
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Superstructure: Class
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 39
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Spezifikation: Classifier
Class(from Kernel)
DataType(from Kernel)
Enumeration(from Kernel)
Classifier(from Dependencies)
Signal(from Communications)
AssociationClass(from AssociationClasses)
Class(from Communications)
Collaboration(from Collaborations)
Behavior(from BasicBehaviors)
Classifier(from Collaborations)
PrimitiveType(from Kernel)
Classifier(from PowerTypes)
Artifact(from Artifacts)
Actor(from UseCases)
Classifier(from Kernel)
InformationItem(from InformationFlows)
EncapsulatedClassifier(from Ports)
Node(from Nodes)
Device(from Nodes)
Class(from StructuredClasses)
ExecutionEnvironment(from Nodes)
CommunicationPath(from Nodes)
Interaction(from BasicInteractions)
StateMachine(from BehaviorStateMachines)
BehavioredClassifier(from BasicBehaviors)
ProtocolStateMachine(from ProtocolStateMachines)
Classifier(from Templates)
BehavioredClassifier(from Interfaces)
Interface(from Communications)
Interface(from Interfaces)
Component(from BasicComponents)
Component(from PackagingComponents)
Classifier(from UseCases)
UseCase(from UseCases)
Association(from Kernel)
StructuredClassifier(from InternalStructures)
Activity(from BasicActivities)
Activity(from FundamentalActivities)
Activity(from CompleteActivities)
Behavior(from CompleteActivities)
Activity(from StructuredActivities)
OpaqueBehavior(from BasicBehaviors)
Class and its increments
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 40
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML SpracharchitekturMeta-MetamodellDefiniert als UML Infrastructure
M3Class
MetamodellDefiniert als UML Superstructure
M2Attribute Class Association
ModellDomänenmodell in UML
M1Person Firma
BezeichnungNameVornameGehalt
<<instanceof> <<instanceof> <<instanceof>
<<instanceof> <<instanceof>
Objekte der Applikation
M0
Meta Object Facility, MOF
<<instanceof> <<instanceof> <<instanceof>
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 41
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Anmerkungen zur UMLIn der Praxis werden die verschiedenen Diagramme unterschiedlich stark eingesetztWerkzeuge spielen eine wichtige RolleNicht alle Werkzeuge unterstützen die UML 2.0 Praktisch niemand kennt und nutzt die UML vollständig
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use Cases
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 43
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Nutzen von Use Cases
Quelle: Alan Chapman
Formalisierung und Beschreibung der funktionalen Anforderungen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 44
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Definition"A use case is a piece of functionality in the system that gives a user a result of value"
"All the use cases together make up the use casemodel, which describes the complete functionality of the system"
"A use case specifies a sequence of actions, including variants, that the system can perform and that yields an observable result of value to a particular actor"
Aus "The Unified Software Development Process", Ivar Jacobson u.a., Addison-Wesley, 1999
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 45
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use Case (1)Ein Use Case
beschreibt mehrere zusammenhängendende Aktivitäten, die von einem oder mehreren Akteuren durchgeführt (genutzt) werden, um ein Ziel zu erreichen bzw. ein gewünschtes Ergebnis zu erstellen
Verbindungen abfragen
Fahrgast
Fahrkarten bestellen
Akteur: Nutzer des Systems Use Case
Beziehung: der Akteur benutzt einen Use Case
System
Fahrscheinsystem
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 46
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use Case (2)
Use Cases beschreiben aus Anwendersicht den SystemnutzenEinfaches Kommunikationsmedium mit "Stakeholdern" (Anwendern, Kunden, Management, ...)Die Gesamtmenge der Use Cases beschreibt das System, das an der Systemschnittstelle beobachtetwerden kann.Abgrenzung zur Aktivität: ein Use Case umfasst viele Aktivitäten
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 47
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use Case (3)
Bezeichnung durch Substantiv + Verb (Infinitiv) z.B. Einstellung durchführenPrämie berechnen, usw.
(Geschäfts-)Prozesse können als Use Case modelliert werdenSystemgrenzen werden festgelegtSystemnutzer (=Akteure) werden festgelegtEinsatzmöglichkeiten: Ist-Analyse, Soll-Analyse und SpezifikationAchtung: ein Use Case ist kein Softwaremodul!Strukturierung der funktionalen Anforderungen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 48
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use-Case-Diagramm
dient der Visualisierung und als Übersicht über die vorhandenen Use Cases und Akteureenthält die Beziehungen zwischen Akteuren und UseCasesTipp: mehrere Use-Case-Diagramme erstellen!
Jedes Use-Case-Diagramm sollte einen wichtigen Aspekt des Systems wiederspiegeln!
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 49
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Akteure
Akteure sindRollen (Personen oder Systeme, z.B. Benutzer, Rechner, externe Datenbanken, auch Ereignisse oder Termine)
Akteure werden im Begriffslexikon beschriebenAkteure werden im Use-Case-Diagramm eingezeichnetAkteure werden im Diagramm durch Assoziationen mit den Use Casesverbunden, an denen sie beteiligt sind
selbst nicht Teil des zu beschreibenden Systems,direkt mit einem oder mehreren Use Cases verbunden und kommunizieren mit diesemin der Regel aktiv, das heißt sie können Vorgänge anstoßenAchtung: es werden nur die Akteure mit einem Use Caseverbunden, die an der Interaktion mit dem System selbst teilnehmen!
MA Verwaltung
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 50
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Include-Beziehung
Use Case A fügt Use Case B an einer gekennzeichneten Stelle einUse Case B kennt Use Case A nichtMehrfach vorkommende Use-Case-Abschnittewerden nur einmal beschriebenTipp: man sollte diese Dekomposition nicht übertreiben! Jeder Use Case soll erkennbaren Nutzen behalten.
Use Case A
Use Case B
<<include>>
Use Case A fügt an einer bestimmten Stelle Use Case B ein
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 51
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Extend und GeneralisierungEs gibt weitere Beziehungen, die vorsichtig verwendet
werden sollten:
extend-Beziehung: B erweitert A an einer dort festgelegten StelleGeneralisierungsbeziehung: B ist eine spezielle Ausprägung von ABeispiele:
Fremdwährung abheben
Geld abheben
<<extend>>
Auslandsstudent Immatrikulieren
Student Immatrukulieren
<<extend>>
BA
<<extend>>
Benutzer validieren
Kennwort prüfen Biometriemerkmale prüfen
Achtung: die Semantik beider Beziehungen ist nicht scharf spezifiziert!
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 52
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Beispiel: Bankomat
Bankkunde
Geld abheben
Kontostand abfragen
Legitimierung prüfen<<include>>
<<include>>
Fremdwährung abheben
<<extend>>
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 53
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Beispiel: Seminarbuchungssystem
Eigene Bildungshistorie anzeigen
Registrierung via Group Directory, HR-Online
Produkt suchen
Produktdaten anzeigen
Katalogfunktionen
Surfer
Mitarbeiter
Selbst-Buchung
Termin buchen Auf anderen Termin UmbuchenBuchung stornieren
Ersatzteilnehmer buchenMitarbeiter buchen
Reports zu MA-Buchungen anzeigen
Vorgesetzter
Kann soviel wie...
Kann soviel wie...
Sowohl das Produkt, als auch der MA muss hierfür freigegeben sein
<<include>>
<<include>>
uc: Seminarbuchungss.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 54
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use-Case-Beschreibung (1)Beschreibung erfolgt
in verständlicher Sprachemit konkretem Nutzen für den initiierenden Akteurpräzise und eindeutigmit überprüfbaren Ergebnissenmit definierten Begriffen (Begriffslexikon)semi-formal (strukturiert)einheitlich
Use Case Dokumentation
Name: Seminar buchenAkteure: Kunde
Vorbedingung:Seminar ist freigegeben und hat noch ausreichend Plätze frei
Regulärer Ablauf:Der Kunde selektiert ein Seminar und ...
Nachbedingung:Der Kunde ist auf das entsprechende Seminar gebucht
Alternative Abläufe:- das Seminar ist ausgebucht- der Kunde hat keine Buchungsberechtigung
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 55
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use-Case-Beschreibung (2)Name des Use CaseBeteiligte AkteureVorbedingung
Voraussetzungen vor der Ausführung des Use CaseRegulärer Ablauf
Beschreibung einzelner Aktionen innerhalb des Use Case in Form verbaler Szenarien (Einzelaktivitäten)Evtl. Diagramme und EntscheidungstabellenBegriffe sorgfältig verwenden (Begriffslexikon)
NachbedingungZusicherungen, die nach Use-Case-Ende eintreffen müssen
Alternative AbläufeFehlerfälleSonderfälle
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 56
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Use Case Beschreibung (3)Name des Use Case
Personalausweis beantragenVorbedingung
Antragsteller hat sich legitimiert und entsprechende Aktion angstoßen. Es handelt sich nicht um einen Erstantrag
Regulärer AblaufBerechtigungen des Antragstellers werden geprüft (Siehe Verordnung XY)Zuständiges Amt wird über die Wohnsitzangaben ermittelt. Für Wohnsitzlose gilt Sonderregelung 4711.Gebührenrechnung wird erstellt. Abwicklung abhängig vom Antragsteller über Kreditkarte oder Bankeinzug Zusammenstellen des Antragpakets und weiterleiten an Stelle 0815
NachbedingungDer Antragsteller hat jetzt den Status "beantragt", weitere Anträge können solange nicht entgegengenommen werden
Alternative AbläufeErstanträge werden über use Case ABC behandelt
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 57
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Verbindungsstart eingeben
Verbindungsziel eingeben
Eingaben sind gültig
Weg berechnen Mind. eine Verbindung
wurde gefunden
Fehlerseite Verbindungen anzeigen
neinja
Beschreibung durch AktivitätsdiagrammBeschreibt (grafisch) den Ablauf eines Use Case
Aktivität
Entscheidung
Verbindungen abfragen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 58
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Beschreibung durch Sequenzdiagramm
: Fahrgast : Bestellsystem
: Reservierungssystem
: Abrechnungssystem
1: buchung( )
2: reservieren( ) 3: berechnen( )
Beschreibt (grafisch) die beteiligten Instanzen und den zeitlichen Ablauf eines Use Case
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 59
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Vor- und NachteileVorteile
Einfache Darstellung, leicht verständlichUse Cases sind innerhalb der UML klar beschriebenEs sind (sehr gute) Werkzeuge verfügbarErweiterungsmöglichkeit um Aktivitätsdiagramme und SequenzdiagrammeGreifen den verbreiteten Prozess-Gedanken auf
NachteileBeschreibung ist nicht formalisiertKonsistenzen sind automatisch nicht prüfbarÜbergang zur Modellierung der fachlichen Klassen ist brüchig
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 60
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Business Use CaseBusiness Use Case
Beschreibung der Fachlichkeit ohne Berücksichtigung, welche Teile des Prozesses mit IT-gestützt ablaufen und welche nichtUnterscheidung „manuell“ oder „IT-gestützt“ über den <<stereotyp>>
Use CaseEingrenzung auf die IT-gestützten Prozesse
Bei e-Commerce-Systemen entsprechen die Business Use Cases den Use Cases
Seminar durchführen
Namenskärtchen verteilen
<<include>>
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Klassen-Diagramme
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 62
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Klassen (1)Die Darstellung von Klassen erfolgt als Rechteck mit den Bereichen
KlassennameAttributlisteMethodenliste
Person
Attribute
Methoden
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 63
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Klassen (2)Klassenname mit stereotype AngabeAttribute mit Datentypen und Sichtbarkeiten und VorbelegungenMethoden mit Signaturen und SichtbarkeitenSichtbarkeiten:
public (+)protected (#)private (-)
Die Datentypen sind von der verwendeten Programmiersprache abhängig!
<<entity>>Person
-name : String-vorname : String-gehalt:GeldBetrag
+setGehalt(g:GeldBetrag)+getGehalt() : GeldBetrag+updateGehalt()
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 64
©20
04-2
009,
Rai
ner S
chm
idbe
rger
AttributeBerechnetes Attribut (Derived). Berechnungsformel ist nicht Teil des UML-ModellsKlassenattribut: Attribut steht allen Objekten der Klasse Person nur einmal zur Verfügung
Person
-name-vorname#gehaltsgruppe : int = 0+/gehaltanzahlPersonen : int
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 65
©20
04-2
009,
Rai
ner S
chm
idbe
rger
MethodenSignaturen werden oft nicht angegebenPrivate Methoden werden oft nicht angegebenKlassenmethode (Aufruf über Klassenbezeichner, unterstrichen)Abstrakte Methode (wird kursiv gedruckt), erzwingt Implementierung in den Kindklassen
Person
+setGehalt(g:GeldBetrag)+getGehalt() : GeldBetrag+getAnzahlPersonen() : int+updateGehalt()
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 66
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Assoziationen"Beziehungen", "Verbindungen" oder "Navigationspfade" zwischen Klassen werden als Assoziation bezeichnetVerbindungen zwischen Objekten werden als Link bezeichnetIn der UML werden Assoziationen sehr differenziert beschriebenAssoziationen sind logische Beziehungen, sie müssen nicht notwendigerweise durch ein Programmkonstrukt direkt im Code implementiert sein
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 67
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Assoziationen
Person Firma0..1
0..*
Arbeitnehmer
Arbeitgeber
Firma in der Rolle als "Arbeitgeber"
Person in der Rolle als "Arbeitnehmer"
Multipizität, Person ist 1 oder kein Firma-Objekt zugeordnet
Multipizität, Firma sind kein, 1 oder viele Personen-Objekte zugeordnet
arbeitet für
Name der Beziehung, wird von links nach rechts gelesen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 68
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Navigierbarkeit
Person Firma0..1
Arbeitgeberarbeitet für
Die Pfeilrichtung zeigt die Navigierbarkeitsrichtung an. Beidseitig navigierbare Assoziationen haben aber keine Pfeile.Nichtspezifizierte Navigierbarkeit hat ebenso keine Pfeile
Objekte der Klasse Person "kennen" ihren Arbeitgeber, Objekte der Klasse Firma "kennen" aber ihre Mitarbeiter nicht.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 69
©20
04-2
009,
Rai
ner S
chm
idbe
rger
MultiplizitätDie Multiplizität zeigt an, wie viele Objekte der jeweiligen Klasse an der Assoziation teilnehmen
Typische Multiplizität: 0..1, 1, 0..*, 1..*Es können auch spezielle Multiplizitäten verwendet werden wie z.B. 5, 29 oder 5..290
Person Firma0..1
0..*
Arbeitnehmer
Arbeitgeberarbeitet für
Auto Rad4
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 70
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Aggregation und KompositionGanzes-Teil-AssoziationAggregierte Objekte werden von dem besitzenden Objekt dominiertI.Allg. ist kein externer Zugriff auf aggregierte Objekte möglichKomposition: Die Lebensdauer (Instanzierung und Freigabe) werden vom dominierenden Objekt beherrscht
Person Adresse0..*
1
Person StudentRolle0..*
1
Aggregation
Komposition
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 71
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Assoziationsklassen (1)Assoziationen selbst können über Attribute (und auch Methoden) verfügenDie Assoziationsklasse repräsentiert die AssoziationInsbesondere bei n:m-Assoziationen werden häufig Assoziationsklassen verwendet
Student Prüfung0..*
0..*
schreibt
PrüfungsTeilnahmehatTeilgenommen : booleannote : NoteAuffälligkeit : String
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 72
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Assoziationsklassen (2)Eine n:m Assoziation mit Assoziationsklasse (A) ist semantisch mit einer 1:n und m:1-Assoziation (B) gleichzusetzen
Student Prüfung0..*
0..*
schreibt
PrüfungsTeilnahme
Student PrüfungsTeilnahme Prüfung0..* 0..*
1 1
A
B
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 73
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Umgang mit AssoziationenBestehen mehrere Assoziationen zwischen zwei Klassen, so werden oft rollenbeschreibende Assoziationsklassen eingeführt
Person Firma0..*
0..*
arbeitet fürArbeitnehmer
Arbeitgeber
0..*0..*
investiert inAktionär
Kapitalanlage
0..*0..*
bezieht Produkte vonKunde
Lieferant
Person Firma0..*
0..*
PersonRollerolle
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 74
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Rekursive AssoziationenAssoziationen können zur selben Klasse verbunden seinDamit ist nicht gemeint, dass ein Objekt mit sich selbst in Beziehung steht, sondern zu Objekten der selben Klasse!Rekursive Assoziationen können auch Assoziationsklassen haben
Person Firma0..1
0..*
Arbeitnehmer
Arbeitgeberarbeitet für0..*
0..1Vorgesetzter
Mitarbeiter
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 75
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Qualifizierende AttributeAttribute, die wesentlich die Rolle eines Objektes in der Beziehung beschreiben oder überhaupt die Beziehung erst herstellenDie qualifizierenden Attribute werden der Assoziation nicht der Klasse zugeordnet
Aufführung Eintrittskarte0..1
1aufführungsDatum: DateSitzplatzNr : String
QualizierendeAttribute
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 76
©20
04-2
009,
Rai
ner S
chm
idbe
rger
AssoziationseinschränkungenSpezielle Regeln einer Assoziation werden als Constraint bezeichnetAb UML 2.0: Object Constraint Language OCLDie Darstellung erfolgt in { }Typische Beispiele sind Sichtbarkeit oder Änderbarkeit (z.B. ordered, addOnly)
Person Firma0..1
0..*
Arbeitnehmer
{ordered} arbeitet für
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 77
©20
04-2
009,
Rai
ner S
chm
idbe
rger
StereotypesStellen Erweiterungen des UML-Standards darVergeben einem UML-Element (wie z.B. einer Klasse) ein spezielle AusprägungDarstellung des stereotyp in<< >> über dem KlassennamenHäufig verwendete Stereotypen:
Keine Klasse, nicht instanzierbar, kapselt globale Variablen und Funktionen. Zur Abbildung Nicht-OO-Bibliotheken geeignet (z.B. Mathematik-Funktionen)
<<utility>>
Klassen, die selbst passiv sind und keine Interaktionen auslösen (i.Allg. zur Datenhaltung)
<<entity>>
Klassen, die Interaktionen zwischen anderen Klassen steuern<<control>>
Klassen, die mit der Außenwelt kommunizieren. Sie bilden Schnittstellen zwischen System und Umwelt
<<boundary>>
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 78
©20
04-2
009,
Rai
ner S
chm
idbe
rger
VererbungAlle Eigenschaften (also Methoden, Attribute oder Beziehungen) einer Klasse (Vaterklasse) werden an die Kindklassen übertragenDie Kindklassen können weitere eigene Eigenschaften definieren und auch ererbte Eigenschaften überschreiben
VersicherungsVertrag
SachVersicherungsVertrag LebenVersicherungsVertrag
SpezialisierungGeneralisierung
VersicherungsNehmerAbschlussDatum
JahresBeitragVersicherterGegenstand
RisikoLVAnteilBegünstigtePersonLaufzeit
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 79
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Entstehung von Vererbung
VersicherungsNehmerAbschlussDatumJahresBeitragVersicherterGegenstand
SachVersicherungsVertrag1
Zunächst entsteht aus den bekannten Anforderungen eine konkrete Klasse.Motivation zur Vererbung besteht nicht
VersicherungsVertrag
VersicherungsNehmerAbschlußDatum
SachVersicherungsVertrag LebenVersicherungsVertrag
RisikoLVAnteilBegünstigtePersonLaufzeit
3 Eine weitere Klasse nutzt die zuvor stattgefundene GeneralisierungDieser Vorgang wird nun als Spezialisierung bezeichnet
JahresBeitragVersicherterGegenstand
VersicherungsVertrag
VersicherungsNehmerAbschlussDatum
SachVersicherungsVertrag
2
Es wird eine mögliche Wieder-verwendbarkeiterkennbarAllgemeingültige Merkmale werden generalisiert
VersicherungsNehmerAbschlussDatumJahresBeitragVersicherterGegenstand
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 80
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Vererbung vs. AggregationRealisierung einer "ist-ein" Beziehung im Gegensatz zu einer "hat-ein" Beziehung der Assoziation
Ein LV-Vertrag ist einer VersicherungsvertragEin Auto hat Räder
Vererbung im fachlichen Kontext ist selten sinnvoll Alternative zur Vererbung ist eine Aggregation
Person
Student
Person Student0..1
A B
Ein Student ist eine Person (?)Wie wird mit dem Student in (A) verfahren, wenn das Studium beendet wurde?
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 81
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Vererbung abstrakter MethodenWird eine abstrakte Methode vererbt, wird deren Implementierung in den Kindklassen erzwungenVorteil: lässt sich auch keine generische Implemen-tierung festlegen, so ist doch ein gemeinsames Interface erzwingbar
PersistentesObject
Person VersicherungsVertrag
Store()getStoreSQL() : String
getStoreSQL() : String getStoreSQL() : String
Eine abstrakte Methode erzwingt die Implementierung in den KindklassenKlassen mit abstrakten Methoden können selbst keine Objekte instanzieren
Die Klasse Person implementiert die abstrakte Methode
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 82
©20
04-2
009,
Rai
ner S
chm
idbe
rger
InterfaceEin Interface ist einer Klasse mit ausschließlich abstrakten Methoden gleichzusetzenInterfaces werden "realisiert"Eine Klasse kann viele Interfaces realisierenInterfaces definieren Methoden, die von den Realisierungen implementiert werden müssen
PersistentesObjekt
Store()Delete()Load()
<<Interface>>Veranstaltung
datumVon : DatedatumBis : Datebezeichnung : Stringpreis : Waehrungsbetrag
hatPlaetzeFrei()einbuchen()Store()Delete()Load()
VeranstaltungdatumVon : DatedatumBis : Datebezeichnung : Stringpreis : Waehrungsbetrag
hatPlaetzeFrei()einbuchen()Store()Delete()Load()
PersistentesObjekt
Store()Delete()Load()
Label-Darstellung: Icon-Darstellung:
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 83
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Beispiel eines Klassendiagramms (1)
RoomAssignmentRoomRole : SelectionSeatingOrder : Selection
TrainerAssignmentMainTrainer : IntegerState : IntegerHotelNeed : SelectionInvitationDate : DateTrainerRole : Selection
ResourceCheckTimeoverlapping : BooleanDefaultBookingType : Selection
PersonDayOfBirth : DateEntryDate : DateExitDate : DateFunktion : SelectionEducationState : SelectionPlaceOfBirth : Text (50)
ResourceAssignmentDateFrom : DateDateTo : DateInterpretTimeframe : SelectionHourFrom : DateHourTo : DateFullDay : BooleanAssignmentText : Text (100)Comment : Text (100)OccupancyMode : SelectionReservationValidUntil : DateExternalComment : MemoInternalComment : MemoDifferentDuration : NumberDifferentDurationUnit : IntegerOccupancyReason : Integer
AddressAddressField1 : Text (100)AddressField2 : Text (100)AddressField3 : Text (100)Street : Text (100)Country : Text (6)Zip : Text (30)City : Text (100)POBox : Text (30)POBoxZip : Text (30)POBoxCity : Text (100)Type : SelectionValidUntil : Date
TelecomPhone : Text (30)Fax : Text (30)MobilePhone : Text (30)EMail : Text (100)HomePage : Text (100)Type : Selection
OrganizerGroupName : Text (100)DefaultCostCenter : Text (50)DefaultContingenteKey : Text (50)Initial : Text (30)ContingenteKey : Text (30)
OrganizationVHasChilds : Boolean 0..1
0..n +Parent
0..1
+Child 0..n
0..n
0..1+Member
0..n
0..1
ResourceSingledateAssignment
1
0..n
1
0..n
FolderField : Text (30)OrderNo : IntegerTitle : Text (100)VHasChildrenProduct : BooleanVHasChildrenFolder : BooleanDescription : MemoExportControl : Boolean
0..1
0..n
+parent
0..1
+child
0..n
ExternalEnrollContractNo : Text (50)Comment : MemoConfirmationBySupplier : DateQualityOfTrainingComment : MemoTrainingDuartion : NumberSupplierProductID : Text (30)TrainingTitle : Text (100)State : IntegerDateFrom : DateDateTo : DateLocationName : Text (50)
1
0..n
+ExternalSupplier
1
0..n
PartnerName1 : Text (50)Name2 : Text (50)PartnerID : Text (30)Status : SelectionCostCostCenter : Text (100)IncomeCostCenter : Text (100)Comment : MemoDebitorID : Text (15)CreditorID : Text (15)VATFlag : BooleanAccountigProcedure : SelectionDefaultCurrency : SelectionExtern : BooleanType : SelectionContraktID : Text (30)VAddressStreet : Text (100)VAddressCountry : Text (6)VAddressZip : Text (30)VAddressCity : Text (100)VPhone : Text (30)VFax : Text (30)VEMail : Text (100)VIsTrainer : BooleanVIsOrganizer : BooleanVIsLocation : BooleanVIsHotel : BooleanVOrganizationName1 : Text (50)VOrganizationName2 : Text (50)VContactPerson : Text (100)DefaultLanguage : SelectionContingenteKey : Text (50)FormOfAddress : SelectionJobTitle : Text (100)TextField1 : Text (100)TextField2 : Text (100)TextField3 : Text (100)TextField4 : Text (100)TextField5 : Text (100)TextField6 : Text (100)TextField7 : Text (100)TextField8 : Text (100)TextField9 : Text (100)NumberField1 : IntegerNumberField2 : IntegerNumberField3 : IntegerNumberField4 : IntegerNumberField5 : NumberNumberField6 : NumberNumberField7 : NumberNumberField8 : Number
0..n1
0..n1
0..n
1
0..n
1
PartnerPropertyname : Text (100)description : MemoType : Selectiongroup : SelectionhasValues : BooleanvalueSelection : Selectionexpiry : IntegerexpiryUnit : SelectionrangeFrom : IntegerrangeTo : Integer
OrganizerInitial : Text (30)LogonName : Text (30)Password : Text (15)ActiveUntil : DatePasswordValidUntil : DateDbPasswort : Text (30)FileNameImage : Text (50)Type : IntegerAssignedCostCenters : MemoVName1 : Text (50)VName2 : Text (50)VOrganizationName2 : Text (50)EcadiaPassword : Text (30)
10..n
1
+groupMember
0..n
1
0..n
1
+organizerAdmin0..n
LocationDescription : MemoTravelInfoPublic : MemoTravelInfoCar : MemoMapFileName : Text (50)AdditionalServices : Memo
1
0..1
1
0..1
RoomRoomName : Text (50)AmountSeats : IntegerRoomID : Text (30)SuitableForHandicap : IntegerFloor : SelectionSize : IntegerDefaultSeatingOrder : SelectionAdditionalInformation : MemoPhone : Text (50)
1
0..n
1
+TrainingRoom0..n
EventNotecreationDate : Datecontent : MemoaccessMode : SelectionpublishingMode : Selection
SingledateBegin : DateEnd : DateObjectives : MemoContent : MemoAdditionalInformation : Memo
1
0..n
1
0..n
TrainerContract : SelectionContractComment : Text (100)ContractDate : DateComment : MemoTrainerType : SelectionDefaultHoursPerYear : Integer
1
0..1
1
0..1
TrainingProgramEvent
TrainingProductContentTitle : Text (100)Targetgroup : MemoPrerequisites : MemoContent : MemoTargets : MemoAdditionalInformation : MemoMethodology : MemoIntroduction : MemoFacilitator : MemoTechnicalRequirements : MemoLanguage : SelectionCommentDuration : Text (100)CommentParticipantAmount : Text (100)CommentPrice : Text (100)ValidUntil : Date
ExplorerShortcutType : SelectionOrderNo : IntegerPositionX : IntegerPositionY : Integer
0..n0..n
EnrollRegistrationDate : DateCancellationDate : DateKostenpflichtig : BooleanState : SelectionAttendance : IntegerComment : MemoValidUntil : DateCertification : BooleanInviatationSent : SelectionInvitationSentDate : DateHotelNeed : SelectionPriority : IntegerOrderNo : IntegerCommentForIncompleteAttendance : MemoDifferentAttendanceDateFrom : DateDifferentAttendanceDateTo : DatePreferedAttendanceFrom : DatePrefferedAttendanceTo : DateOriginType : SelectionQualificationReached : SelectionLearningResult : SelectionLearningResultCommentBemerkung : MemoVParticipantID : Text (30)VParticipantName1 : Text (50)VParticipantName2 : Text (50)VParticipantPhone : Text (30)VParticipantOrgName1 : Text (50)VParticipantOrgName2 : Text (50)VParticipantEMail : Text (100)VHasHotelbooking : BooleanVEventDateFrom : DateVEventDateTo : DateVProductID : Text (30)VProductTitle : Text (100)DifferentDuration : NumberDifferentDurationUnit : IntegerVContactPersonr : Text (100)CancellationReason : SelectionDesiredLanguage : SelectionShowInTrainingHistory : BooleanTextField0 : Text (100)TextField1 : Text (100)TextField2 : Text (100)TextField3 : Text (100)
0..n
0..1
+Child
0..n
+Parent 0..1
0..n
0..1
0..n
0..1
1
0..n
+Participant
1
0..n
PartnerPropertyAssignmentvalue : Integercomment : Memostatus : SelectionpartnerPropertyType : SelectioncreationDate : Dateselection1 : Selectionselection2 : Selection
0..1
0..n
0..1
0..n
0..n
1
0..n
1
0..n
0..1
0..n
+contactPerson
0..1
TrainingProductPredecessorNecessaryType : SelectionPositionX : IntegerPositionY : IntegerRole : SelectionNecessaryLevel : Number
EventID : Text (30)Semester : Text (50)DateFrom : DateDateTo : DateHourFrom : DateHourTo : DateHourFromFirstDay : DateHourToLastDay : DateSingledatesText : Text (50)Status : IntegerCancelationReason : SelectionComment : MemoExportControl : IntegerMaxEnroll : IntegerMinEnroll : IntegerVSumEnroll : IntegerVSumWaitingList : IntegerTextBlock1 : MemoTextBlock2 : MemoTextBlock3 : MemoVSumNonShown : IntegerVSumInvited : IntegerVSumTempEnroll : IntegerVSumAttendedParticular : IntegerVSumCancellationParticipant : IntegerVSumWaitinglistExpicit : IntegerVSumCancellationOrganizer : IntegerVSumInterested : IntegerVSumAppeard : IntegerVRooms : Text (50)VTrainers : Text (50)VSumAttended : IntegerDuration : NumberDurationUnit : IntegerDeadlineDays : IntegerWebInfo : MemoVProductTitle : Text (100)VProductID : Text (30)TitleDiffering : Text (100)Language : SelectionVContactPerson : Text (100)inSingledates : BooleanNumberField7 : NumberNumberField8 : NumberInviteBeforeEvent : IntegerProceedOnDays : SelectionNumberField1 : IntegerNumberField2 : IntegerNumberField3 : IntegerNumberField4 : IntegerNumberField5 : NumberNumberField6 : Number
0..n
0..1
0..n
+EventLocation 0..1
0..n
0..n
0..n
0..n
1
0..*
1
0..*
1
0..n
1
0..n
0..n0..n
0..n
0..n
0..n
0..n
0..n0..n
TrainingProductID : Text (30)Title : Text (100)DeliveryMode : SelectionTrainingSection : SelectionCourseType : SelectionExportControl : IntegerNewUntil : DateValidUntil : DateModuleOnly : BooleanMultipleRegistration : BooleanVHasEvents : BooleanRegistrationMode : SelectionVSumPreRegistration : IntegerReleaseState : SelectionExtern : BooleanComment : MemoRefreshCycle : NumberRefreshCycleUnit : SelectionIgnoreTimeOverlap : IntegerNumberField1 : IntegerNumberField2 : IntegerNumberField3 : IntegerNumberField4 : IntegerNumberField5 : NumberNumberField6 : NumberNumberField7 : NumberNumberField8 : NumberPlanningTimeFrom : DatePlanningTimeTo : Date
0..n
0..1
+Copy
0..n
+Origin
0..1
1
0..n
1
0..n
1
0..n
1
0..n
0..1
0..n
+ProductPreRegistration
0..1
+PreRegistration
0..n
0..n
0..1
0..n
0..1
0..n
+Predecessor
+Successor0..n0..n0..n
1
0..n
1
0..n
0..1
0..*
+LogisticprofileProduct
0..1
+Logisticprofile0..*
TrainingProgram
0..n
0..n
+module0..n
+trainingProgram
0..n
TrainingProgramAssignmentOrderNo : IntegerIdealBeginWeekday : IntegerMinDistanceToPredecessor : IntegerMaxDistanceToPredecessor : IntegerBookingType : SelectionColorInTimeTable : Selection
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 84
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Beispiel eines Klassendiagramms (2)Room
RoomName : Text (50)AmountSeats : IntegerRoomID : Text (30)SuitableForHandicap : IntegerFloor : SelectionSize : IntegerDefaultSeatingOrder : SelectionAdditionalInformation : MemoPhone : Text (50)
EquipmentName : Text (50)Description : MemoSoftwareKey : Text (50)Type : Selection
LocationDescription : MemoTravelInfoPublic : MemoTravelInfoCar : MemoMapFileName : Text (50)AdditionalServices : Memo
1
0..n
1
+TrainingRoom0..n
Event
0..n
0..n
0..n
0..n
0..n
0..1
0..n
+EventLocation
0..1
EquipmentAssignmentamount : Integerday : IntegerdaySection : SelectionamountInterpretation : SelectiondeliveryBy : Selectionneccessity : SelectionroomRole : Selectioncomment : Memo
0..n0..n
contains
0..n0..n
0..1
0..n
0..1
0..n
requires
0..n0..ncontains
OrganizerInitial : Text (30)LogonName : Text (30)Password : Text (15)ActiveUntil : DatePasswordValidUntil : DateDbPasswort : Text (30)FileNameImage : Text (50)Type : IntegerAssignedCostCenters : MemoVName1 : Text (50)VName2 : Text (50)VOrganizationName2 : Text (50)EcadiaPassword : Text (30)
0..n 0..10..n
+OrganizerEvent
0..1
0..n
0..1
0..n
+OrganizerContent
0..1
0..n0..1
0..n+OrganizerLogistic
0..1
0..n
0..1
0..n
+Responsible0..1
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 85
©20
04-2
009,
Rai
ner S
chm
idbe
rger
PortInteraktionspunkt zwischen einem Classifier (Klasse, Paket, Komponente, ...) und seiner Umgebung
Gruppierung einer beliebigen Anzahl von Interfaces zu einem Dienst, der einen bestimmten Dienst/ Zweck verfolgtKapselung des Classifiers gegenüber seiner UmgebungFür ein- und ausgehende Signale
Sichtbarkeitpublic für eingehende Nachrichten protected, private für interne Nachrichtenverteilung
<<Component>>
Komponente A
Port (public)Port (protected)
Ausgehendes Interface (provided)
Eingehendes Interface (required)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 86
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Komponenten DiagrammModelliert die Software-Architektur mit Bibliotheken, Komponenten, Datenbanken, usw.
Abhängigkeiten
Komponente
<<Component>>
GUISteuerung
<<Component>>
Verbindungsrechner
<<Component>>
Fahrplandatenbank
Anschlüsse
<<Component>>
BenutzerGUI
Verbindungen
Konnektor
InterfacePort
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 87
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Komponenten Diagramm (2)Komponente: Abgegrenzter Teil des GesamtsystemsKonnektor (=requiredInterface): eine von der Komponente benötigte SchnittstelleInterface (=providedInterface): eine von der Komponente bereitgestellte SchnitttstellePort: Interaktionspunkt, kann mehrere (provided) Interfaces enthalten
<<Component>>
Komponente 1
<<Component>>
Komponente 2
Interface 1
Konnektor
InterfacePort
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 88
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML Spezifikation zu Komponente Siehe UML Superstructure, Kapitel 8
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 89
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Kompositions-Struktur-Diagramm (1)Ab UML 2.0, Composite Structure„Kontext“-bezogenes Klassen-, Objekt oder KomponentendiagrammZeigt eine „Ausprägung“ oder eine bestimmte Konfiguration
fahrgast : Person
: Kreditkarte
Abrechnung Kollaborationstyp
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 90
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Kompositions-Struktur-Diagramm (2)Modelliert eine „Teil von“-Beziehung, ähnlich wie bei der AggregationDie „Teile“ können über definierte Schnittstellen (Ports) mit der Umgebung kommunizieren
Person
: Adresse „Teile“ werden zu Attributen der umhüllenden Klasse
: Bankverbindung
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Verhaltensdiagramme
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 92
©20
04-2
009,
Rai
ner S
chm
idbe
rger
SequenzdiagrammBeschreibt einzelne, genau definierte AbläufeDient der Beschreibung von Use Cases und zur Beschreibung des dynamischen Verhaltens von Objekten (Achtung: der Objekte, nicht der Klassen!)Zeigt über die Abfolge (von oben nach unten) und auch über die Nummerierung die zeitliche Reihenfolge der Botschaften anDie Summe aller Sequenzdiagramme beschreibt das dynamische Verhalten des SystemsBotschaften werden bei der Klasse des Empfänger-objekts als Methode implementiert
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 93
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Sequenzdiagramm (1)Beispiel: „Fahrkarte bestellen“
: Fahrkarte kunde: Person : Kreditkarte
bestellen()berechnePreis()
belasten(betrag)istGueltig()
belasten(betrag)
sd: Fahrkarte bestellen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 94
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Sequenzdiagramm (2)Alternativen
: Fahrkarte kunde: Person : Kreditkarte
bestellen()berechnePreis()
belasten(betrag)istGueltig()
belasten(betrag)
sd: Fahrkarte bestellen
[ result == true ]
result
alt
[ else ]sperren()
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 95
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Sequenzdiagramm (3)Schleifen
: Fahrkarte kunde: Person : Kreditkarte
bestellenberechnePreis
belasten(betrag)istGueltig()
belasten(betrag)
sd: Fahrkarte bestellen
[ restbetrag = 0 ]
result
loop
restbetrag
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 96
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Sequenzdiagramm (4)Referenzen
: Fahrkarte kunde: Person : Kreditkarte
bestellenberechnePreis
belasten(betrag)istGueltig()
belasten(betrag)
sd: Fahrkarte bestellen
result
ref
restbetrag
belasten(betrag)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 97
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Sequenzdiagramm (5)Referenz
: Kreditkarte ...
belasten(betrag)
sd: belasten(betrag)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 98
©20
04-2
009,
Rai
ner S
chm
idbe
rger
: Fahrgast : Bestellvorgang
: Fahrkarte
: Person
: Kreditkarte
1: start( ) 2: bestellen( )
3: berechnePreis( )
4: belasten(Waehrungsbetrag)
5: istGueltig( )6: belasten(waehrungsbetrag)
KommunikationsdiagrammÄhnlicher Inhalt wie beim SequenzdiagrammBei vielen Objekten mit wenig Botschaftsfluss geeignet
Botschaft
Beteiligtes Objekt
Reihenfolge
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 99
©20
04-2
009,
Rai
ner S
chm
idbe
rger
AktivitätendiagrammAktivitätenfolge mit KontrollflussWird zur Beschreibung von Use Cases oder Klassen eingesetztWie bei Zustandsübergängen kann ein Ereignis je Transition hinterlegt werdenVerzweigungen und Zusammenführungen
Aktivität
Entscheidung (Decision)
Aktivität 1 Aktivität 2
Aktivität 3
Note bewerten
Als nicht bestanden markieren
5
Prüfung korrigieren
Noten eintragen
besser als 5
Synchronisation
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 100
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Verzweigung / VereinigungVereinigung (MergeNode)
Einer der Eingänge muss aktiv sein
Verzweigung (Decision Node)
Einer der Ausgänge wird aktiv
Zusammenführung (JoinNode)
Alle Eingänge müssen aktiv sein
Gabelung (Fork Node)Alle Ausgänge werden aktiv
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 101
©20
04-2
009,
Rai
ner S
chm
idbe
rger
KnotenStart- und Endknoten
Sprungmarken
Aktivität A 1 1 Aktivität B
Aktivität A Aktivität B
(beendet den Fluss an der entsprechenden)
(beendet die gesamte Aktivität)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 102
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Signale im Aktivitätsdiagramm
Signal senden
Signal empfangen
Empfang eines Zeitereignisses
Unterbrechungsbereich
Unterbrechungskante
Schlafen
Aufstehen
7.00 UhrNachbar lärmt
Fernsehen
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 103
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Verlauf einer typischen PartyZeitpunkt wählen
Gäste einladen Einkaufen
[Zusagen < 50%]
[Zusagen >= 50%]
Getränke kalt stellen
Essen kochen
1
Feiern
Partygäste zählen
Vorräte prüfen
Bei Tankstelle nachkaufen
Warnung der Polizei
Party beenden
Betrunken ins Bett fallen
Essen wegwerfen
Partyservice bestellen
[Essen verbrannt]
[Essen OK]
1
[< 10% sind noch da]
[>= 10% sind noch da]
[keine Vorräte mehr]
[genug]Party abbrechen
Quelle: Jeckle u.a., „UML glasklar“, Hanser Verlag, 2003
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 104
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Aktivitätsdiagramm: Partitionss
Eine „Partitions" veranschaulicht den Zuständigkeits-bereich eines bestimmten ObjektsWerden oft auch als „Swimmlanes“bezeichnetSpeziell zur Veranschau-lichung von UseCases
Prüfung anmelden
Prüfung schreiben
Prüfung abgeben
Anmeldung auf Prüfungsliste ergänzen
Als nicht bestanden markieren
Noten eintragen
Note bewertenbesser als 5 5
Prüfung erstellen
Prüfung abhalten
Prüfung korrigieren
PrüferPrüfungsamtStudent
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 105
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Zustandsautomat
Zustandsname
entry / Aktivitätexit / Aktivitätdo / Aktivität
Trigger [Guard] / Aktivität
Trigger: Ereignisse, die den Zustandswechsel herbeiführenGuard: Bedingung, die zum Zustandswechsel erfüllt sein mussAktivität: Aktivität, die beim Zustandswechsel durchgeführt wird
Zudem können noch Trigger mit Bedingungen festgelegt werden, die Aktivitäten auslösen
Zeigt die Zustände und Zustandsübergänge innerhalb eines Objektes anElemente:
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 106
©20
04-2
009,
Rai
ner S
chm
idbe
rger
ZustandsautomatZeigt die Zustände und Zustandsübergänge innerhalb eines Objektes an
Geldbetrag ist eingeworfen
Geld einwerfen / Anzeige aktualisieren
Geld einwerfen / Anzeige aktualisieren
Parkschein wird gedruckt
Taste "Parkschein" gedrückt / Geldeingabe sperren
GeldausgabeTaste "Abbruch" gedrückt
Timer T1 abgelaufen / Alle Werte zurücksetzen
/ Alle Werte zurücksetzen
Zustand
Beginn
Ende
Ereignis /Aktion
Zustands-übergang
Das Erreichen des Ende-Zustandes (final state) führt zur Terminierung des Objektes, dessen Zustände hier dargestellt werden
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 107
©20
04-2
009,
Rai
ner S
chm
idbe
rger
VerbundzustandComposite stateSpezialisierung von Zuständen
Verbindung aufbauen
Abgehoben
Nummerneingabe
Verbindungsaufbau
Partner belegt Freizeichen
Verbindung
Abgehoben
NummerneingabeTaste
Verbindungsaufbau
Nummer gültig
Partner belegt Freizeichen
Aufgelegt
Taste
Verbindung
Partner nimmt ab
Partner frei signalisiertPartner belegt signalisiert
Aufgelegt
Abheben
Composite state
Führt in den Startzustand des Verbundzustands
Alle Ereignisse "Aufgelegt" führen aus dem Verbundzustand (jedem beliebigen Zustand dort) wieder heraus
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Object ConstraintLanguage (OCL)
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 109
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCLDie Object Constraint Language ist Teil von UML 2.0OCL ist eine formale, prädikatenlogikbasierte Sprache zur Ergänzung von UML-ModellenOCL Ausdrücke sind leicht zu lesen (leichter als beispielsweise die von Z oder die Prädikatenlogik)OCL Ausdrücke sind deklarativ, d.h. sie ändern den Systemzustand nichtDient zur Formulierung von Zusicherungen
Invarianten von Klassen Vor- und Nachbedingungen von Methoden
Nutzen von OCLDie UML-Modelle können präziser beschrieben werdenProgrammcode kann generiert werden
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 110
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL Constraints (1)OCL constraints werden relativ zu einem Systemzustand S ausgewertetOCL constraints sind vom Typ Boolean; sie sind wahr oder falsch bezüglich SOCL constraints beschränken die erlaubten Systemzustände eines UML Klassendiagramms
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 111
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL Constraints (2)Invarianten:
Eine Invariante I für eine Klasse C ist ein Boolscher OCL-Ausdruck.Semantik: I gilt in jedem feststellbaren Zustand (snapshot) jeder Instanz von C.
Vor- und Nachbedingungen:Vor- und Nachbedingungen (v, n) für eine Operation p ist ein Paar von Boolschen OCL-Ausdrücken.Semantik: v muss zum Zeitpunkt, wenn p aufgerufen wird, truesein. n muss zum Zeitpunkt, wenn p terminiert, true sein
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 112
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Der KontextDer Kontext legt fest, auf welches Element sich ein OCL Constraintbezieht.
Beispiel:
context [ kontextInstanz : ] typeNameinv: OclAusdruck1...inv: OclAusdruckn
context Personinv: self.alter > 0
Soll bedeuten: zu keinem Zeitpunkt darf es ein Objekt der Klasse Person geben, das einen negativen Wert im Attribut alterhatself (die referenziert per
default auf die Kontext-Instanz)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 113
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Boolean Operationen
Booleannot aNegation
Booleana = bVergleich
Booleana <> bUngleichheit
Booleana implies bImpliziert (wenn a true ist, muss auch b true sein
Booleana or | and | xor bOder | Und |Exklusiv Oder
ErgebnistypNotationOperation
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 114
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Integer/Real Operationen
Integer/Reala.mod(b)Modulo
Integer/Reala.max(b), a.min(b)Min, Max
...
Booleana = b, a<>b, a<b, a>b, a<=b, a>=b,
Vergleich
Integer/Reala+b, a-b, a*b, a/bRechnen
ErgebnistypNotationOperation
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 115
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Spezielle OCL-OperatorenoclIsTypeOf (t : OclType) : BooleanoclIsKindOf (t : OclType) : BooleanoclInState (s : OclState) : Boolean
Prüfung von Zuständen bei Zustandsautomaten (State D.)oclIsNew () : Boolean
für Nachbedingungen, prüft, ob Objekte innerhalb einer Methode neu erzeugt wurden
oclAsType (t : OclType) : instance of OclTypeBeispiel:context Personinv: self.oclIsTypeOf( Person ) -- ist trueinv: self.oclIsTypeOf( Firma) -- ist false
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 116
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL KollektionenSet(Menge), OrderdSetBag (Liste)Sequence (geordnete Liste)
Instanzierung:als Literal
Set { 1, 2, 4, 42}Sequence {1..10} entspricht Sequence {1,2,3,4,5,6,7,8,9,10}
durch Navigationdurch Aufruf von Kollektionsmethodendurch Klasse.allInstances()
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 117
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL Kollektionen (Auszug)
Anzahl, wie oft das Objekt in der Kollektion enthalten ist
integercount(objekt)
wahr, wenn Menge leer istbooleanisEmpty
wahr, wenn <ausdruck> für jedes Element gilt
booleanforAll(<ausdruck>)
wahr, wenn <ausdruck> für mind. ein Element gilt
booleanexists(<ausdruck>)
Teilmenge, für die <ausdruck> giltMengeselect(<ausdruck>)
wahr, wenn alle Elemente der Menge Menge2 enthalten sind
booleanincludesAll(Menge2)
falsch, wenn Menge leer istbooleannotEmpty
Anzahl d. Elementeintegersize
BeschreibungErgebnistypOperator
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 118
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL Kollektionen (2)liefert true falls <ausdruck> für alle Elemente true ist.
c->forAll(objekt1, ... Objektn |<ausdruck >)
liefert true falls <ausdruck> für mindestens eines der Elemente true ist.
c->exists(objekt1, ... Objektn | <ausdruck>)
context Firma
inv: self.Mitarbeiter->forAll(p1, p2 |
p1 <> p2 implies p1.Name <> p2.Name)
context Firma
inv: self.Mitarbeiter->exists(p | p.Gehalt > 100000)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 119
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL - Beispiel
Person0..*
Mitarbeiter Firma
BezeichnungNameVornameGehaltAlter
Arbeitgeber
0..1
Die Mitarbeiter sind mind. 16 und max. 65 Jahre altJeder hat ein Gehalt > 0
context Firma
inv: self.Mitarbeiter->forAll(m | m.Alter>=16 and m.Alter<=65)self.Mitarbeiter->forAll(m | m.Gehalt >= 0)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 120
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL - Beispiel
Person0..*
Mitarbeiter Firma
Bezeichnung
Der Chef verdient mehr als sein Mitarbeiter
NameVornameGehaltAlter
Arbeitgeber
0..1
Chef
Mitarbeiter
0..*
0..1
context Person
inv: self.Chef->notEmpty() impliesself.Chef.Gehalt > self.Gehalt
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 121
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL - Beispiel
Person0..*
Mitarbeiter Firma
Bezeichnung
Der Chef arbeitet bei der selben Firma wie sein Mitarbeiter
NameVornameGehaltAlter
Arbeitgeber
0..1
Chef
Mitarbeiter
0..*
0..1
context Person
inv: self.Chef->notEmpty() impliesself.Chef.Arbeitgeber = self.Arbeitgeber
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 122
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL - Beispiel
Person0..*
Mitarbeiter Firma
Bezeichnung
Es gibt mindestens einen „Oberchef“
NameVornameGehaltAlter
Arbeitgeber
0..1
Chef
Mitarbeiter
0..*
0..1
context Firma
inv: self.Mitarbeiter->select(Chef->isEmpty())->size >= 1
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 123
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Vor- und NachbedingungenPerson
0..*
Mitarbeiter Firma
BezeichnungistPleite : Boolean
Arbeitgeber
0..1
context Firma::einstellen(p : Person)
pre: not self.istPleite and -- Firma ist nicht pleitep.Arbeitgeber->isEmpty() -- Person ist nicht bereits
-- anderswo beschäftigtpost: p.Arbeitgeber = self and -- jetzt eingestellt
p.Gehalt > p.Gehalt@pre -- Stellenwechsel mit -- Gehaltserhöhung
einstellen(p : Person)
NameGehalt : Real
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 124
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL MessagesUm auszudrücken, dass eine „Botschaft“ versendet wurde, dient der hasSent (‘^’) Operator:
Bei unspezifizierten Parametern:
Die Menge der Aufrufe einer Methode an einen Empfänger wird über ^^ ausgedrückt
context Firma::einstellen(p : Person)
post: p^setArbeitgeber(self)
context Subject::hasChanged()
post: observer^update(? : Integer, ? : Integer))
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 125
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL Werkzeuge
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 126
©20
04-2
009,
Rai
ner S
chm
idbe
rger
OCL Literaturhttp://www.omg.org/technology/documents/modeling_spec_catalog.htmJos Warmer, Anneke Kleppe, „The Object ConstraintLanguage“, second edition, Addison-Wesley, 2003.
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 127
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Übung
SpieleristVerletzt : BooleanistTorwart : Boolean
Spielaustragungsort : StringaustragungsDatum : Date
Aufstellung
auswechseln(spielerRein : Spieler, spielerRaus : Spieler)
0..1
10
0..1
+feldspieler10
1
0..1+torwart
1
0..1
+gast
+heim
VereinvereinsName : String
11..*
1
+mitarbeiter 11..*
1
Trainer
1+chefTrainer0..*
+assistenzTrainer10..*
+arbeitgeber
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 128
©20
04-2
009,
Rai
ner S
chm
idbe
rger
AufgabeJeder Verein hat mindestens einen CheftrainerKein Spieler einer Aufstellung ist verletztAlle Spieler einer Aufstellung arbeiten beim selben Verein
Vor und Nachbedingungauswechseln
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 129
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Übung a:
context Verein
inv: not self.chefTrainer->isEmpty()
Jeder Verein hat mindestens einen Cheftrainer
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 130
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Übung b:
context Aufstellung
inv: self.feldSpieler->Select(istVerletzt)->isempty()inv: not self.torwart.istVerletzt
Kein Spieler der Aufstellung ist verletzt
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 131
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Übung c:
context Aufstellung
inv: self.feldSpieler->forAll(s1, s2 | s1.arbeitgeber = s2.arbeitgeber)
Alle Spieler einer Aufstellung arbeiten beim selben Verein
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 132
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Übung d:
context Aufstellung::auswechseln(spielerRein : Spieler,
spielerRaus : Spieler)pre: self.feldspieler->exists(spielerRaus) and
not self.feldspieler->exists(spielerRein) andnot spielerRein.istVerletzt
post: not self.feldspieler->exists(spielerRaus) andself.feldspieler->exists(spielerRein)
Auswechslung
se
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Model DrivenArchitecture MDA
Rainer Schmidbergerrainer.schmidberger@informatik.uni-stuttgart.de
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 134
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Modelle im Entwicklungsprozess
Code
Modell Modell
Code Code
Modell
generieren generieren Reverse-Engineering
Nur Code Code-Generierung
„Round Cycle“ Ausführbares Modell
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 135
©20
04-2
009,
Rai
ner S
chm
idbe
rger
MDAwww.omg.org/mdaModelle sind zentrales Element des EntwicklungsprozessesGrundgedanke ist eine Modelltrennung
Platform independent model (PIM): Technologieneutrale Bestandteile wie z.B. Geschäftsprozesse, Fachlogik, Domänenmodell etc.Platform specific model (PSM): Modell für die speziell zum Einsatz kommende Systemlandschaft wie z.B. J2EE
Die Vision besteht in einer Ausführbarkeit dieser ModelleViele Werkzeuge werden angeboten
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 136
©20
04-2
009,
Rai
ner S
chm
idbe
rger
UML-ProfileUML-Profile spezifizieren domänenspezifische Typen, Stereotypes usw.UML Testing Profile
The UML Testing Profile defines a language for designing, visualizing, specifying, analyzing, constructing and documenting the artifacts of test systems. [...] The UML Testing Profile can be used stand alone forthe handling of test artifacts or in an integrated manner [...]
UML Profile for Systems Engineering (SysML)[...] supports the specification, analysis, design, verification and validation of a broad range of systems and systems-of-systems. These systems may include hardware, software, information, processes, personnel, and facilities. (www.sysml.org)
WeitereUML Profile for Schedulability, Performance and Time UML Profile for System on a Chip (SoC) UML Profile for Enterprise Application Integration (EAI)
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 137
©20
04-2
009,
Rai
ner S
chm
idbe
rger
ACM, Alex E. Bell, Death by UML Fever, Queue, v.2 n.1, March 2004
se
Prog
ram
men
twic
klun
g,
Vor
lesu
ngss
krip
t UM
L14
.10.
2008
Folie 138
©20
04-2
009,
Rai
ner S
chm
idbe
rger
Was UML nicht modellieren kann ...Projektplan, Arbeitspakete, Rollen, AktivitätenPersonalplanungBudgetNichtfunktionale Anforderungen (z.B. Stabilität, Wartbarkeit, Performance, Qualität, ...)Relationales Datenmodell (ER-Diagramm)Testplan, Testfälle, TestberichtRisiken, QualitätssicherungBegriffslexikon (Glossar)GUI-EntwürfeConfiguration Management...