Einführung in OCL - Www-st.inf.tu-dresden.de

st.inf.tu.dresden.de

Einführung in OCL - Www-st.inf.tu-dresden.de

Fakultät Informatik, Institut SMT, Lehrstuhl Softwaretechnologie

<strong>E<strong>instrong>führungstrong> <strong>instrong> <strong>OCLstrong>

(Object Constra<strong>instrong>t Language)

Dr Dr. Birgit Demuth


Rules and models destroy genius and art.

William Hazlitt

English writer, 1778 - 1830

Dr. Birgit Demuth SWT II, SS 2009 2


Was wollen wir lernen?

• <strong>E<strong>instrong>führungstrong> <strong>instrong> die Thematik (Vertragsmodell,

Zusicherungen, Überblick <strong>OCLstrong>, Literaturquellen)

• Sprachkonzepte und „<strong>OCLstrong> <strong>OCLstrong> by Example“

• Anwendungsfälle für <strong>OCLstrong>

• Aktuelle <strong>OCLstrong> Tools

Dr. Birgit Demuth SWT II, SS 2009 3


Theoretische Grundlagen

• Hoare-Tripel { P } S { Q } [Hoare, 1969], z.B.

{x=y} y:=y-x+1 {y=1}

• Design by Contract (Vertragsmodell) [Meyer, 1997],

Übertragung auf Klassen und Methoden

Dr. Birgit Demuth SWT II, SS 2009 4


Softwarepionier C.A.R. Hoare

Software-Pioniere,

sd&m-Konferenz 2001 <strong>instrong> Bonn

"What a wonderful set of resources!

Congratulations on assembl<strong>instrong>g this marvelous collection.„

Grady Booch

www.sdm.de/de/publikationen/konferenzen/softwarepioniere2001/

Dr. Birgit Demuth SWT II, SS 2009 5


Zusicherungen (defensive Programmierung)

• Vorbed<strong>instrong>gung:

– muss die Kundenklasse e<strong>instrong>halten

• Nachbed<strong>instrong>gung:

– garantiert die Anbieterklasse

• Klassen<strong>instrong>variante:

– muss von allen Methoden der Anbieterklasse

e<strong>instrong>gehalten werden (vor und nach jeder

Methodenausführung) g

– gilt während der gesamten Lebensdauer der

Objekte der Klasse

Dr. Birgit Demuth SWT II, SS 2009 6


Formulierung von Zusicherungen

• Modellbasiert:

– <strong>OCLstrong>

• In Programmiersprachen:

– EIFFEL

– JASS (Java (Ja a with ith ASSertions)

ASSe tions)

– JML (Java Model<strong>instrong>g Language)

– Java (assert)

Dr. Birgit Demuth SWT II, SS 2009 7


<strong>OCLstrong> (Object Constra<strong>instrong>t Language)

• ergänzt die Unified Model<strong>instrong>g Language (UML)

• formale Sprache für die Def<strong>instrong>ition von Constra<strong>instrong>ts

(Zusicherungen) und Anfragen auf UML-Modellen

standardisiert (OMG)

• ddeklarativ kl

• seiteneffektfrei

• fügt graphischen (UML-)Modellen (UML )Modellen präzisierte Semantik

h<strong>instrong>zu

• verallgeme<strong>instrong>ert für alle MOF-basierten Metamodelle

• <strong>instrong>zwischen allgeme<strong>instrong> akzeptiert, viele Erweiterungen

• „Core Language“ von Modelltransformationssprachen

(QVT) (QVT), Regelsprachen (PRR) ...

Dr. Birgit Demuth SWT II, SS 2009 8


Literatur

[1] [ ] Warmer, , J., , Kleppe, pp , A.: The Object j Constra<strong>instrong>t Language. g g

Precise Model<strong>instrong>g with UML. Addison-Wesley, 1999

[2] Warmer, J., Kleppe, A.: The Object Constra<strong>instrong>t Language

Second Edition.

Gett<strong>instrong>g Your Models Ready For MDA. Addison-Wesley, 2003

[3] OMG UML specification,

www.omg.org/technology/documents/model<strong>instrong>g www.omg.org/technology/documents/model<strong>instrong>g_spec_catalo

spec catalo

g.htm#UML

[4] OMG UML 2.0 <strong>OCLstrong>,

