Einführung in die Unified Modeling Language · se Programmentwicklung, Vorlesungsskript UML...

Post on 01-Oct-2018

218 views 0 download

Transcript of Einführung in die Unified Modeling Language · se Programmentwicklung, Vorlesungsskript UML...

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