UML und OCL

Transcrição

UML und OCL
© 2004-2010, Rainer Schmidberger
Einführung in die
Unified Modeling
Language
WS 2009/10
Rainer Schmidberger
[email protected]
se
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML (1)
‰ The Unified Modeling Language is a visual language
for specifying, constructing, and documenting the
artifacts of systems. It is a general-purpose modeling
language [...] that can be applied to all application
domains (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
Folie 2
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
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öst
‰ Wird zur Prozessmodellierung, Analyse, Spezifikation
und zum Systementwurf verwendet
‰ Es sind sehr viele gute Werkzeuge zur UML auf dem
Markt
‰ Bietet sehr konkreten Übergang zur Implementierung.
Code-Generierung ist aus den Modellen heraus in
vielen Teilen möglich
‰ In Zukunft: MDA, MDD und Executable UML?
se
Folie 3
Ivar Jacobson
Grady
Booch
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Die drei „Amigos“
se
James
Rumbaugh
Folie 4
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Geschichte der UML
se
se
Quelle: Mario Jeckle, 2003
Folie 5
„Entstehung“ der UML
Quelle: www.ibm.com
Folie 6
© 2004-2010, Rainer Schmidberger
Kurzübersicht über
die UML-Diagramme
Rainer Schmidberger
[email protected]
se
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Diagramm Übersicht
se
UML
Diagramme
Strukturdiagramme
Verhaltensdiagramme
Interaktionsdiagramme
Neu in UML 2.0
Klassend.
Objektd.
Komponentend.
Kompositionsstrukturd.
Verteilungsd.
Paketd.
Use Case-D.
Aktivitätsd.
Zustandsd.
Sequenzd.
Kommunikationsd.
Zeitdiagramm
Interaktionsübersichtsd.
Folie 8
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Diagramm Übersicht (engl.)
se
Quelle: www.uml.org, 2006
Folie 9
Strukturdiagramme
© 2004-2010, Rainer Schmidberger
‰ Klassendiagramm (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
14.10.2009
‰ Kompositionsstrukturdiagramm (composite structure
diagram)
Ö Modellierung der internen Struktur eines Modellelements (Classifiers) sowie dessen Möglichkeiten zu
Interaktion mit anderen Systemkomponenten
Programmentwicklung,
Vorlesungsskript UML
‰ Komponentendiagramm (component diagram)
se
Ö Modellierung der Komponenten (=Module) und deren
Abhängigkeiten
‰ Verteilungsdiagramm (deployment diagram)
Ö Zeigt die (physischen) Geräte des Systems im Betrieb
Quelle: Mario Jeckle, 2003
Folie 10
Verhaltensdiagramme
© 2004-2010, Rainer Schmidberger
‰ Use-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)
14.10.2009
Ö Modelliert ein Szenario: den Botschaftsfluss zwischen
Objekten
‰ Kommunikationsdiagramm (comunication
diagram)
Programmentwicklung,
Vorlesungsskript UML
Ö Dynamik wie Sequenzdiagramm; zusätzlich
Objekteigenschaften
‰ Timing-Diagramm
Ö Präziser zeitlicher Verlauf
‰ Interaktionsübersichtsdiagramm
Ö Modellierung des Zusammenspiels einzelner
Interaktionsdiagramme
se
Quelle: Mario Jeckle, 2003
Folie 11
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Diagramm Übersicht
se
UML
Diagramme
StrukturDiagramme
VerhaltensDiagramme
InteraktionsDiagramme
Klassen-D.
Objekt- D.
Komponenten-D.
Kompositionsstruktur-D.
Verteilungs-D.
Paket-D.
Use Case-D.
Aktivitäts-D.
Zustands-D.
Sequenz- D.
Kommunikations- D.
Zeit-D.
InteraktionsÜbersichts-D.
Folie 12
‰ Modellierung der Klassen mit Methoden, Attributen und
Beziehungen
‰ Ähnlich dem ER-Diagramm
Rolle
Fahrkarte
Sichtbarkeit
startpunkt
zielpunkt
wegstrecke
rabatt
+fahrgast
0..*
Person
name : String
vorname : String
1
bestellen()
stornieren()
14.10.2009
© 2004-2010, Rainer Schmidberger
Klassendiagramm
belasten(betrag : Waehrungsbetrag)
1
+karteninhaber
Programmentwicklung,
Vorlesungsskript UML
0..*
se
Beziehung
Multiplizität
Bestellvorgang
start()
Attribute
Methoden
Kreditkarte
betreiber
nr
kontrollNr
Ablaufdatum
istGueltig()
belasten(betrag : waehrungsbetrag)
Folie 13
‰ Pakete dienen als „Container“ für beliebige UML Modellelemente
‰ Das Paketdiagramm zeigt (abstrakte) Beziehungen zwischen
einzelnen Paketen
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Paketdiagramm
se
Businesslogic
Klassen
GUI Klassen
Rechnung
Modellsicht:
Datenbankzu
griffe
Berechnungs
logik
‰
Ein Paket kann selber wieder
Pakete oder andere
Modellelemente wie z.B.
Klassen enthalten
Folie 14
‰ Zeigt eine Momentaufnahme des Systems
‰ Dem Klassendiagramm sehr ähnlich: statt der (abstrakten) Klassen
werden (konkrete) Objekte dargestellt
‰ Objektname ist in der Regel eine Rolle, in der ein Objekt agiert
‰ Attributwerte können auch angezeigt werden
fluggast: Person
14.10.2009
© 2004-2010, Rainer Schmidberger
Objektdiagramm
name : String = „Duck“
vorname : String = „Donald“
Programmentwicklung,
Vorlesungsskript UML
Objektname : Klassenname
se
bezahltMit
: Kreditkarte
betreiber : String = „Visa“
Nr : String = „1234567“
Folie 15
‰ Ab UML 2.0, Composite Structure
‰ „Kontext“-bezogenes Klassen-, Objekt oder
Komponentendiagramm
‰ Zeigt eine „Ausprägung“ oder eine bestimmte
Konfiguration
14.10.2009
© 2004-2010, Rainer Schmidberger
Kompositions-Struktur-Diagramm
Abrechnung
Kollaborationstyp
Programmentwicklung,
Vorlesungsskript UML
fahrgast : Person
se
: Kreditkarte
Folie 16
‰ Modelliert die Software-Architektur mit Bibliotheken,
Komponenten, Datenbanken, usw.
Komponente
Verbindungen
14.10.2009
© 2004-2010, Rainer Schmidberger
Komponenten Diagramm
<<Component>>
<<Component>>
GUISteuerung
Verbindungsrechner
Programmentwicklung,
Vorlesungsskript UML
Konnektor
se
Interface
Port
<<Component>>
BenutzerGUI
Anschlüsse
<<Component>>
Fahrplandatenbank
Abhängigkeiten
Folie 17
‰ Deployment diagram
‰ Modelliert 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
Browser
Application-Server
<<HTTP>>
<<JDBC>>
Datenbank
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Verteilungsdiagramm
se
Folie 18
© 2004-2010, Rainer Schmidberger
Diagramm Übersicht
UML
Diagramme
14.10.2009
StrukturDiagramme
Programmentwicklung,
Vorlesungsskript UML
VerhaltensDiagramme
InteraktionsDiagramme
Klassen-D.
Objekt- D.
Komponenten-D.
Kompositionsstruktur-D.
Verteilungs-D.
Paket-D.
Use Case-D.
Aktivitäts-D.
Zustands-D.
Sequenz- D.
Kommunikations- D.
Zeit-D.
InteraktionsÜbersichts-D.
se
Folie 19
‰ Modellierung der Anwendungsfunktionalität aus der
Sicht der Anwender
‰ Geschäftsprozesse
‰ Sehr einfache Diagramme
Akteur: Nutzer des Systems
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Use Case
se
Use Case
Verbindungen abfragen
Fahrgast
Beziehung: der Akteur
benutzt einen Use Case
System
Fahrkarten bestellen
Folie 20
‰ Beschreibt den Ablauf eines Use Case
‰ Ist auch für parallele Abläufe geeignet
Aktivität
Verbindungsstart
eingeben
14.10.2009
© 2004-2010, Rainer Schmidberger
Aktivitätsdiagramm
Entscheidung
Verbindungsziel
eingeben
Programmentwicklung,
Vorlesungsskript UML
Eingaben
sind gültig
Weg
berechnen
Mind. eine Verbindung
wurde gefunden
nein
ja
Verbindungen
anzeigen
Fehlerseite
se
Folie 21
‰ Modelliert die Zustände und
Zustandsübergänge einer Klasse
oder einer Komponente
‰ Den Zustandsübergängen
können Ereignisse und Aktionen
zugeordnet werden
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Zustandsdiagramm
se
Transition
Beginn
ungültig
erfolgreiche
Belastung eines
Fahrgastkontos
storno
gültig
Zustand
Ende
Folie 22
‰ Botschaftsfluss zwischen Objekten
Fahrkarte bestellen
: Fahrkarte
bestellen()
kunde: Person
: Kreditkarte
berechnePreis()
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm
Programmentwicklung,
Vorlesungsskript UML
belasten(betrag)
istGueltig()
belasten(betrag)
se
Folie 23
‰ Ähnlicher Inhalt wie beim Sequenzdiagramm
‰ Bei vielen Objekten mit wenig Botschaftsfluss geeignet
14.10.2009
© 2004-2010, Rainer Schmidberger
Kommunikationsdiagramm
3: berechnePreis( )
Reihenfolge
1: start( )
: Fahrkarte
2: bestellen( )
4: belasten(Waehrungsbetrag)
: Fahrgast
: Bestellvorgang
Programmentwicklung,
Vorlesungsskript UML
Botschaft
se
Beteiligtes
Objekt
: Person
5: istGueltig( )
6: belasten(waehrungsbetrag)
: Kreditkarte
Folie 24
‰ Ab UML 2.0
‰ Zeigt das Verhalten von Objekten mit genauer
Zeitachse.
‰ Speziell für Hardware dominierte oder Realtime
Software.
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Timing diagram
se
Quelle: www.oose.de, www.sparxsystems.com.au
Folie 25
‰ Ab UML 2.0
‰ Zeigt den Zusammenhang
zwischen einzelnen
Interaktionsdiagrammen
auf
‰ Elemente wie im
Aktivitätendiagramm
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Interaktionsübersicht
se
Folie 26
UML – Diagramm Layout
© 2004-2010, Rainer Schmidberger
‰ Header
Ö Syntax:
•
[<DiagrammTyp>]<DiagrammName>[<Parameter>]
Ö DiagrammTyp (Kürzel) - optional
•
cd, sd, uc, ...
Header
14.10.2009
Ö DiagrammName
Ö Parameter – optional
Programmentwicklung,
Vorlesungsskript UML
•
wird nur selten benutzt
Inhalt
‰ Inhalt
Ö Graphisches Diagramm des angegebenen Typs
‰ Anmerkung
se
Ö Die Diagramm-Darstellung wird letztendlich vom Werkzeug
festgelegt
Folie 27
‰ www.ibm.com/software/rational
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Werkzeuge: Rational Rose
se
Folie 28
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Werkzeuge: Argo UML
‰ www.argouml.org
se
se
Folie 29
UML Werkzeuge: Rational XDE
‰ www.ibm.com/software/rational
Folie 30
‰ http://www.sparxsystems.com/
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Werkzeuge: Enterprise Architect
se
Folie 31
‰ www.borland.com/de/products/together/index.html
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Werkzeuge: Borland Together
se
Folie 32
R1
‰ http://www.visual-paradigm.com/
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Werkzeuge: Visual Paradigm
se
Folie 33
Folie 33
R1
Letzte Folie 24.10.
RS; 24.10.2008
© 2004-2010, Rainer Schmidberger
UML im Projektverlauf
Use Case D.
Klassendiagramm
(techn. Modell)
Sequenzd.
Verteilungsd.
Komponentend.
Zustandsd.
Management
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
Engineering
Aktivitätend.
Klassendiagramm
(Domänenmodell)
se
Quelle: Rational Software
Folie 34
Rumbaugh, James; Jacobson, Ivar; Booch, Grady : „The
unified modeling language reference manual“, Second
Edition, Addison-Wesley, 2004
Jeckle, Mario; et al. : „UML2 glasklar“, Hanser Verlag, 2004
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Literatur
se
Folie 35
© 2004-2010, Rainer Schmidberger
UML Literatur
14.10.2009
Martin Fowler: „UML Distilled. A Brief Guide to the Standard
Object Modeling Languange“, Addison-Wesley, 2003
Programmentwicklung,
Vorlesungsskript UML
Kendall Scott : „UML Explained “, Addison-Wesley, 2001
se
Folie 36
‰ Erhältlich über www.uml.org
‰ Gliedert 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 (Object
Constraint Language) spezifiziert.
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Spezifikation (1)
se
Folie 37
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Superstructure: Class
se
Folie 38
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Spezifikation: Classifier
se
Classifier
Classifier
Classifier
Classifier
Classifier
(from Kernel)
(from Templates)
(from UseCases)
(from Dependencies)
(from PowerTypes)
Actor
Artifact
(from UseCases)
(from Artifacts)
Classifier
(from Collaborations)
DataType
Association
(from Kernel)
(from Kernel)
Interface
(from Interfaces)
PrimitiveType
Enumeration
(from Kernel)
(from Kernel)
InformationItem
Signal
(from InformationFlows)
(from Communications)
Class
BehavioredClassifier
StructuredClassifier
(from Kernel)
(from BasicBehaviors)
(from InternalStructures)
Interface
Class and its
increments
(from Communications)
BehavioredClassifier
(from Interfaces)
CommunicationPath
AssociationClass
Behavior
Class
UseCase
Collaboration
(from Nodes)
(from AssociationClasses)
EncapsulatedClassifier
(from BasicBehaviors)
(from Communications)
(from UseCases)
(from Collaborations)
(from Ports)
Behavior
(from CompleteActivities)
Class
Activity
Interaction
StateMachine
OpaqueBehavior
(from FundamentalActivities)
(from BasicInteractions)
(from BehaviorStateMachines)
(from BasicBehaviors)
(from StructuredClasses)
Activity
(from BasicActivities)
Activity
(from StructuredActivities)
ProtocolStateMachine
Component
Node
(from BasicComponents)
(from Nodes)
(from ProtocolStateMachines)
Activity
(from CompleteActivities)
Component
(from PackagingComponents)
Device
ExecutionEnvironment
(from Nodes)
(from Nodes)
Folie 39
UML Spracharchitektur
© 2004-2010, Rainer Schmidberger
M3
MetaMetamodell
Definiert als UML
Infrastructure
Meta Object Facility,
MOF
Class
<<instanceof>
14.10.2009
M2
Metamodell
Definiert als UML
Superstructure
<<instanceof>
Attribute
Class
<<instanceof>
Programmentwicklung,
Vorlesungsskript UML
M1
Modell
Domänenmodell
in UML
<<instanceof>
<<instanceof>
Firma
Person
Bezeichnung
Name
Vorname
Gehalt
<<instanceof>
M0
Association
<<instanceof>
<<instanceof>
Objekte der
Applikation
se
Folie 40
‰ In der Praxis werden die verschiedenen Diagramme
unterschiedlich stark eingesetzt
‰ Werkzeuge spielen eine wichtige Rolle
‰ Nicht alle Werkzeuge unterstützen die UML 2.0
‰ Praktisch niemand kennt und nutzt die UML vollständig
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Anmerkungen zur UML
se
Folie 41
© 2004-2010, Rainer Schmidberger
Use Cases
Rainer Schmidberger
[email protected]
se
‰ Formalisierung und Beschreibung der funktionalen
Anforderungen
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Nutzen von Use Cases
se
Quelle: Alan Chapman
Folie 43
Definition
© 2004-2010, Rainer Schmidberger
‰ "A use case is a piece of functionality in the system
that gives a user a result of value"
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
‰ "All the use cases together make up the use case
model, 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"
se
Aus "The Unified Software Development Process", Ivar
Jacobson u.a., Addison-Wesley, 1999
Folie 44
‰ Ein Use Case
14.10.2009
© 2004-2010, Rainer Schmidberger
Use Case (1)
Ö 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
Akteur: Nutzer des Systems
Use Case
Programmentwicklung,
Vorlesungsskript UML
Verbindungen abfragen
se
Fahrgast
Beziehung: der Akteur
benutzt einen Use Case
System
Fahrkarten bestellen
Fahrscheinsystem
Folie 45
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Use Case (2)
‰ Use Cases beschreiben aus Anwendersicht den
Systemnutzen
‰ Einfaches Kommunikationsmedium mit "Stakeholdern"
(Anwendern, Kunden, Management, ...)
‰ Die Gesamtmenge der Use Cases beschreibt das
System, das an der Systemschnittstelle beobachtet
werden kann.
‰ Abgrenzung zur Aktivität: ein Use Case umfasst viele
Aktivitäten
se
Folie 46
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Use Case (3)
‰ Bezeichnung durch Substantiv + Verb (Infinitiv) z.B.
ÖEinstellung durchführen
ÖPrämie berechnen, usw.
‰ (Geschäfts-)Prozesse können als Use Case modelliert
werden
‰ Systemgrenzen werden festgelegt
‰ Systemnutzer (=Akteure) werden festgelegt
‰ Einsatzmöglichkeiten: Ist-Analyse, Soll-Analyse und
Spezifikation
‰ Achtung: ein Use Case ist kein Softwaremodul!
‰ Strukturierung der funktionalen Anforderungen
se
Folie 47
© 2004-2010, Rainer Schmidberger
Use-Case-Diagramm
‰ dient der Visualisierung und als Übersicht über die
vorhandenen Use Cases und Akteure
‰ enthält die Beziehungen zwischen Akteuren und Use
Cases
‰ Tipp: mehrere Use-Case-Diagramme erstellen!
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
ÖJedes Use-Case-Diagramm sollte einen wichtigen Aspekt
des Systems wiederspiegeln!
se
Folie 48
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Akteure
Akteure sind
MA Verwaltung
‰ Rollen (Personen oder Systeme, z.B. Benutzer, Rechner, externe
Datenbanken, auch Ereignisse oder Termine)
ÖAkteure werden im Begriffslexikon beschrieben
ÖAkteure werden im Use-Case-Diagramm eingezeichnet
ÖAkteure werden im Diagramm durch Assoziationen mit den Use Cases
verbunden, an denen sie beteiligt sind
‰ selbst nicht Teil des zu beschreibenden Systems,
‰ direkt mit einem oder mehreren Use Cases verbunden und
kommunizieren mit diesem
‰ in der Regel aktiv, das heißt sie können Vorgänge anstoßen
Achtung: es werden nur die Akteure mit einem Use Case
verbunden, die an der Interaktion mit dem System selbst
teilnehmen!
se
Folie 49
Include-Beziehung
© 2004-2010, Rainer Schmidberger
Use Case A fügt an einer
bestimmten Stelle Use Case B ein
Use Case A
<<include>>
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
Use Case B
‰ Use Case A fügt Use Case B an einer
gekennzeichneten Stelle ein
‰ Use Case B kennt Use Case A nicht
‰ Mehrfach vorkommende Use-Case-Abschnitte
werden nur einmal beschrieben
‰ Tipp: man sollte diese Dekomposition nicht
übertreiben! Jeder Use Case soll erkennbaren Nutzen
behalten.
se
Folie 50
14.10.2009
© 2004-2010, Rainer Schmidberger
Extend und Generalisierung
Es gibt weitere Beziehungen, die vorsichtig verwendet
<<extend>>
werden sollten:
A
B
‰ extend-Beziehung: B erweitert A an einer dort
festgelegten Stelle
‰ Generalisierungsbeziehung: B ist eine spezielle
Ausprägung von A
‰ Beispiele:
Programmentwicklung,
Vorlesungsskript UML
Benutzer validieren
se
Auslandsstudent Immatrikulieren
Fremdwährung abheben
<<extend>>
<<extend>>
Kennwort prüfen
Biometriemerkmale prüfen
Geld abheben
Student Immatrukulieren
Achtung: die Semantik beider
Beziehungen ist nicht scharf spezifiziert!
Folie 51
© 2004-2010, Rainer Schmidberger
Beispiel: Bankomat
Fremdwährung abheben
<<extend>>
14.10.2009
<<include>>
Geld abheben
Legitimierung prüfen
Programmentwicklung,
Vorlesungsskript UML
Bankkunde
<<include>>
Kontostand abfragen
se
Folie 52
Beispiel: Seminarbuchungssystem
14.10.2009
© 2004-2010, Rainer Schmidberger
uc: Seminarbuchungss.
Registrierung via Group Directory,
HR-Online
Surfer
<<include>>
Kann soviel
wie...
Katalogfunktionen
Programmentwicklung,
Vorlesungsskript UML
<<include>>
Produktdaten anzeigen
Sowohl das Produkt, als
auch der MA muss
hierfür freigegeben sein
Eigene Bildungshistorie anzeigen
Selbst-Buchung
Mitarbeiter
Kann soviel
wie...
Termin buchen
se
Produkt suchen
Vorgesetzter
Auf anderen Termin Umbuchen
Mitarbeiter buchen
Buchung stornieren
Ersatzteilnehmer buchen
Reports zu MA-Buchungen anzeigen
Folie 53
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Use-Case-Beschreibung (1)
Beschreibung erfolgt
‰ in verständlicher Sprache
‰ mit konkretem Nutzen für
den initiierenden Akteur
‰ präzise und eindeutig
‰ mit überprüfbaren
Ergebnissen
‰ mit definierten Begriffen
(Begriffslexikon)
‰ semi-formal (strukturiert)
‰ einheitlich
Use Case Dokumentation
Name:
Akteure:
Seminar buchen
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
Folie 54
‰ Name des Use Case
‰ Beteiligte Akteure
‰ Vorbedingung
ÖVoraussetzungen vor der Ausführung des Use Case
‰ Regulärer Ablauf
ÖBeschreibung einzelner Aktionen innerhalb des Use Case in
Form verbaler Szenarien (Einzelaktivitäten)
ÖEvtl. Diagramme und Entscheidungstabellen
ÖBegriffe sorgfältig verwenden (Begriffslexikon)
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Use-Case-Beschreibung (2)
‰ Nachbedingung
ÖZusicherungen, die nach Use-Case-Ende eintreffen müssen
‰ Alternative Abläufe
se
ÖFehlerfälle
ÖSonderfälle
Folie 55
Use Case Beschreibung (3)
© 2004-2010, Rainer Schmidberger
‰ Name des Use Case
ÖPersonalausweis beantragen
‰ Vorbedingung
ÖAntragsteller hat sich legitimiert und entsprechende Aktion
angstoßen. Es handelt sich nicht um einen Erstantrag
‰ Regulärer Ablauf
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
ÖBerechtigungen 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
‰ Nachbedingung
ÖDer Antragsteller hat jetzt den Status "beantragt", weitere Anträge
können solange nicht entgegengenommen werden
‰ Alternative Abläufe
se
ÖErstanträge werden über use Case ABC behandelt
Folie 56
‰ Beschreibt (grafisch) den Ablauf eines Use Case
Aktivität
Verbindungsstart
eingeben
14.10.2009
© 2004-2010, Rainer Schmidberger
Beschreibung durch Aktivitätsdiagramm
Entscheidung
Verbindungsziel
eingeben
Programmentwicklung,
Vorlesungsskript UML
Verbindungen abfragen
se
Eingaben
sind gültig
Weg
berechnen
Mind. eine Verbindung
wurde gefunden
nein
ja
Fehlerseite
Verbindungen
anzeigen
Folie 57
‰ Beschreibt (grafisch) die beteiligten Instanzen und den
zeitlichen Ablauf eines Use Case
: Fahrgast
:
Reservierungssystem
:
Bestellsystem
:
Abrechnungssystem
1: buchung( )
14.10.2009
© 2004-2010, Rainer Schmidberger
Beschreibung durch Sequenzdiagramm
3: berechnen( )
Programmentwicklung,
Vorlesungsskript UML
2: reservieren( )
se
Folie 58
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Vor- und Nachteile
Vorteile
‰ Einfache Darstellung, leicht verständlich
‰ Use Cases sind innerhalb der UML klar beschrieben
‰ Es sind (sehr gute) Werkzeuge verfügbar
‰ Erweiterungsmöglichkeit um Aktivitätsdiagramme und
Sequenzdiagramme
‰ Greifen den verbreiteten Prozess-Gedanken auf
Nachteile
‰ Beschreibung ist nicht formalisiert
‰ Konsistenzen sind automatisch nicht prüfbar
‰ Übergang zur Modellierung der fachlichen Klassen ist
brüchig
se
Folie 59
Business Use Case
‰ Beschreibung der Fachlichkeit ohne
Berücksichtigung, welche Teile des Prozesses mit ITgestützt ablaufen und welche nicht
‰ Unterscheidung „manuell“ oder „IT-gestützt“ über
den <<stereotyp>>
<<include>>
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Business Use Case
Seminar durchführen
Namenskärtchen verteilen
Use Case
‰ Eingrenzung auf die IT-gestützten Prozesse
Ö
© 2004-2010, Rainer Schmidberger
se
Bei e-Commerce-Systemen entsprechen die Business
Use Cases den Use Cases
Folie 60
Klassen-Diagramme
Rainer Schmidberger
[email protected]
se
‰ Die Darstellung von
Klassen erfolgt als
Rechteck mit den
Bereichen
Person
Ö Klassenname
Ö Attributliste
Ö Methodenliste
Attribute
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Klassen (1)
Programmentwicklung,
Vorlesungsskript UML
Methoden
se
Folie 62
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Klassen (2)
‰ Klassenname mit stereotype
Angabe
‰ Attribute mit Datentypen
und Sichtbarkeiten und
Vorbelegungen
‰ Methoden mit Signaturen
und Sichtbarkeiten
‰ Sichtbarkeiten:
Ö public (+)
Ö protected (#)
Ö private (-)
‰ Die Datentypen sind von
der verwendeten
Programmiersprache
abhängig!
se
<<entity>>
Person
-name : String
-vorname : String
-gehalt:GeldBetrag
+setGehalt(g:GeldBetrag)
+getGehalt() : GeldBetrag
+updateGehalt()
Folie 63
Attribute
Person
-name
-vorname
#gehaltsgruppe : int = 0
+/gehalt
anzahlPersonen : int
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Berechnetes Attribut
(Derived).
Berechnungsformel ist
nicht Teil des UMLModells
‰ Klassenattribut: Attribut
steht allen Objekten
der Klasse Person nur
einmal zur Verfügung
se
Folie 64
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Methoden
‰ Signaturen werden oft
nicht angegeben
‰ Private Methoden
werden oft nicht
angegeben
‰ Klassenmethode
(Aufruf über
Klassenbezeichner,
unterstrichen)
‰ Abstrakte Methode
(wird kursiv gedruckt),
erzwingt
Implementierung in
den Kindklassen
se
Person
+setGehalt(g:GeldBetrag)
+getGehalt() : GeldBetrag
+getAnzahlPersonen() : int
+updateGehalt()
Folie 65
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Assoziationen
‰ "Beziehungen", "Verbindungen" oder
"Navigationspfade" zwischen Klassen werden als
Assoziation bezeichnet
‰ Verbindungen zwischen Objekten werden als Link
bezeichnet
‰ In der UML werden Assoziationen sehr differenziert
beschrieben
‰ Assoziationen sind logische Beziehungen, sie müssen
nicht notwendigerweise durch ein
Programmkonstrukt direkt im Code implementiert sein
se
Folie 66
Multipizität, Person ist 1
oder kein Firma-Objekt
zugeordnet
Person in der Rolle als
"Arbeitnehmer"
Person
0..1
Arbeitnehmer
0..*
arbeitet für
Firma
Arbeitgeber
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Assoziationen
se
Multipizität, Firma
sind kein, 1 oder viele
Personen-Objekte
zugeordnet
Firma in der Rolle als
"Arbeitgeber"
Name der Beziehung, wird
von links nach rechts gelesen
Folie 67
Navigierbarkeit
© 2004-2010, Rainer Schmidberger
‰ Die Pfeilrichtung zeigt die Navigierbarkeitsrichtung an.
‰ Beidseitig navigierbare Assoziationen haben aber
keine Pfeile.
‰ Nichtspezifizierte Navigierbarkeit hat ebenso keine
Pfeile
0..1
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
Person
arbeitet für
Firma
Arbeitgeber
Ö Objekte der Klasse Person "kennen" ihren Arbeitgeber,
Objekte der Klasse Firma "kennen" aber ihre Mitarbeiter
nicht.
se
Folie 68
‰ Die 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
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Multiplizität
se
Person
Auto
Arbeitnehmer
0..*
arbeitet für
0..1
Firma
Arbeitgeber
4
Rad
Folie 69
Aggregation und Komposition
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Ganzes-Teil-Assoziation
‰ Aggregierte Objekte werden von dem besitzenden Objekt
dominiert
‰ I.Allg. ist kein externer Zugriff auf aggregierte Objekte möglich
‰ Komposition: Die Lebensdauer (Instanzierung und Freigabe)
werden vom dominierenden Objekt beherrscht
Aggregation
Programmentwicklung,
Vorlesungsskript UML
Person
0..*
Adresse
0..*
StudentRolle
1
Komposition
Person
1
se
Folie 70
‰ Assoziationen selbst können über Attribute (und auch
Methoden) verfügen
‰ Die Assoziationsklasse repräsentiert die Assoziation
‰ Insbesondere bei n:m-Assoziationen werden häufig
Assoziationsklassen verwendet
schreibt
0..*
Prüfung
Student
0..*
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Assoziationsklassen (1)
se
PrüfungsTeilnahme
hatTeilgenommen : boolean
note : Note
Auffälligkeit : String
07.11.
Folie 71
Assoziationsklassen (2)
© 2004-2010, Rainer Schmidberger
‰ Eine n:m Assoziation mit Assoziationsklasse (A) ist
semantisch mit einer 1:n und m:1-Assoziation (B)
gleichzusetzen
schreibt
Student
0..*
Prüfung
0..*
14.10.2009
A
Programmentwicklung,
Vorlesungsskript UML
PrüfungsTeilnahme
B
0..*
Student
PrüfungsTeilnahme
0..*
1
1
Prüfung
se
Folie 72
‰ Bestehen mehrere Assoziationen zwischen zwei
Klassen, so werden oft rollenbeschreibende
Assoziationsklassen eingeführt
Arbeitnehmer
Person
Programmentwicklung,
Vorlesungsskript UML
se
arbeitet für
0..*
0..*
Arbeitgeber
Aktionär
investiert in
0..*
14.10.2009
© 2004-2010, Rainer Schmidberger
Umgang mit Assoziationen
Kunde
0..*
Kapitalanlage
bezieht Produkte von
0..*
Person
Firma
0..*
Lieferant
0..*
0..*
Firma
PersonRolle
rolle
Folie 73
Rekursive Assoziationen
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Assoziationen können zur selben Klasse verbunden
sein
‰ Damit 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
Programmentwicklung,
Vorlesungsskript UML
Vorgesetzter
0..1
Person
Arbeitnehmer
0..*
0..1
arbeitet für
Firma
Arbeitgeber
0..*
Mitarbeiter
se
Folie 74
‰ Attribute, die wesentlich die Rolle eines Objektes in der
Beziehung beschreiben oder überhaupt die Beziehung
erst herstellen
‰ Die qualifizierenden Attribute werden der Assoziation
nicht der Klasse zugeordnet
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Qualifizierende Attribute
se
Aufführung
aufführungsDatum: Date
SitzplatzNr : String
0..1
1
Eintrittskarte
Qualizierende
Attribute
Folie 75
Assoziationseinschränkungen
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Spezielle Regeln einer Assoziation werden als
Constraint bezeichnet
‰ Ab UML 2.0: Object Constraint Language OCL
‰ Die Darstellung erfolgt in { }
‰ Typische Beispiele sind Sichtbarkeit oder Änderbarkeit
(z.B. ordered, addOnly)
0..1
Arbeitnehmer
Person
{ordered}
Firma
arbeitet für
0..*
se
Folie 76
‰ Stellen Erweiterungen des UML-Standards dar
‰ Vergeben einem UML-Element (wie z.B. einer Klasse) ein
spezielle Ausprägung
‰ Darstellung des stereotyp in<< >> über dem
Klassennamen
‰ Häufig verwendete Stereotypen:
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Stereotypes
se
<<boundary>>
Klassen, die mit der Außenwelt kommunizieren. Sie bilden
Schnittstellen zwischen System und Umwelt
<<control>>
Klassen, die Interaktionen zwischen anderen Klassen steuern
<<entity>>
Klassen, die selbst passiv sind und keine Interaktionen
auslösen (i.Allg. zur Datenhaltung)
<<utility>>
Keine Klasse, nicht instanzierbar, kapselt globale Variablen
und Funktionen. Zur Abbildung Nicht-OO-Bibliotheken
geeignet (z.B. Mathematik-Funktionen)
Folie 77
Vererbung
© 2004-2010, Rainer Schmidberger
‰ Alle Eigenschaften (also Methoden, Attribute oder
Beziehungen) einer Klasse (Vaterklasse) werden an die
Kindklassen übertragen
‰ Die Kindklassen können weitere eigene Eigenschaften
definieren und auch ererbte Eigenschaften überschreiben
VersicherungsVertrag
14.10.2009
VersicherungsNehmer
AbschlussDatum
Programmentwicklung,
Vorlesungsskript UML
Generalisierung
Spezialisierung
SachVersicherungsVertrag
LebenVersicherungsVertrag
JahresBeitrag
VersicherterGegenstand
RisikoLVAnteil
BegünstigtePerson
Laufzeit
se
Folie 78
1
Programmentwicklung,
Vorlesungsskript UML
SachVersicherungsVertrag
‰
‰
se
VersicherungsNehmer
AbschlussDatum
‰
Zunächst entsteht aus den
bekannten Anforderungen
eine konkrete Klasse.
Motivation zur Vererbung
besteht nicht
3
VersicherungsVertrag
2
VersicherungsNehmer
AbschlussDatum
JahresBeitrag
VersicherterGegenstand
14.10.2009
© 2004-2010, Rainer Schmidberger
Entstehung von Vererbung
SachVersicherungsVertrag
VersicherungsNehmer
AbschlussDatum
JahresBeitrag
VersicherterGegenstand
VersicherungsVertrag
VersicherungsNehmer
AbschlußDatum
‰
‰
‰
Es wird eine
mögliche Wiederverwendbarkeit
erkennbar
Allgemeingültige
Merkmale werden
generalisiert
Eine weitere Klasse nutzt die
zuvor stattgefundene
Generalisierung
Dieser Vorgang wird nun als
Spezialisierung bezeichnet
SachVersicherungsVertrag
LebenVersicherungsVertrag
JahresBeitrag
VersicherterGegenstand
RisikoLVAnteil
BegünstigtePerson
Laufzeit
Folie 79
Vererbung vs. Aggregation
© 2004-2010, Rainer Schmidberger
‰ Realisierung einer "ist-ein" Beziehung im Gegensatz
zu einer "hat-ein" Beziehung der Assoziation
Ö Ein LV-Vertrag ist einer Versicherungsvertrag
Ö Ein Auto hat Räder
14.10.2009
‰ Vererbung im fachlichen Kontext ist selten sinnvoll
‰ Alternative zur Vererbung ist eine Aggregation
A
B
Person
Programmentwicklung,
Vorlesungsskript UML
Person
Student
se
0..1
Student
‰ Ein Student ist eine Person (?)
‰ Wie wird mit dem Student in (A) verfahren,
wenn das Studium beendet wurde?
Folie 80
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Vererbung abstrakter Methoden
‰ Wird eine abstrakte Methode vererbt, wird deren
Implementierung in den Kindklassen erzwungen
‰ Vorteil: lässt sich auch keine generische Implementierung festlegen, so ist doch ein gemeinsames
Interface erzwingbar
‰
PersistentesObject
‰
se
Die Klasse Person
implementiert
die abstrakte
Methode
Store()
getStoreSQL() : String
Person
getStoreSQL() : String
‰
VersicherungsVertrag
Eine abstrakte
Methode erzwingt
die Implementierung
in den Kindklassen
Klassen mit
abstrakten
Methoden können
selbst keine Objekte
instanzieren
getStoreSQL() : String
Folie 81
Interface
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Ein Interface ist einer Klasse mit ausschließlich
abstrakten Methoden gleichzusetzen
‰ Interfaces werden "realisiert"
‰ Eine Klasse kann viele Interfaces realisieren
‰ Interfaces definieren Methoden, die von den
Realisierungen implementiert werden müssen
Label-Darstellung:
Icon-Darstellung:
Programmentwicklung,
Vorlesungsskript UML
Veranstaltung
datumVon : Date
datumBis : Date
bezeichnung : String
preis : Waehrungsbetrag
Veranstaltung
datumVon : Date
datumBis : Date
bezeichnung : String
preis : Waehrungsbetrag
<<Interface>>
PersistentesObjekt
Store()
Delete()
Load()
hatPlaetzeFrei()
einbuchen()
Store()
Delete()
Load()
PersistentesObjek
t
hatPlaetzeFrei()
einbuchen()
Store()
Delete()
Load()
Store()
Delete()
Load()
se
Folie 82
© 2004-2010, Rainer Schmidberger
Beispiel eines Klassendiagramms (1)
0..n
Singledate
Begin : Date
End : Date
Objectives : Memo
Content : Memo
AdditionalInformation : Memo
Folder
Field : Text (30)
OrderNo : Integer
Title : Text (100)
VHasChildrenProduct : Boolean
VHasChildrenFolder : Boolean
Description : Memo
ExportControl : Boolean
+Logisticprofile
1
14.10.2009
+module0..n
Programmentwicklung,
Vorlesungsskript UML
0..n
0..n
TrainingProduct
ID : Text (30)
Title : Text (100)
DeliveryMode : Selection
TrainingSection : Selection
CourseType : Selection
ExportControl : Integer
NewUntil : Date
0..n ValidUntil : Date
ModuleOnly : Boolean
MultipleRegistration : Boolean
+Copy
VHasEvents : Boolean
RegistrationMode : Selection
VSumPreRegistration : Integer
ReleaseState : Selection
Extern : Boolean
Comment : Memo
RefreshCycle : Number
RefreshCycleUnit : Selection
IgnoreTimeOverlap : Integer
NumberField1 : Integer
NumberField2 : Integer
NumberField3 : Integer
NumberField4 : Integer
0..1
NumberField5 : Number
NumberField6 : Number
NumberField7 : Number
NumberField8 : Number
+Origin
PlanningTimeFrom : Date
PlanningTimeTo : Date
1
+LogisticprofileProduct
0..n
0..1
+ProductPreRegistration
+Predecessor
0..n
+Successor
0..n
0..n
TrainingProductPredecessor
NecessaryType : Selection
PositionX : Integer
PositionY : Integer
Role : Selection
NecessaryLevel : Number
Trainer
Contract : Selection
ContractComment : Text (100)
ContractDate : Date
Comment : Memo
TrainerType : Selection
DefaultHoursPerYear : Integer
Organizer
Initial : Text (30)
LogonName : Text (30)
Password : Text (15)
ActiveUntil : Date
PasswordValidUntil : Date
DbPasswort : Text (30)
FileNameImage : Text (50)
Type : Integer
AssignedCostCenters : Memo
VName1 : Text (50)
VName2 : Text (50)
VOrganizationName2 : Text (50)
EcadiaPassword : Text (30)
0..*
0..1
1
TrainerAssignment
MainTrainer : Integer
State : Integer
HotelNeed : Selection
InvitationDate : Date
TrainerRole : Selection
0..n
ResourceAssignment
DateFrom : Date
DateTo : Date
InterpretTimeframe : Selection
HourFrom : Date
HourTo : Date
FullDay : Boolean
AssignmentText : Text (100)
Comment : Text (100)
OccupancyMode : Selection
ReservationValidUntil : Date
ExternalComment : Memo
InternalComment : Memo
DifferentDuration : Number
DifferentDurationUnit : Integer
OccupancyReason : Integer
RoomAssignment
RoomRole : Selection
SeatingOrder : Selection
0..n
0..n
Enroll
RegistrationDate : Date
CancellationDate : Date
Kostenpflichtig : Boolean
State : Selection
Attendance : Integer
Comment : Memo
ValidUntil : Date
Certification : Boolean
InviatationSent : Selection
InvitationSentDate : Date
HotelNeed : Selection
Priority : Integer
OrderNo : Integer
CommentForIncompleteAttendance : Memo
0..n DifferentAttendanceDateFrom : Date
DifferentAttendanceDateTo : Date
PreferedAttendanceFrom : Date
+PreRegistration
PrefferedAttendanceTo : Date
OriginType : Selection
QualificationReached : Selection
LearningResult : Selection
LearningResultCommentBemerkung : Memo
VParticipantID : Text (30)
+Parent 0..1 VParticipantName1 : Text (50)
VParticipantName2 : Text (50)
VParticipantPhone : Text (30)
VParticipantOrgName1 : Text (50)
VParticipantOrgName2 : Text (50)
VParticipantEMail : Text (100)
VHasHotelbooking : Boolean
VEventDateFrom : Date
VEventDateTo : Date
0..n
VProductID : Text (30)
VProductTitle : Text (100)
DifferentDuration : Number
DifferentDurationUnit : Integer
VContactPersonr : Text (100)
CancellationReason : Selection
+Child
DesiredLanguage : Selection
ShowInTrainingHistory : Boolean
TextField0 : Text (100)
TextField1 : Text (100)
TextField2 : Text (100)
TextField3 : Text (100)
1
0..n
OrganizerGroup
Name : Text (100)
DefaultCostCenter : Text (50)
DefaultContingenteKey : Text (50)
Initial : Text (30)
ContingenteKey : Text (30)
0..1
PartnerProperty
name : Text (100)
description : Memo
Type : Selection
group : Selection
hasValues : Boolean
valueSelection : Selection
expiry : Integer
expiryUnit : Selection
rangeFrom : Integer
rangeTo : Integer
+organizerAdmin
+contactPerson
1
0..n
0..n
+groupMember
1
0..n
Room
RoomName : Text (50)
AmountSeats : Integer
RoomID : Text (30)
SuitableForHandicap : Integer
Floor : Selection
Size : Integer
DefaultSeatingOrder : Selection
AdditionalInformation : Memo
Phone : Text (50)
Resource
CheckTimeoverlapping : Boolean
DefaultBookingType : Selection
+TrainingRoom
0..n
0..n
+trainingProgram
se
1
Event
ID : Text (30)
Semester : Text (50)
DateFrom : Date
DateTo : Date
HourFrom : Date
HourTo : Date
HourFromFirstDay : Date
HourToLastDay : Date
SingledatesText : Text (50)
Status : Integer
CancelationReason : Selection
Comment : Memo
ExportControl : Integer
MaxEnroll : Integer
MinEnroll : Integer
VSumEnroll : Integer
VSumWaitingList : Integer
TextBlock1 : Memo
TextBlock2 : Memo
TextBlock3 : Memo
VSumNonShown : Integer
VSumInvited : Integer
VSumTempEnroll : Integer
VSumAttendedParticular : Integer
VSumCancellationParticipant : Integer
VSumWaitinglistExpicit : Integer
VSumCancellationOrganizer : Integer
VSumInterested : Integer
VSumAppeard : Integer
0..n VRooms : Text (50)
VTrainers : Text (50)
VSumAttended : Integer
Duration : Number
DurationUnit : Integer
DeadlineDays : Integer
WebInfo : Memo
VProductTitle : Text (100)
0..* VProductID : Text (30)
TitleDiffering : Text (100)
Language : Selection
VContactPerson : Text (100)
inSingledates : Boolean
NumberField7 : Number
NumberField8 : Number
InviteBeforeEvent : Integer
ProceedOnDays : Selection
NumberField1 : Integer
NumberField2 : Integer
NumberField3 : Integer
NumberField4 : Integer
NumberField5 : Number
NumberField6 : Number
0..1
0..1
TrainingProgram
EventNote
creationDate : Date
content : Memo
accessMode : Selection
publishingMode : Selection
0..1
0..n
ExplorerShortcut
Type : Selection
OrderNo : Integer
PositionX : Integer
PositionY : Integer
1
0..n
0..n
0..n
+parent
TrainingProductContent
Title : Text (100)
Targetgroup : Memo
Prerequisites : Memo
Content : Memo
Targets : Memo
AdditionalInformation : Memo
Methodology : Memo
Introduction : Memo
Facilitator : Memo
TechnicalRequirements : Memo
Language : Selection
CommentDuration : Text (100)
CommentParticipantAmount : Text (100)
CommentPrice : Text (100)
ValidUntil : Date
ResourceSingledateAssignment
1
+child
TrainingProgramEvent
Partner
Name1 : Text (50)
Name2 : Text (50)
PartnerID : Text (30)
1
Status
: Selection
CostCostCenter : Text (100)
IncomeCostCenter : Text (100)
Comment : Memo
DebitorID : Text (15)
CreditorID : Text (15)
VATFlag : Boolean
AccountigProcedure : Selection
DefaultCurrency : Selection
Extern : Boolean
Type : Selection
ContraktID : Text (30)
VAddressStreet : Text (100)
VAddressCountry : Text (6)
VAddressZip : Text (30)
VAddressCity : Text (100)
VPhone : Text (30)
VFax : Text (30)
VEMail : Text (100)
VIsTrainer : Boolean
VIsOrganizer : Boolean
VIsLocation : Boolean
VIsHotel : Boolean
VOrganizationName1 : Text (50)
VOrganizationName2 : Text (50)
VContactPerson : Text (100)
DefaultLanguage : Selection
ContingenteKey : Text (50)
FormOfAddress : Selection
JobTitle : Text (100)
TextField1 : Text (100)
TextField2 : Text (100)
TextField3 : Text (100)
1TextField4 : Text (100)
TextField5 : Text (100)
TextField6 : Text (100)
TextField7 : Text (100)
TextField8 : Text (100)
TextField9 : Text (100)
NumberField1 : Integer
NumberField2 : Integer
+Participant NumberField3 : Integer
NumberField4 : Integer
NumberField5 : Number
NumberField6 : Number
NumberField7 : Number
NumberField8 : Number
1
0..n
0..n
0..1
1
0..n
0..n
PartnerPropertyAssignment
value : Integer
comment : Memo
status : Selection
partnerPropertyType : Selection
creationDate : Date
selection1 : Selection
selection2 : Selection
Address
AddressField1 : 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 : Selection
ValidUntil : Date
0..n
1
0..n
Telecom
Phone : Text (30)
Fax : Text (30)
MobilePhone : Text (30)
EMail : Text (100)
HomePage : Text (100)
Type : Selection
0..n
0..n
+EventLocation 0..1
1
0..1
ExternalEnroll
ContractNo : Text (50)
Comment : Memo
ConfirmationBySupplier : Date
QualityOfTrainingComment : Memo
TrainingDuartion : Number
SupplierProductID : Text (30)
TrainingTitle : Text (100)
State : Integer
DateFrom : Date
DateTo : Date
LocationName : Text (50)
Location
Description : Memo
TravelInfoPublic : Memo
TravelInfoCar : Memo
MapFileName : Text (50)
AdditionalServices : Memo
0..1
0..n
1
0..1
1
+ExternalSupplier
Organization
VHasChilds : Boolean
+Child
0..n
+Member
Person
DayOfBirth : Date
EntryDate : Date
0..n ExitDate : Date
Funktion : Selection
EducationState : Selection
PlaceOfBirth : Text (50)
0..1
+Parent
TrainingProgramAssignment
OrderNo : Integer
IdealBeginWeekday : Integer
MinDistanceToPredecessor : Integer
MaxDistanceToPredecessor : Integer
BookingType : Selection
ColorInTimeTable : Selection
Folie 83
© 2004-2010, Rainer Schmidberger
Beispiel eines Klassendiagramms (2)
Room
RoomName : Text (50)
AmountSeats : Integer
RoomID : Text (30)
SuitableForHandicap : Integer
Floor : Selection
Size : Integer
DefaultSeatingOrder : Selection
AdditionalInformation : Memo
Phone : Text (50)
contains
0..n
+TrainingRoom
0..n
0..n
contains
0..n
EquipmentAssignment
amount : Integer
day : Integer
daySection : Selection
amountInterpretation : Selection
deliveryBy : Selection
neccessity : Selection
roomRole : Selection
comment : Memo
0..n
Equipment
Name : Text (50)
Description : Memo
SoftwareKey : Text (50)
Type : Selection
1
0..n
14.10.2009
Location
Description : Memo
TravelInfoPublic : Memo
TravelInfoCar : Memo
MapFileName : Text (50)
AdditionalServices : Memo
0..n
+EventLocation
requires
0..1
Programmentwicklung,
Vorlesungsskript UML
+Responsible
0..1
Organizer
+OrganizerContent Initial : Text (30)
LogonName : Text (30)
Password : Text (15)
ActiveUntil : Date
0..1
PasswordValidUntil : Date
DbPasswort : Text (30)
+OrganizerEvent
FileNameImage : Text (50)
Type : Integer
0..1
AssignedCostCenters : Memo
+OrganizerLogistic
VName1 : Text (50)
0..1
VName2 : Text (50)
VOrganizationName2 : Text (50)
EcadiaPassword : Text (30)
0..n
Event
0..n
0..1
0..n
0..n
0..n
se
Folie 84
‰ Interaktionspunkt zwischen einem Classifier (Klasse,
Paket, Komponente, ...) und seiner Umgebung
Ö Gruppierung einer beliebigen Anzahl von Interfaces zu einem
Dienst, der einen bestimmten Dienst/ Zweck verfolgt
Ö Kapselung des Classifiers gegenüber seiner Umgebung
Ö Für ein- und ausgehende Signale
‰ Sichtbarkeit
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Port
se
Ö public für eingehende Nachrichten
Ö protected, private für interne Nachrichtenverteilung
Eingehendes
Interface (required)
Ausgehendes Interface
(provided)
Port
(protected)
Port (public)
<<Component>>
Komponente A
Folie 85
‰ Modelliert die Software-Architektur mit Bibliotheken,
Komponenten, Datenbanken, usw.
Komponente
Verbindungen
14.10.2009
© 2004-2010, Rainer Schmidberger
Komponenten Diagramm
<<Component>>
<<Component>>
GUISteuerung
Verbindungsrechner
Programmentwicklung,
Vorlesungsskript UML
Konnektor
se
<<Component>>
BenutzerGUI
Anschlüsse
Interface
Port
<<Component>>
Abhängigkeiten
Fahrplandatenbank
Folie 86
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Komponenten Diagramm (2)
se
<<Component>>
Komponente 1
Konnektor
Interface 1
<<Component>>
Komponente 2
Interface
Port
‰ Komponente: Abgegrenzter
Teil des Gesamtsystems
‰ Konnektor (=required
Interface): eine von der
Komponente benötigte
Schnittstelle
‰ Interface (=provided
Interface): eine von der
Komponente bereitgestellte
Schnitttstelle
‰ Port: Interaktionspunkt, kann
mehrere (provided)
Interfaces enthalten
Folie 87
‰ Siehe UML Superstructure, Kapitel 8
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML Spezifikation zu Komponente
se
Folie 88
‰ Ab UML 2.0, Composite Structure
‰ „Kontext“-bezogenes Klassen-, Objekt oder
Komponentendiagramm
‰ Zeigt eine „Ausprägung“ oder eine bestimmte
Konfiguration
14.10.2009
© 2004-2010, Rainer Schmidberger
Kompositions-Struktur-Diagramm (1)
Abrechnung
Kollaborationstyp
Programmentwicklung,
Vorlesungsskript UML
fahrgast : Person
se
: Kreditkarte
Folie 89
‰ Modelliert eine „Teil von“-Beziehung, ähnlich wie bei der
Aggregation
‰ Die „Teile“ können über definierte Schnittstellen (Ports)
mit der Umgebung kommunizieren
Person
14.10.2009
© 2004-2010, Rainer Schmidberger
Kompositions-Struktur-Diagramm (2)
Programmentwicklung,
Vorlesungsskript UML
: Adresse
„Teile“ werden zu
Attributen der
umhüllenden
Klasse
: Bankverbindung
© 2004-2010, Rainer Schmidberger
se
Folie 90
Verhaltensdiagramme
Rainer Schmidberger
[email protected]
se
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm
‰ Beschreibt einzelne, genau definierte Abläufe
‰ Dient 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 an
‰ Die Summe aller Sequenzdiagramme beschreibt das
dynamische Verhalten des Systems
‰ Botschaften werden bei der Klasse des Empfängerobjekts als Methode implementiert
se
Folie 92
‰ Beispiel: „Fahrkarte bestellen“
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm (1)
se
sd: Fahrkarte bestellen
: Fahrkarte
bestellen()
kunde: Person
: Kreditkarte
berechnePreis()
belasten(betrag)
istGueltig()
belasten(betrag)
Folie 93
‰ Alternativen
sd: Fahrkarte bestellen
: Fahrkarte
bestellen()
kunde: Person
: Kreditkarte
berechnePreis()
belasten(betrag)
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm (2)
istGueltig()
result
Programmentwicklung,
Vorlesungsskript UML
alt
[ result == true ]
belasten(betrag)
[ else ]
sperren()
se
Folie 94
‰ Schleifen
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm (3)
se
sd: Fahrkarte bestellen
: Fahrkarte
bestellen
kunde: Person
: Kreditkarte
berechnePreis
belasten(betrag)
istGueltig()
result
loop
[ restbetrag = 0 ]
belasten(betrag)
restbetrag
Folie 95
‰ Referenzen
sd: Fahrkarte bestellen
: Fahrkarte
bestellen
kunde: Person
: Kreditkarte
berechnePreis
belasten(betrag)
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm (4)
istGueltig()
result
Programmentwicklung,
Vorlesungsskript UML
belasten(betrag)
ref
belasten(betrag)
restbetrag
se
Folie 96
‰ Referenz
sd: belasten(betrag)
: Kreditkarte
...
belasten(betrag)
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Sequenzdiagramm (5)
se
Folie 97
‰ Ähnlicher Inhalt wie beim Sequenzdiagramm
‰ Bei vielen Objekten mit wenig Botschaftsfluss geeignet
3: berechnePreis( )
Reihenfolge
1: start( )
14.10.2009
© 2004-2010, Rainer Schmidberger
Kommunikationsdiagramm
: Fahrkarte
2: bestellen( )
4: belasten(Waehrungsbetrag)
: Fahrgast
: Bestellvorgang
: Person
Programmentwicklung,
Vorlesungsskript UML
Botschaft
Beteiligtes
Objekt
5: istGueltig( )
6: belasten(waehrungsbetrag)
: Kreditkarte
se
Folie 98
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Aktivitätendiagramm
‰ Aktivitätenfolge mit
Kontrollfluss
‰ Wird zur Beschreibung von
Use Cases oder Klassen
eingesetzt
‰ Wie bei
Zustandsübergängen
kann ein Ereignis je
Transition hinterlegt
werden
‰ Verzweigungen und
Zusammenführungen
se
Aktivität
Entscheidung
(Decision)
Prüfung
korrigieren
Note bewerten
5
besser als 5
Aktivität 1
Als nicht bestanden
markieren
Noten
eintragen
Aktivität 2
Synchronisation
Aktivität 3
Folie 99
‰ Vereinigung (Merge
Node)
Ö Einer der Eingänge muss
aktiv sein
14.10.2009
© 2004-2010, Rainer Schmidberger
Verzweigung / Vereinigung
‰ Verzweigung
(Decision Node)
‰ Zusammenführung (Join
Node)
Ö Alle Eingänge müssen aktiv
sein
‰ Gabelung (Fork Node)
Ö Alle Ausgänge werden aktiv
Programmentwicklung,
Vorlesungsskript UML
Ö Einer der Ausgänge
wird aktiv
se
Folie 100
‰ Start- und Endknoten
(beendet die gesamte
Aktivität)
Programmentwicklung,
Vorlesungsskript UML
(beendet den Fluss an der
entsprechenden)
‰ Sprungmarken
14.10.2009
© 2004-2010, Rainer Schmidberger
Knoten
se
Aktivität A
Aktivität A
1
1
Aktivität B
Aktivität B
Folie 101
© 2004-2010, Rainer Schmidberger
Signale im Aktivitätsdiagramm
Signal senden
Schlafen
Fernsehen
Signal empfangen
14.10.2009
7.00 Uhr
Empfang eines Zeitereignisses
Nachbar
lärmt
Programmentwicklung,
Vorlesungsskript UML
Unterbrechungsbereich
Aufstehen
Unterbrechungskante
se
Folie 102
Zeitpunkt
wählen
Programmentwicklung,
Vorlesungsskript UML
Gäste
einladen
Getränke
kalt stellen
Einkaufen
1
Essen
kochen
[Zusagen <
50%]
1
14.10.2009
© 2004-2010, Rainer Schmidberger
Verlauf einer typischen Party
se
[Zusagen >= 50%]
[Essen
verbrannt]
[Essen
OK]
Warnung
der Polizei
Feiern
Partygäste
zählen
Essen
wegwerfen
Party
abbrechen
[genug]
[>= 10% sind
noch da]
Vorräte
prüfen
[< 10% sind noch da]
Partyservice
bestellen
Bei Tankstelle
nachkaufen
Betrunken
ins Bett
fallen
[keine Vorräte mehr]
Party
beenden
Quelle: Jeckle u.a., „UML glasklar“, Hanser Verlag, 2003
Folie 103
Aktivitätsdiagramm: Partitions
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
S tudent
‰ Eine „Partitions"
veranschaulicht
den
Zuständigkeitsbereich eines
bestimmten
Objekts
‰ Werden oft
auch als
„Swimmlanes“
bezeichnet
‰ Speziell zur
Veranschaulichung von Use
Cases
Prüfungsamt
Prüfer
Prüfung
anmelden
Anmeldung auf
Prüfungsliste ergänzen
Prüfung
erstellen
Prüfung
abhalten
Prüfung
schreiben
Prüfung
korrigieren
Prüfung
abgeben
Note bewerten
besser als 5
Noten
eintragen
se
5
Als nicht bestanden
markieren
Folie 104
‰ Zeigt die Zustände und Zustandsübergänge innerhalb
eines Objektes an
‰ Elemente:
14.10.2009
© 2004-2010, Rainer Schmidberger
Zustandsautomat
Zustandsname
entry / Aktivität
exit / Aktivität
do / Aktivität
‰ Zudem können noch Trigger mit Bedingungen
festgelegt werden, die Aktivitäten auslösen
Programmentwicklung,
Vorlesungsskript UML
Trigger [Guard] / Aktivität
se
‰ Trigger: Ereignisse, die den Zustandswechsel herbeiführen
‰ Guard: Bedingung, die zum Zustandswechsel erfüllt sein muss
‰ Aktivität: Aktivität, die beim Zustandswechsel durchgeführt wird
Folie 105
‰ Zeigt die Zustände und Zustandsübergänge innerhalb
eines Objektes an
Beginn
Geld einwerfen / Anzeige aktualisieren
Geldbetrag ist
eingeworfen
14.10.2009
© 2004-2010, Rainer Schmidberger
Zustandsautomat
Geldausgabe
Taste "Abbruch" gedrückt
Zustandsübergang
Geld einwerfen / Anzeige aktualisieren
Taste "Parkschein" gedrückt / Geldeingabe sperren
Ereignis
/Aktion
Programmentwicklung,
Vorlesungsskript UML
Parkschein wird
gedruckt
Zustand
/ Alle Werte zurücksetzen
Timer T1 abgelaufen / Alle Werte zurücksetzen
Das Erreichen des EndeZustandes (final state)
führt zur Terminierung des
Objektes, dessen
Zustände hier dargestellt
werden
‰
Ende
se
Folie 106
‰ Composite state
‰ Spezialisierung von Zuständen
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Verbundzustand
Führt in den Startzustand
des Verbundzustands
Verbindung aufbauen
Abgehoben
Aufgelegt
Taste
Abheben
Alle Ereignisse
"Aufgelegt"
führen aus dem
Verbundzustand
(jedem
beliebigen
Zustand dort)
wieder heraus
se
Taste
Nummernei
ngabe
Num mer gültig
Verbindungs
aufbau
Aufgelegt
Partner belegt signalisiert
Partner
belegt
Partner frei signalisiert
Freizeichen
Partner nimmt ab
Composite state
Verbindung
Folie 107
© 2004-2010, Rainer Schmidberger
Object Constraint
Language (OCL)
Rainer Schmidberger
[email protected]
se
‰ Die Object Constraint Language ist Teil von UML 2.0
‰ OCL ist eine formale, prädikatenlogikbasierte Sprache
zur Ergänzung von UML-Modellen
‰ OCL 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 nicht
‰ Dient zur Formulierung von Zusicherungen
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL
Ö Invarianten von Klassen
Ö Vor- und Nachbedingungen von Methoden
‰ Nutzen von OCL
se
Ö Die UML-Modelle können präziser beschrieben werden
Ö Programmcode kann generiert werden
Folie 109
‰ OCL constraints werden relativ zu einem Systemzustand
S ausgewertet
‰ OCL constraints sind vom Typ Boolean; sie sind wahr
oder falsch bezüglich S
‰ OCL constraints beschränken die erlaubten
Systemzustände eines UML Klassendiagramms
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Constraints (1)
se
Folie 110
‰ Invarianten:
Ö Eine Invariante I für eine Klasse C ist ein Boolscher OCLAusdruck.
Ö 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, true
sein. n muss zum Zeitpunkt, wenn p terminiert, true sein
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Constraints (2)
se
Folie 111
‰ Der Kontext legt fest, auf welches Element sich ein OCL Constraint
bezieht.
context [ kontextInstanz : ] typeName
inv: OclAusdruck1
...
inv: OclAusdruckn
‰ Beispiel:
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Der Kontext
se
context Person
inv: self.alter > 0
self (die referenziert per
default auf die KontextInstanz)
Soll bedeuten: zu keinem
Zeitpunkt darf es ein Objekt der
Klasse Person geben, das einen
negativen Wert im Attribut alter
hat
Folie 112
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Boolean Operationen
se
Operation
Notation
Ergebnistyp
Oder | Und |
Exklusiv Oder
a or | and | xor b
Boolean
Negation
not a
Boolean
Vergleich
a=b
Boolean
Ungleichheit
a <> b
Boolean
Impliziert (wenn a
a implies b
true ist, muss auch b
true sein
Boolean
Folie 113
14.10.2009
© 2004-2010, Rainer Schmidberger
Integer/Real Operationen
Operation
Notation
Ergebnistyp
Vergleich
a = b, a<>b, a<b,
a>b, a<=b, a>=b,
Boolean
Rechnen
a+b, a-b, a*b, a/b
Integer/Real
Modulo
a.mod(b)
Integer/Real
Min, Max
a.max(b), a.min(b)
Integer/Real
Programmentwicklung,
Vorlesungsskript UML
...
se
Folie 114
‰ oclIsTypeOf (t : OclType) : Boolean
‰ oclIsKindOf (t : OclType) : Boolean
‰ oclInState (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 OclType
‰ Beispiel:
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Spezielle OCL-Operatoren
se
context Person
inv: self.oclIsTypeOf( Person ) -- ist true
inv: self.oclIsTypeOf( Firma) -- ist false
Folie 115
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Kollektionen
‰ Set(Menge), OrderdSet
‰ Bag (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}
Programmentwicklung,
Vorlesungsskript UML
‰ durch Navigation
‰ durch Aufruf von Kollektionsmethoden
‰ durch Klasse.allInstances()
se
Folie 116
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Kollektionen (Auszug)
Operator
Ergebnistyp
Beschreibung
count(objekt)
integer
Anzahl, wie oft das Objekt in der
Kollektion enthalten ist
size
integer
Anzahl d. Elemente
isEmpty
boolean
wahr, wenn Menge leer ist
notEmpty
boolean
falsch, wenn Menge leer ist
forAll(<ausdruck>)
boolean
wahr, wenn <ausdruck> für jedes
Element gilt
exists(<ausdruck>)
boolean
wahr, wenn <ausdruck> für mind.
ein Element gilt
select(<ausdruck>) Menge
Teilmenge, für die <ausdruck> gilt
includesAll
(Menge2)
wahr, wenn alle Elemente der
Menge Menge2 enthalten sind
se
boolean
Folie 117
OCL Kollektionen (2)
© 2004-2010, Rainer Schmidberger
c->forAll(objekt1, ... Objektn |
<ausdruck >)
liefert true falls <ausdruck> für
alle Elemente true ist.
14.10.2009
context Firma
inv:
self.Mitarbeiter->forAll(p1, p2 |
p1 <> p2 implies p1.Name <> p2.Name)
Programmentwicklung,
Vorlesungsskript UML
c->exists(objekt1, ... Objektn |
<ausdruck>)
liefert true falls <ausdruck> für
mindestens eines der
Elemente true ist.
context Firma
inv:
self.Mitarbeiter->exists(p | p.Gehalt > 100000)
se
Folie 118
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL - Beispiel
Person
Name
Vorname
Gehalt
Alter
Mitarbeiter
0..*
0..1
Arbeitgeber
Firma
Bezeichnung
‰ Die Mitarbeiter sind mind. 16 und max. 65 Jahre alt
‰ Jeder hat ein Gehalt > 0
se
context Firma
inv:
self.Mitarbeiter->forAll(m | m.Alter>=16 and m.Alter<=65)
self.Mitarbeiter->forAll(m | m.Gehalt >= 0)
Folie 119
OCL - Beispiel
© 2004-2010, Rainer Schmidberger
0..1
Chef
0..*
14.10.2009
Mitarbeiter
Person
Name
Vorname
Gehalt
Alter
0..1
Mitarbeiter
0..*
Arbeitgeber
Firma
Bezeichnung
Programmentwicklung,
Vorlesungsskript UML
‰ Der Chef verdient mehr als sein Mitarbeiter
context Person
inv:
self.Chef->notEmpty() implies
self.Chef.Gehalt > self.Gehalt
se
Folie 120
OCL - Beispiel
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
0..1
Chef
0..*
Mitarbeiter
Person
Name
Vorname
Gehalt
Alter
Mitarbeiter
0..*
0..1
Arbeitgeber
Firma
Bezeichnung
‰ Der Chef arbeitet bei der selben Firma wie sein Mitarbeiter
se
context Person
inv:
self.Chef->notEmpty() implies
self.Chef.Arbeitgeber = self.Arbeitgeber
Folie 121
OCL - Beispiel
© 2004-2010, Rainer Schmidberger
0..1
Chef
0..*
14.10.2009
Mitarbeiter
0..1
Mitarbeiter
Person
0..*
Name
Vorname
Gehalt
Alter
Firma
Arbeitgeber
Bezeichnung
Programmentwicklung,
Vorlesungsskript UML
‰ Es gibt mindestens einen „Oberchef“
context Firma
inv:
self.Mitarbeiter->select(Chef->isEmpty())->size >= 1
se
Folie 122
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Vor- und Nachbedingungen
se
Person
Name
Gehalt : Real
0..1
Mitarbeiter
0..*
Arbeitgeber
Firma
Bezeichnung
istPleite : Boolean
einstellen(p : Person)
context Firma::einstellen(p :
pre:
not self.istPleite and
-p.Arbeitgeber->isEmpty()
--post:
p.Arbeitgeber = self and
-p.Gehalt > p.Gehalt@pre
---
Person)
Firma ist nicht pleite
Person ist nicht bereits
anderswo beschäftigt
jetzt eingestellt
Stellenwechsel mit
Gehaltserhöhung
Folie 123
‰ Um auszudrücken, dass eine „Botschaft“ versendet
wurde, dient der hasSent (‘^’) Operator:
context Firma::einstellen(p : Person)
post: p^setArbeitgeber(self)
‰ Bei unspezifizierten Parametern:
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Messages
Programmentwicklung,
Vorlesungsskript UML
context Subject::hasChanged()
post: observer^update(? : Integer, ? : Integer))
‰ Die Menge der Aufrufe einer Methode an einen
Empfänger wird über ^^ ausgedrückt
se
Folie 124
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Werkzeuge
se
Folie 125
‰ http://www.omg.org/technology/documents/modeling
_spec_catalog.htm
‰ Jos Warmer, Anneke Kleppe, „The Object Constraint
Language“, second edition, Addison-Wesley, 2003.
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
OCL Literatur
se
Folie 126
Trainer
+assistenzTrainer
14.10.2009
© 2004-2010, Rainer Schmidberger
Übung
1
0..*
+chefTrainer
Verein
vereinsName : String
+arbeitgeber
1
+gast
+mitarbeiter 11..*
Programmentwicklung,
Vorlesungsskript UML
Spieler
se
Spiel
austragungsort : String
austragungsDatum : Date
istVerletzt : Boolean
istTorwart : Boolean
+torwart
+heim
0..1
Aufstellung
1
+feldspieler
auswechseln(spielerRein : Spieler, spielerRaus : Spieler)
10
0..1
Folie 127
‰ Jeder Verein hat mindestens einen Cheftrainer
‰ Kein Spieler einer Aufstellung ist verletzt
‰ Alle Spieler einer Aufstellung arbeiten beim selben
Verein
‰ Vor und Nachbedingung
14.10.2009
© 2004-2010, Rainer Schmidberger
Aufgabe
Programmentwicklung,
Vorlesungsskript UML
Ö auswechseln
se
Folie 128
Übung a:
context Verein
inv: not self.chefTrainer->isEmpty()
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Jeder Verein hat mindestens einen Cheftrainer
se
Folie 129
Übung b:
© 2004-2010, Rainer Schmidberger
‰ Kein Spieler der Aufstellung ist verletzt
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
context Aufstellung
inv: self.feldSpieler->Select(istVerletzt)->isempty()
inv: not self.torwart.istVerletzt
se
Folie 130
Übung c:
context Aufstellung
inv: self.feldSpieler->forAll(s1, s2 |
s1.arbeitgeber = s2.arbeitgeber)
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Alle Spieler einer Aufstellung arbeiten beim selben Verein
se
Folie 131
Übung d:
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
‰ Auswechslung
context Aufstellung::auswechseln(spielerRein : Spieler,
spielerRaus : Spieler)
pre:
self.feldspieler->exists(spielerRaus) and
not self.feldspieler->exists(spielerRein) and
not spielerRein.istVerletzt
post:
not self.feldspieler->exists(spielerRaus) and
self.feldspieler->exists(spielerRein)
© 2004-2010, Rainer Schmidberger
se
Folie 132
Model Driven
Architecture MDA
Rainer Schmidberger
[email protected]
se
© 2004-2010, Rainer Schmidberger
Modelle im Entwicklungsprozess
Nur Code
CodeGenerierung
14.10.2009
Modell
Programmentwicklung,
Vorlesungsskript UML
generieren
Code
se
Code
„Round Cycle“
Modell
generieren
Ausführbares
Modell
Modell
ReverseEngineering
Code
Folie 134
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
MDA
se
‰ www.omg.org/mda
‰ Modelle sind zentrales Element des
Entwicklungsprozesses
‰ Grundgedanke 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 Modelle
‰ Viele Werkzeuge werden angeboten
Folie 135
‰ UML-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 for
the handling of test artifacts or in an integrated manner [...]
‰ UML Profile for Systems Engineering (SysML)
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
UML-Profile
Ö [...] 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)
‰ Weitere
Ö UML Profile for Schedulability, Performance and Time
Ö UML Profile for System on a Chip (SoC)
Ö UML Profile for Enterprise Application Integration (EAI)
se
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Folie 136
se
ACM, Alex E. Bell, Death by UML Fever, Queue, v.2 n.1, March 2004
Folie 137
Programmentwicklung,
Vorlesungsskript UML
14.10.2009
© 2004-2010, Rainer Schmidberger
Was UML nicht modellieren kann ...
‰
‰
‰
‰
‰
‰
‰
‰
‰
‰
‰
se
Projektplan, Arbeitspakete, Rollen, Aktivitäten
Personalplanung
Budget
Nichtfunktionale Anforderungen (z.B. Stabilität,
Wartbarkeit, Performance, Qualität, ...)
Relationales Datenmodell (ER-Diagramm)
Testplan, Testfälle, Testbericht
Risiken, Qualitätssicherung
Begriffslexikon (Glossar)
GUI-Entwürfe
Configuration Management
...
Folie 138

Documentos relacionados