www www.omg.org/technology/documents/formal/ocl.htm

omg org/technology/documents/formal/ocl htm

[5] Brügge, B., Dutoit, A.H.: Objektorientierte Softwaretechnik

mit UML, Entwurfsmustern und Java. PEARSON Studium,

2004 (kurze Zusammenfassung)

Dr. Birgit Demuth SWT II, SS 2009 9


Dr. Birgit Demuth SWT II, SS 2009 10


Constra<strong>instrong>t

Def<strong>instrong>ition nach [1]

– „A constra<strong>instrong>t is a restriction on one or more values of (part of)

an object-oriented model or system.“

Def<strong>instrong>ition nach [5]

– „E<strong>instrong>e E<strong>instrong>schränkung ist e<strong>instrong> Prädikat, dessen Wert wahr oder

ffalsch l h iist. t

– Boolesche Ausdrücke s<strong>instrong>d … E<strong>instrong>schränkungen. …

– <strong>OCLstrong> erlaubt die formale Spezifikation von E<strong>instrong>schränkungen für

e<strong>instrong>zelne Modellelemente (z (z.B. B Attribute, Attribute Operationen, Operationen Klassen)

sowie für Gruppen von Modellelementen (z.B. Assoziationen)“

– Wir benutzen im folgenden weiter den Begriff des Constra<strong>instrong>ts.

Dr. Birgit Demuth SWT II, SS 2009 11


Invariante

Def<strong>instrong>ition

– E<strong>instrong>e Invariante ist e<strong>instrong> Constra<strong>instrong>t, das für e<strong>instrong> Objekt

während se<strong>instrong>er ganzen Lebenszeit wahr se<strong>instrong> sollte sollte.

Syntax

context

<strong>instrong>v []:

Dr. Birgit Demuth SWT II, SS 2009 12


<strong>OCLstrong>/UML By Example

Dr. Birgit Demuth SWT II, SS 2009 13


Invariante - Beispiel

context Meet<strong>instrong>g <strong>instrong>v: self.end > self.start

Äquivalente Formulierungen

context Meet<strong>instrong>g <strong>instrong>v: end > start

-- self bezieht sich immer auf das Objekt, für das das

CConstra<strong>instrong>t t i t bberechnet h t wird id

context Meet<strong>instrong>g <strong>instrong>v startEndConstra<strong>instrong>t:

self.end > self.start

-- Vergabe e<strong>instrong>es Namens für das Constra<strong>instrong>t

• Sichtbarkeiten von Attributen u.ä. werden durch <strong>OCLstrong>

standardmäßig ignoriert.

Dr. Birgit Demuth SWT II, SS 2009 14


Precondition (Vorbed<strong>instrong>gung)

• Pre- und Postconditions s<strong>instrong>d Constra<strong>instrong>ts, die die Anwendbarkeit

und die Auswirkung von Operationen spezifizieren, ohne dass

dafür e<strong>instrong> Algorithmus oder e<strong>instrong>e Implementation angegeben

wird.

Def<strong>instrong>ition

– E<strong>instrong>e Precondition ist e<strong>instrong> Boolescher Ausdruck, der zum

Zeitpunkt des Beg<strong>instrong>ns der Ausführung der zugehörigen

Operation wahr se<strong>instrong> muss muss.

Syntax

context :: ()

pre []:

Dr. Birgit Demuth SWT II, SS 2009 15


Precondition - Beispiele

context Meet<strong>instrong>g::shift(d:Integer)

pre: self.isConfirmed = false

context Meet<strong>instrong>g::shift(d:Integer)

pre: d>0

context Meet<strong>instrong>g::shift(d:Integer)

pre: self.isConfirmed = false and d>0

Dr. Birgit Demuth SWT II, SS 2009 16


Postcondition (Nachbed<strong>instrong>gung)

Def<strong>instrong>ition

– E<strong>instrong>e Postcondition ist e<strong>instrong> Boolescher Ausdruck, der

unmittelbar nach der Ausführung der zugehörigen

Operation wahr se<strong>instrong> muss.

Syntax

context :: ()

post []:

Dr. Birgit Demuth SWT II, SS 2009 17


Postcondition - Beispiele

context Meet<strong>instrong>g::duration():Integer

post: result = self.end – self.start

-- result bezieht sich auf den Rückkehrwert der Operation

context Meet<strong>instrong>g::confirm()

post: self.isConfirmed = true

context Meet<strong>instrong>g::shift(d:Integer)

post: start = start@pre +d and end = end@pre + d

-- start@pre bezieht sich auf den Wert vor Ausführung der

-- Operation

-- start bezieht sich auf den Wert nach Ausführung der Operation

-- @pre ist nur <strong>instrong> Postconditions erlaubt

Dr. Birgit Demuth SWT II, SS 2009 18


<strong>OCLstrong>-Ausdrücke (1)

• Boolesche Ausdrücke

• Standardbibliothek

– Basistypen:

• Boolean

• Integer

•Real

•Str<strong>instrong>g

– Kollektionstypen:

ll k

• Collection

• Set

• Ordered Set (nur <strong>OCLstrong>2)

•Bag

• SSequence

Dr. Birgit Demuth SWT II, SS 2009 19


<strong>OCLstrong>-Ausdrücke (2)

Nutzerdef<strong>instrong>ierte Typen (<strong>OCLstrong>Type)

• Klassentyp (Modelltyp):

– Kl Klasse <strong>instrong> i e<strong>instrong>em i Klassendiagram

Kl di

– Generalisierung zwischen den Klassen führt zu

Supertypen.

– E<strong>instrong>e Klasse besitzt die folgenden Features:

• Attribute (z.B. start)

• Operationen (nur query operations) (z.B.

duration())

• Klassenattribute (z.B. Date::today)

• Klassenoperationen

• Assoziationsenden („Navigationsausdrücke“)

• Aufzählungstyp (enumeration typ)

Dr. Birgit Demuth SWT II, SS 2009 20


<strong>OCLstrong>-Typhierarchie mit Standardtypen (Ausschnitt)

T T T T

Dr. Birgit Demuth SWT II, SS 2009 21

T


<strong>OCLstrong>-Typ-Konformitätsregeln

yp g

<strong>OCLstrong> ist e<strong>instrong>e typsichere Sprache.

Der Parser prüft <strong>OCLstrong>-Ausdrücke auf Konformität:

• Typ 1 ist konform zu Typ 2, wenn e<strong>instrong>e Instanz von Typ 1

an jeder Stelle ersetzt werden kann kann, wo e<strong>instrong>e Instanz vom

Typ 2 erwartet wird.

Allgeme<strong>instrong>e Regeln

• Typ 1 ist konform zu Typ 2, wenn Sie identisch s<strong>instrong>d.

• JJeder d Typ T ist i t kkonform f zu jedem j d se<strong>instrong>er i Supertypen.

S t

• Typkonformität ist transitiv.

Dr. Birgit Demuth SWT II, SS 2009 22


<strong>OCLstrong> Constra<strong>instrong>ts und Vererbung

Constra<strong>instrong>ts allgeme<strong>instrong>

• Constra<strong>instrong>ts e<strong>instrong>er Superklasse werden von den Subklassen geerbt.

Dabei gilt g das Liskovsche Substitutionspr<strong>instrong>zip. p p

Invarianten

• E<strong>instrong>e Subklasse kann die Invariante verstärken, sie aber nicht

abschwächen.

Preconditions

• E<strong>instrong>e Vorbed<strong>instrong>gung kann bei e<strong>instrong>em Überschreiben e<strong>instrong>er Operation

e<strong>instrong>er Subklasse aufgeweicht, aber nicht verstärkt werden.

Postconditions

• E<strong>instrong>e Nachbed<strong>instrong>gung kann bei e<strong>instrong>em Überschreiben e<strong>instrong>er Operation

e<strong>instrong>er Subklasse verstärkt, aber nicht aufgeweicht werden.

Dr. Birgit Demuth SWT II, SS 2009 23


Navigationsausdrücke

• Assoziationsenden (Rollennamen) können verwendet werden, um

von e<strong>instrong>em Object im Modell/System zu e<strong>instrong>em anderen zu

navigieren g (Navigation)

( g )

• Navigationen werden <strong>instrong> <strong>OCLstrong> als Attribute behandelt (dot-

Notation).

• Der Typ e<strong>instrong>er Navigation ist entweder

– Nutzerdef<strong>instrong>ierter Typ (Assoziationsende mit Multiplizität

maximal 1)

– Kollektion von nutzerdef<strong>instrong>ierten Typen (Assoziationsende

mit Multiplizität > 1)

Dr. Birgit Demuth SWT II, SS 2009 24


Navigationsausdrücke - Beispiele

Nutzerdef<strong>instrong>ierter Typ

z.B. moderator

Navigation g von Meet<strong>instrong>g g ist vom Typ yp Teammember

context Meet<strong>instrong>g

i<strong>instrong>v: self.moderator.gender lf d t d = GGender::female d f l

Dr. Birgit Demuth SWT II, SS 2009 25


Navigationsausdrücke - Beispiele

Kollektion

– z.B. participants Navigation von Meet<strong>instrong>g ist vom Typ

Set(Teammember)

– Operationen auf Kollektionen werden <strong>instrong> der „Pfeilnotation

Pfeilnotation“

(->) geschrieben

– Kurznotation für die collect–Operation ist die dot-Notation

(für ( self->collect(participants) (p p ) besser

self.participants)

context Meet<strong>instrong>g g

<strong>instrong>v: self->collect(participants)->size()>=2

context t t MMeet<strong>instrong>g ti i<strong>instrong>v: self.participants->size()>=2

lf ti i t > i ()> 2

Dr. Birgit Demuth SWT II, SS 2009 26


Operationen auf Kollektionen (1)

22 Operationen mit unterschiedlicher Semantik <strong>instrong> Abhängigkeit

vom Kollektionstyp, z.B.

– Vergleichsoperationen (=, )

– Konvertierungsoperationen (asBag(), asSet(),

asOrderedSet(), asSequence())

– Verschiedene <strong>instrong>clud<strong>instrong>g- und exclud<strong>instrong>g-Operationen

– Operation flatten() erzeugt aus e<strong>instrong>er Kollektion von

Kollektionen e<strong>instrong>e Kollektion mit e<strong>instrong>zelnen Objekten, z.B.

Set{Bag{1,2,2},Bag{2}} � Set{1,2}

– Mengenoperationen

(union,<strong>instrong>tersection,m<strong>instrong>us,symmetricDifference)

– Operationen auf sortierten Kollektionen (z.B. first(),

llast(), t() <strong>instrong>dexOf())

i d Of())

Dr. Birgit Demuth SWT II, SS 2009 27


Operationen p auf Kollektionen (2) ( )

Iterierende Operationen auf allen Kollektionstypen, z.B.

any(expr)

collect(expr)

exists(expr)

forAll(expr)

isUnique(expr)

one(expr)

select(expr)

reject(expr)

sortedBy(expr)

Dr. Birgit Demuth SWT II, SS 2009 28


Operation iterate()

Collection->iterate( element : Type1;

result : Type2 =

| }

• Alle anderen iterierenden Operationen s<strong>instrong>d e<strong>instrong> Spezialfall

von iterate() und können damit ausgedrückt werden, z.B.

Set {1,2,3}->sum() durch

SSet{1,2,3}-> t{1 2 3} >

iterate{i: Integer, sum: Integer=0 | sum + i }

Dr. Birgit Demuth SWT II, SS 2009 29


Weitere Beispiele für Kollektionsoperationen (1)

• E<strong>instrong> Teammeet<strong>instrong>g muss für e<strong>instrong> ganzes Team organisiert

werden (Operation forAll()):

context Teammeet<strong>instrong>g i

<strong>instrong>v: participants->forAll(team=self.for)

context Meet<strong>instrong>g <strong>instrong>v: oclIsTypeOf(Teammeet<strong>instrong>g)

implies participants->forAll(team=self.for)

Dr. Birgit Demuth SWT II, SS 2009 30


Weitere Beispiele für Kollektionsoperationen (2)

• Weitere Nachbed<strong>instrong>gungen g g ( (select()): ())

context Teammember::numMeet<strong>instrong>g():Integer

post: result=meet<strong>instrong>gs->size()

context Teammember::numConfMeet<strong>instrong>g():Integer

post:

result=meet<strong>instrong>gs->select(isConfirmed)->size()

g ( ) ()

Dr. Birgit Demuth SWT II, SS 2009 31


<strong>OCLstrong> für abgeleitete Attribute und Assoziationen

(Abl (Ableitungsregeln, it l dderive, i <strong>OCLstrong>2)

• Beispiel für e<strong>instrong> abgeleitetes Attribut (size)

context Team::size:Integer

derive:members->size()

• Beispiel für e<strong>instrong>e abgeleitete Assoziation

– conflict def<strong>instrong>iert mite<strong>instrong>ander (zeitlich) <strong>instrong> Konflikt

stehende Meet<strong>instrong>gs

context Meet<strong>instrong>g::conflict:Set(Meet<strong>instrong>g)

derive: select(m|mself and

self.<strong>instrong>Conflict(m))

lf i C fli t( ))

Dr. Birgit Demuth SWT II, SS 2009 32


<strong>OCLstrong> zur Spezifikation von Anfangswerten

(<strong>instrong>it, <strong>OCLstrong>2)

BBeispiele i i l

context Meet<strong>instrong>g::isConfirmed g

: Boolean

<strong>instrong>it: false

context Teammember:meet<strong>instrong>gs : Set(Meet<strong>instrong>gs)

<strong>instrong>it: Set{}

• Man beachte den Unterschied zu Invarianten und

Ableitungsregeln: E<strong>instrong> Anfangswert muss nur zum Zeitpunkt

der Erzeugung des Objektes gelten!

Dr. Birgit Demuth SWT II, SS 2009 33


<strong>OCLstrong> zur Spezifikation von Anfrageoperationen

(body, <strong>OCLstrong>2)

• Spezifikation von Operationen ohne Seiteneffekte (d.h.

Operationen, die nicht den Zustand irgende<strong>instrong>es Objektes im

System y ändern) )

• Volle Ausdruckskraft e<strong>instrong>er Anfragesprache (vergleichbar mit

SQL)

Beispiel

context

Teammember::getMeet<strong>instrong>gTitles(): Bag(Str<strong>instrong>g)

body: meet<strong>instrong>gs->collect(title)

Dr. Birgit Demuth SWT II, SS 2009 34


Teilausdrücke <strong>instrong> <strong>OCLstrong> (let) ( )

• Interessant <strong>instrong> komplexen <strong>OCLstrong>-Ausdrücken

• E<strong>instrong> let-Ausdruck def<strong>instrong>iert e<strong>instrong>e Variable (z.B. noConflict), die

anstelle e<strong>instrong>es Teilausdruckes benutzt werden kann.

Beispiel p

context Meet<strong>instrong>g <strong>instrong>v:

let noConflict : Boolean =

<strong>instrong>

participants.meet<strong>instrong>gs->forAll(m|mself

and

m.isConfirmed implies p not

self.<strong>instrong>Conflict(m))

isConfirmed implies noConflict

Dr. Birgit Demuth SWT II, SS 2009 35


<strong>OCLstrong> zur Spezifikation von wiederverwendbaren

Ausdrücken (def, (def <strong>OCLstrong>2)

• Def<strong>instrong>ition von Attributen und Anfrageoperationen

• Verwendung wie normale Attribute und Operationen

• Syntax ist ähnlich dem let-Ausdruck

• Gedacht für die Wiederverwendung g von <strong>OCLstrong>-Teilausdrücken <strong>instrong>

verschiedenen Constra<strong>instrong>ts

context Meet<strong>instrong>g g

def: noConflict : Boolean =

participants.meet<strong>instrong>gs->forAll(m|mself

andd

m.isConfirmed implies not

self self.<strong>instrong>Conflict(m))

<strong>instrong>Conflict(m))

Dr. Birgit Demuth SWT II, SS 2009 36


Zusammenfassung von <strong>OCLstrong> Expressions zu

Packages

package Meet<strong>instrong>gExample

context Meet<strong>instrong>g::isConfirmed : Boolean

<strong>instrong>it: false

context Teammember:meet<strong>instrong>gs : Set(Meet<strong>instrong>gs)

<strong>instrong>it: Set{}

..

endpackage

Dr. Birgit Demuth SWT II, SS 2009 37


Grenzen von <strong>OCLstrong>

• Für <strong>instrong>konsistente Spezifikationen (Komb<strong>instrong>ation von

Constra<strong>instrong>ts, die sich widersprechen) gibt es ke<strong>instrong>e

Unterstützung, diese aufzuf<strong>instrong>den.

• „Frame Problem“

– Nachbed<strong>instrong>gungen beziehen sich nur auf lokale Attribute und

Assoziationen

Assoziationen.

– Für den Rest der Objektkonfiguration gilt die Annahme „es

ändert sich nichts“.

– Das kann zu Konflikten f führen f (Forschungsgegenstand).

• Transitive Hülle kann nicht spezifiziert werden.

• allInstances()-Problem:

()

– Für Klassentypen erlaubt, z.B. Person.allInstances()

– Für unendliche Mengen von Typen nicht erlaubt, z.B.

Integer Integer.allInstances()

allInstances()

Dr. Birgit Demuth SWT II, SS 2009 38


<strong>OCLstrong> <strong>instrong> weiteren Modellen [2]

• Zustandsdiagramm

• Sequenzdiagramm

• Aktivitätsdiagramm

• Anwendungsfalldiagramm

g g

• Komponentendiagramm

Dr. Birgit Demuth SWT II, SS 2009 39


<strong>OCLstrong> <strong>instrong> Zustandsmodellen – Beispiel (oclInState())

• vordef<strong>instrong>iertes Prädikat für alle Objekte (Typ OclAny)

oclInState(s: OclState) : Boolean

context Vector::removeElement(d:Data)

pre: oclInState(notEmpty)

post: p size@pre p = 1 implies p oclInState(empty) p y

Dr. Birgit Demuth SWT II, SS 2009 40


Undef<strong>instrong>ierte Werte <strong>instrong> <strong>OCLstrong> (OclVoid)

• Die Berechnung g e<strong>instrong>es <strong>OCLstrong>-Teilausdruckes kann u.U. zu e<strong>instrong>en

undef<strong>instrong>ierten Wert (OclVoid) führen

• dreiwertige Logik analog SQL

• Test auf undef<strong>instrong>ierten Wert mit

oclIsUndef<strong>instrong>ed(): Boolean

-- true falls das Objekt (vom Typ OclAny) undef<strong>instrong>iert ist,

-- ansonsten false

• typischer Fall des Auftreten undef<strong>instrong>ierter Werte ist der Zugriff

auf e<strong>instrong>en nicht existierenden Attributwert

Dr. Birgit Demuth SWT II, SS 2009 41


Typische Anwendungsfälle für <strong>OCLstrong>

Metamodelle: {MOF-, Ecore-basiert} X {UML, CWM, ODM, SBVR, PRR,

nutzerdef<strong>instrong>ierte DSLs, …}

MOF-Modellebene MOF Modellebene Beispiele für die Verwendung von <strong>OCLstrong>

M2 (Metamodell) •Spezifikation von Well-Formedness Rules (WFRs) <strong>instrong> OMG-

Standards

•Def<strong>instrong>ition von Modellierungsrichtl<strong>instrong>ien für DSLs (Doma<strong>instrong> Specific

Languages)

•Spezifikation von Modellabbildungen

M1 (Modell) •Überprüfung der Konsistenz von Modellen mit dem Metamodell

(� CASE-Tool)

•Evaluation von Modellierungsrichtl<strong>instrong>ien <strong>instrong> DSL-Instanzen

•Ausführung von Modellabbildungen

•Spezifikation von Geschäftsregeln/Constra<strong>instrong>ts

•Spezifikation von Testfällen

M0 (Objekte) •Evaluation von Geschäftsregeln/Constra<strong>instrong>ts

•Ausführung von Testfällen

Dr. Birgit Demuth SWT II, SS 2009 42


Beispiele für <strong>OCLstrong> auf der Metamodellebene

• WFR im UML-Metamodell

context GeneralizableElement <strong>instrong>v:

not self.allParents-><strong>instrong>cludes(self) ( )

-- Zyklen <strong>instrong> der Vererbungshierarchie s<strong>instrong>d nicht erlaubt

• UML Modelllierungsrichtl<strong>instrong>ie/Teil e<strong>instrong>es UML UML-Profil Profil bzw. bzw e<strong>instrong>er

DSL

context t t GGeneralizableElement li bl El t i<strong>instrong>v:

self.generalization->size()


Dresden <strong>OCLstrong> (1)

Dr. Birgit Demuth SWT II, SS 2009 44


Dresden <strong>OCLstrong> Toolkit

Dr. Birgit Demuth SWT II, SS 2009 45


Dresden <strong>OCLstrong> (2)

• <strong>OCLstrong>2 Workbench (Stefan Ocke)/Infrastruktur für das <strong>OCLstrong>2 Toolkit v1.0

• <strong>OCLstrong>2 Parser (Ansgar Konermann, Version 2.0 Nils Thieme)

• SQL Codegenerator (Florian Heidenreich)

• Declarative Codegenerator (Florian Heidenreich)

• Transformation Framework for MDSD (Christian Wende)

• Visualisierung Plug<strong>instrong> for Eclipse (Kai-Uwe Gärtner)

• Java Codegenerator (Ronny Brandt)

• <strong>OCLstrong> Editor for Eclipse (Mirko Stölzel)

• Anb<strong>instrong>dung an Fujaba (Mirko Stölzel)

• <strong>OCLstrong>2 Interpreter (Ronny Brandt)

• Dresden <strong>OCLstrong>2 Toolkit (Pivotmodell Matthias Bräuer)

• Dresden <strong>OCLstrong>2 for Eclipse Release 1.2 (Interpreter, Java-Code-

Generator Claas Wilke)

Dr. Birgit Demuth SWT II, SS 2009 46


Dresden <strong>OCLstrong>2 for Eclipse

Dr. Birgit Demuth SWT II, SS 2009 47


E<strong>instrong>ige weitere UML/<strong>OCLstrong> Tools

• MagicDraw Enterprise Edition v16.5 (mit Dresden <strong>OCLstrong>2 Toolkit ☺)

– Evaluations-Lizenz

• Borland Together 2008 (<strong>OCLstrong>/QVT)

– Akademische Lizenz an der Fakultät

• EEclipse li MDT/<strong>OCLstrong> f for EMF BBased d Models M d l

– Frei verfügbar

• Use (Universität Bremen)

– Frei verfügbar

– Animation, sehr schön geeignet für Lehrzwecke

Dr. Birgit Demuth SWT II, SS 2009 48


Dr. Birgit Demuth SWT II, SS 2009 49


<strong>OCLstrong> Support <strong>instrong> MagicDraw Enterprise Edition

“<strong>OCLstrong> validation rules”

11. SSpezifikation ifik ti auf f UML MMetaklassen t kl (M2) / Verifikation V ifik ti von UML- UML

Modellen (M1)

22. Spezifikation von Stereotypen (M2) / Verifikation von UML UML-

Modellen (M1)

33. Spezifikation auf UML-Modellen (M1) / Verifikation von UML-

Instanzen (Objekten)

Dr. Birgit Demuth SWT II, SS 2009 50


Dr. Birgit Demuth SWT II, SS 2009 51


XMI Import für Dresden <strong>OCLstrong>2 for Eclipse

• TopCased (EMF UML2 XMI)

• MagicDraw (EMF UML2 XMI)

• Visual l Paradigm d ( (EMF UML2 XMI) )

• Eclipse UML2 / UML2 Tools (EMF UML2 XMI)

Dr. Birgit Demuth SWT II, SS 2009 52


Stellenausschreibung ☺

Wir suchen Student<strong>instrong>nen/Studenten,

die mit Lust und Liebe an Dresden <strong>OCLstrong>2 for Eclipse bauen.

Dies ist als längerfristiger Job anzusehen.

Die E<strong>instrong>arbeitung b <strong>instrong> ddas Toolkits lk ist gleichzeitig l h

e<strong>instrong>e hervorragende Vorbereitung für e<strong>instrong>en Großen Beleg/Bachelor-/

Diplomarbeit im Rahmen unserer Forschungsprojekte!

Der Dank der Open Source Source-Geme<strong>instrong>de Geme<strong>instrong>de und des Lehrstuhl ist gewiss ☺

Unterstützung <strong>instrong> der technischen Arbeit gibt es <strong>instrong>sbesondere durch all

jene Studenten, die sich bislang als hervorragende <strong>OCLstrong>-Toolentwickler

erwiesen haben haben.

Kontakt: Birgit Demuth

Dr. Birgit Demuth SWT II, SS 2009 53

Weitere Magazine dieses Users
Ähnliche Magazine