Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D....

51
Microsoft liebt UML Interaktion von Enterprise Architekt mit Microsoft Applikationen Microsoft Applikationen Dr. Horst Kargl SparxSystems Software GmbH, Ferrogasse 80/3, 1180 Wien, Österreich, Tel: +43 (0)662 90 600 2041 Fax: +43 (0)662 90 333 3041 Tel: +43 (0)662 90 600 2041, Fax: +43 (0)662 90 333 3041 Vorstellungsrunde Name Name Position/Funktion/Aufgaben Erfahrungen mit SW-Entwicklung Erfahrungen mit SW Entwicklung, Objektorientierter Analyse/Design UML- bzw. Enterprise Architect-Kenntnisse Erwartungen

Transcript of Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D....

Page 1: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Microsoft liebt UML

Interaktion von Enterprise Architekt mitMicrosoft ApplikationenMicrosoft Applikationen

Dr. Horst KarglSparxSystems Software GmbH, Ferrogasse 80/3, 1180 Wien, Österreich,

Tel: +43 (0)662 90 600 2041 Fax: +43 (0)662 90 333 3041Tel: +43 (0)662 90 600 2041, Fax: +43 (0)662 90 333 3041

Vorstellungsrunde

NameName

Position/Funktion/Aufgaben

Erfahrungen mit SW-EntwicklungErfahrungen mit SW Entwicklung, Objektorientierter Analyse/Design

UML- bzw. Enterprise Architect-KenntnisseU b e p se c ec e sse

Erwartungen

Page 2: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

M d lli UML 2 1++ it E t i A hit t

10:30

Modellieren von UML 2.1++ mit Enterprise Architect

Diskussion

Pause

G i C d it E t i A hit t

11:15

11 30 Generieren von Code mit Enterprise Architect

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

11:30

Diskussion

Mittagspause

Teamarbeit mit Enterprise Architect

12:30

13:30

EA im Team Nützen

Enterprise Architect + Team Foundation Server

Diskussion

Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

Enterprise Architect Überblick

Projekt-Vorgehen

UML 2.1

Enterprise Architect 7

Analyse Design Implementierung Testen Rollout

XMIEclipseMS Visual Studio .NetVisio

Business-Process-Diagram

UML-Diagramme

Reverse-Engineering

TestenVorfalls-verfolgung

Rollout-Dokumentation

Requirements ManagementDOORS XMI

Requirements Management

Projekt Management

Page 3: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

EA unterstützt UML 2.1

cd UML 2.0 Diagrammfamilie

«Diagrammfamilie»

Diagramm

«Diagrammfamilie»

Strukturdiagramm

«Diagrammfamilie»

Verhaltensdiagramm

Objektdiagramm«überarbeitet»

AktivitätsdiagrammUse Case Diagram

«überarbeitet»

Klassendiagramm

«neues Diagramm»

Komponentendiagramm Verte ilungsdiagramm «überarbeitet»

Zustandsdiagramm

«Diagrammfamilie»

Interaktionsdiagramm

«neues Diagramm»

KompositionsstrukturdiagrammPaketdiagramm

«überarbeitet» «neues Diagramm»überarbeitet

Sequenzdiagramm

Kommunikationsdiagramm«neues Diagramm»

neues Diagramm

Timing Diagram

gInteraktionsübersichtsdiagramm

EA unterstützt weitere Diagramme

«control»

Order ScreenEriksson-Penker Extensions

Order Screen

Order Details

Ship Details

OrderTotal

View BasketBack

Cancel

SubmitOrder

«column» date: Date FK lineItemID: Integer*PK orderID: Integer FK orderStatusID: Integer deliveryInstructions: String orderNumber: String

StockItem

«column» Author: string*PK stockItemID: Integer catalogNumber: string costPrice: number listPrice: number title: string

«PK»PK St kIt (I t )

Account

«column»*PK accountID: Integer bil l ingAddress: String FK orderID: IntegerFK shoppingBasketID: Integer

LineItem

«column»*PK lineItemID: Integer

q antit Integer

«FK»+ FK_Order_LineItem(Integer)+ FK_Order_OrderStatus(Integer)

«PK»+ PK_Order(Integer)

+ PK_StockItem(Integer)

Transaction

«column»

+FK_Order_LineItem

(lineItemID = lineItemID)

+PK_LineItem+FK_LineItem_StockItem

(stockItemID = stockItemID)

+PK_StockItem

+FK_Account_Order

(orderID = orderID)

+PK_Order

Userinterface

REQ019 - Manage Inventory

REQ022 -Order Books

REQ023 -Store and Manage Books

REQ021 - List Stock Levels

FK shoppingBasketID: Integer closed: Boolean deliveryAddress: String emailAddress: String name: String

«FK»+ FK_Account_Order(Integer)+ FK_Account_ShoppingBasket(Integer)

«PK»+ PK_Account(Integer)

quantity: Integer FK stockItemID: Integer

«FK»+ FK_LineItem_StockItem(Integer)

«PK»+ PK_LineItem(Integer)

FK accountID: Integer date: Date FK lineItemID: Integer*PK transactionID: Integer orderNumber: String

«FK»+ FK_Transaction_Account(Integer)+ FK_Transaction_LineItem(Integer)

«PK»+ PK_Transaction(Integer)

+FK_Transaction_LineItem

(lineItemID = lineItemID)

+FK_Transaction_Account

(accountID = accountID)

+PK_Account

+PK_LineItem

+FK_Account_ShoppingBasket

REQ020 -Receive Books

REQ027 - Add Books

ShoppingBasket

«column» FK lineItemID: Integer*PK shoppingBasketID: Integer shoppingBasketNumber: String

«FK»+ FK ShoppingBasket LineItem(Integer)

+PK_LineItem

+FK_ShoppingBasket_LineItem

(lineItemID = lineItemID)

(shoppingBasketID = shoppingBasketID)

+PK_ShoppingBasket Modellieren von Requirements FK_ShoppingBasket_LineItem(Integer)

«PK»+ PK_ShoppingBasket(Integer)

Daten Modellierung (Relationenmodell)

Page 4: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

EA Erweiterung durch Technologien

state01

+ do / aDoBehavior// do behaviors

Initial

SubStateMachine01

Initial

Substate01

Use RTUML->Options-->LanguageOptions "G d C t t " i bl t dif th

[att3 ==0]

Bankomat

DomainModels

Use CaseDiagram

// do behaviors+ entry / aEntryBehavior

// entry behaviors+ exit / anExitBehavior

// exit behaviors

Substate02 Substate03

The Effects and guard conditions of transitions through pseudo states ( fork / join / junction etc ) are cummulative

"Guard Concatenator" variable to modify the target languages' operator

[att2 ==false]

[att2 ==true]

[att1 == true/att1 = false[att1.var1 == true]/att1.var1 = false;

Bankomat

Dynamic Views

Requirements

[att3= 1][att3== 1]

[att3= 1][att3== 1]

ActivityDiagram

Mind MapSubstate04Substate04

History

"History" is child of SubStateMachine01

Ensure that the History States are encapsulated within respective SubStateMachines

ActiveClass01

- att1: CompositeDataTypett2 b l f l SubStateMachine02

Substate02

Initial

Substate02 Paste Substate02 ( parent = SubStatemachine02 ) state as a link model a transition to history state of SubStateMachine01

- att2: boolean = false- att3: int = 0

Attributes' type shall be composite ( struct, union, Class, etc ). For EA to render out the composite data type it should be a child classof the active class containing the state machine

Substate01

«struct»ActiveClass01::

CompositeDataType

+ var1: boolean = true+ var2: int = 0

Real Time UML

Flexible Vorgehensmodelle

Beliebige Vorgehensmodelle anwendbar: RUP, ICONIX, etc.

Traceability durch Views und Links

Requirem.Beliebige Views können eingebaut werden

Use Case

qRequ 2 UC

Beliebig

Latenzzeit kleiner als 1 sec.

(from Requirement)

Spielzug durchführen

extension pointsSpieler ist an der Reihe (a)

(from Monopoly)

t d

Activity D.

Class D.

gViele

IterationenLatenzzeit einhalten

(from Requirement)

(from Monopoly)

Würfeln

«extend»

Sequence D.

Requirement : Requirement

Monopoly : Monopoly

Page 5: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

Modellieren von UML 2.1++ mit Enterprise Architect

10:30

p

Diskussion

Pause

Generieren von Code mit Enterprise Architect

11:15

11:30 p

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

DiskussionDiskussion

Mittagspause

Teamarbeit mit Enterprise Architect

EA im Team Nützen

12:30

13:30

EA im Team Nützen

EA + TFS

Diskussion

Pause14:30 Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

Forward und Reverse Engineering einer DSL

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

Reverse Engineering

Import Soruce File

Import Source Directory

Rechte Maustaste in der Diagrammfläche

Page 6: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Reverse Engineering

Import Soruce File

Import Source Directory

Reverse Engineering

Import Binary Module

Java Archive ( jar)Java Archive (.jar)

.Net PE file (.exe, .dll)

Native Windows DLL und exe werden nicht unterstütztNative Windows DLL und exe werden nicht unterstützt

Intermediate Language file (.il)

Page 7: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Reverse Engineering

Modell ist vorhanden. Code wurde verändert. Änderungen in das Modell übernehmeng

Reverse Engineering

Code ist vorhanden. Modell wurde verändert. Änderungen in den Code übernehmen

Page 8: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Generation

… es wird gefragt wohin gespeichert werden soll.

Code wird in ein Verzeichnis generiert!Code wird in ein Verzeichnis generiert!

Code Generation

Generiere in V i h iVerzeichnis

Für jedes Package wird nun ein Verzeichnis angelegt!

Page 9: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Generation

Klassen sind fix mit Dateien verbunden

import/include:java, C#, C++ (im .h) etc.

Class1

Import/include (macro #define in C++):Import/include (macro, #define in C++): java (an vorige angehängt), C#,

C++ (im .cpp)

Code/Model Synchronisation

Code zu Model Synchronisation

Class 1 wird mit Code Synchronisiert

Class1

Page 10: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->OptionsTools >Options

A B

bli l A {public class A {public B m_B;

public A(){p (){}

}

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options •Synchronice Package with CodeTools >Options

A

- value: int

B

•Synchronice Model with Code

public class A {public B m_B;private int value;

public class A {public B m_B;

delete

public A(){}

}

public A(){}

}} }

A B

+ m_B: B

+ A()

+ B()

Page 11: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options •Synchronice Package with CodeTools >Options

A

- value: int

B

•Synchronice Model with Code

public class A {public B m_B;private int value;

public class A {

private int value;delete

public A(){}

}

public A(){}

}} }

A B

- value: int

+ A()

+ B()

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options •Synchronice Package with CodeTools >Options

A

- value: int

B

•Synchronice Model with Code

public class A {public B m_B;private int value;

public class A {public B m_B;

private int value;

public A(){}

}

public A(){}

}} }

!!! Hinweis!!!A B

+ m_B: B- value: int

+ A()

+ B()

Page 12: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options •Synchronice Package with CodeTools >Options

•Synchronice Model with Code

A

+ m_B: B- value: int

B

+ B()+m_B value: int

+ A()

public class A {public B m_B;private int value;

public class A {public B m_B;

private int value;

public A(){}

} }

delete

} }

A B

+ m_B: B- value: int

+ B()+m_B

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options •Synchronice Package with CodeTools >Options

public class A {public B m_B;

•Synchronice Model with Code

A

private int value;

public A(){this value=0;

+ m_B: B- value: int

+ A()

this.value=0;}

}

Page 13: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenDoppelklick auf die KlasseDoppelklick auf die Klasse

A

+ m_B: B- value: int

+ A() ertie

s

!!! HINWEIS !!!

Initialer Code wird nur beimPro

pe

Initialer Code wird nur beim ersten Forwardengineering

angelegt !!!

P

angelegt !!!

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m B;

• Generate Code…

public B m_B;private int value;

public A(){}}

}

A

+ m_B: B- value: int

+ A()

B

+ B()+m_BA

- value: int

B

+ B()

!!!

Page 14: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m B;public B m_B;private int value;

public A(){}}

}

A

+ m_B: B- value: int

+ A()

B

+ B()+m_BA

- value: int

B

+ B()

!!!

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m B;public B m_B;private int value;

public A(){}}

}

A

+ m_B: B- value: int

+ A()

B

+ B()+m_BA

- value: int

B

+ B()

public class A {

!!!p {

private int value;}

Page 15: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m_B;private int value;

A

private int value;doSomething(){

System.out.println(“wert ”+value)}

}

- value: int

+ doSomething() : void

A

- value: int

+ doSomething(int) : void

!!!

• Generate Code…

Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m_B;private int value;

A

private int value;doSomething(){

System.out.println(“wert ”+value)}

}

- value: int

+ doSomething() : void

A

- value: int

+ doSomething(int) : void

Diese Methode ist im Code aber nicht im Modell.

!!!Hier kann definiert werden was damit passieren soll!

• Generate Code…

Page 16: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m_B;private int value;

A

private int value;doSomething(){

System.out.println(“wert ”+value)}

}

- value: int

+ doSomething() : void

A

- value: int

+ doSomething(int) : void

!!!Methode im Code mit dieser Methodendefinition

überschreiben.

• Generate Code… Implementierung bleibt erhalten!!!

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Attribute/OperationsTools >Options >Attribute/Operations

public class A {public B m_B;private int value;

A

private int value;doSomething(){

System.out.println(“wert ”+value)}

}

- value: int

+ doSomething() : void

public class A {

A

- value: int

+ doSomething(int) : void

public class A {public B m_B;private int value;doSomething( int wert){

System.out.println(“wert ”+value)}

!!!}

}

Page 17: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Source Code EngineeringTools >Options >Source Code Engineering

Generelle Ei t llEinstellungen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Source Code EngineeringTools >Options >Source Code Engineering

Strg+Alt+Mg

Page 18: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Source Code EngineeringTools >Options >Source Code Engineering

A B

public class A {}

A B

public class B {}

Generate Code… OHNE „Auto gener…“

Generate Code… MIT „Auto gener…“

A B

public class A {pubilic B m_B;

}

public class B {}

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options

Bei „undefined“ Navigationsenden wird nur von source2destination eine Referezn

angelegt !!!Tools >Options

public class A {pubilic B m_B;A B

source destination

g g

}

public class B {}

Generate Code… OHNE „Do not gen…“

Generate Code… MIT „Do not gen…“

public class A {}

A B

source destination

public class B {}

Page 19: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Source Code Engineering

Bei „undefined“ Navigationsenden wird nur von source2destination eine Referezn

angelegt !!!Tools >Options >Source Code Engineering

public class A {pubilic B m_B;

source destination

g g

A B

}

public class B {public A m_A;

}

Generate Code… OHNE „Do not gen…“

Generate Code… MIT „Do not gen…“

source destination

A B

public class A {

}

public class B {public class B {public A m_A;

}

Code/Model Synchronisation

KonfigurationsmöglichkeitenTools->Options->Source Code EngineeringTools >Options >Source Code Engineering

Synchronice Model with CodeA

+ doSomething(D) : C+ doSomething(D) : C

C D

OHNE

A

+ doSomething(D) : C

MITOHNE

C D

Page 20: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Generation

Sprachenspezifische Einstellungen

Code Generation

Sprachenspezifische Einstellungen

Page 21: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Generation

Typisierte Collections

Mit #TYPE# i d b i d C d

Class1 Class2+c

Mit #TYPE# wird bei der Code Generierung der Typ des referenzierten

Elements angegebenClass1 Class2+c

1..*

public class Class1 {public Vector<Class2> c;

}

HINWEIS: <..> muss extra b d !!!angegeben werden !!!

Code Generation

Sprachenspezifische EinstellungenClass2

+ Class2()

Gilt nur für ausgewähltes Element

Class1

+ m_Class2: Collection<Class2>

+ Class1()

Class2

+ Class2()

* *()

Page 22: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Generation

Sprachenspezifische Einstellungen

Class1 Class2

* *

Projekteinstellungen

Reihenfolge der Berücksichtigung konfigurierter Collection Klassen

Code Generation

MDG Plugin für Eclipse und VisualStudio

Klassen die im Modell Klassen die im Code Klassen die im Modell vorhanden sind, aber nicht

im Code

vorhanden sind, aber nicht im Modell

Page 23: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Generation Template

Spezifiziert Transformationen von UML-Elementen in verschiedene Programmierspracheng p

Transformationen sind eine Mischung aus Mark-Up- und Script-Sprachep p

Jede Programmiersprache hat ihre base TemplatesAttribute, Class, Class Notes, Class Body, etc.

Jedes Template wird für ein bestimmtes UML-Elementausgeführt

Templates können andere Templates aufrufen -> Template Hierarchie

W i St t fü d UML El t d fi i t i tWenn ein Stereotyp für das UML-Element definiert ist, wird überprüft ob für dieses Stereotyp ein Template vorhanden istvorhanden ist

Temlpate Hirarchie

«CodeTemplate»Fi le

«CodeTemplate»Names pace0 *

+1

1

0..*

Fi le Names pace

«CodeTemplate»Cla ss

0..* 1

1

0..*

«CodeTemplate»Class Notes

«CodeTemplate»ClassDec laration

«CodeTemplate»ClassBody

11

1

11

1

«CodeTemplate»Attribute

«CodeTemplate»LinkedAttribute

«CodeTemplate»Opera tion

0..* 0..*1

0..*

«CodeTemplate»AttributeNotes

«CodeTemplate»LinkedAttributeDeclaration

«CodeTemplate»OperationNotes

«CodeTemplate»OperationDeclaration

1

1

1

1

1

11

1

«CodeTemplate»AttributeDeclaration

«CodeTemplate»LinkedAttr ibuteNotes

«CodeTemplate»Operationbody

«CodeTemplate»Parameter

Page 24: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Sprachelemente

Variablen$varName • Template Substitutions-Makros

• Feld Substitutions-Makros

Macros

• Feld Substitutions-Makros• Tagged-Value Substitutions-Makros• Kontroll-Makros• Funktions-Makros

%macroName%Funktions Makros

$str = „Ein String der einer Variablen zugewiesen wurde.„

$str += %LENGTH( "hall das ist ein Text )%$str + %LENGTH( hall das ist ein Text„ )%

$str += %LEFT( $str, 5 )%Funktions-Makros

$str += %LEFT( $str, 7 )%

$str += %LEFT( $str, 2 )%( , )

Code Templates

Resultat im Code

Page 25: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Templates

Substitut für ClassDeclaration

Feld Substitutions-Makros

Ermöglichen es auf die Daten eines Elementes zuzugreifeng

Pakete%packageAlias%, %packageName%,

%packageNote%, %packagePath%, …

Klasse

p g p g

%classAuthore%, %classPhase%, %classVersion%, %className%, …

Attribute %attAlias%, %attName%, %attNote%, %attType%, %attStereotype% %attScope%

Operationen

%attStereotype%, %attScope%, …

%attAlias%, %attName%, %attNote%, %attType%, %attStereotype% %attScope%

Parameter

%attStereotype%, %attScope%, …

%opReturnArray%, %opStatic%, %opScope%, %opReturnType%%opReturnType%, …

Page 26: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Feld Substitutions-Makros

Tagged-Value Substitution-Makros

Sind eine spezielle Art von Feld-MakrosDirekte SubstitutionDirekte Substitution

• Attribute, Klassen, Operationen, Pakete, Parameter, Verbindungen

• Struktur: %<macroName>:"<tagName>"%

• Beispiel: %opTag : „meinTagName“%

Bedingte SubstitutionBedingte Substitution• Es wird substituiert wenn die Bedingung erfüllt ist

• Struktur:Struktur:

%<macroName>:"<tagName>" [ == "<test>"] ? <subTrue> [ : <subFalse> ]%

• Beispiel: %opTag:"opInline" ? "inline" : ""%

Typ = boolean oder evaluiert zu true/false

Tag einer Operation

Name des Tags;

Typ=boolean

Wenn true, dann

inline

Wenn false, dann „“

Page 27: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Tagged-Value Sibstitution-Makros

Kontroll Makros

Kontroll Makros ermöglichen es die Abarbeitung der Templates zu beeinflussenp

Listen• Zum wiederholten Ausgeben von Elementen

• Kann auf folgende Templates angewendet werden:– Namespace, Class, ClassImpl, Attribute, InnerClass, InnerClassImpl,

Operation, OperationImpl, Parameter, ClassBase, ClassInterface, p , p p , , , ,Custom Template

• Struktur: •

%list=<TemplateName> @separator=<string> @indent=<string> [<conditions>]%

Zeichen zwischen den Listenelemeten

Zeichen für jede neue Zeile

Mögliche Bedingung

• Beispiel: (%list="Parameter" @separator=", "%)

output

… (para1, para2 , para3)…

output

Page 28: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Kontroll Makros

Resultat im Code

Anwendung des list Makros

Kontroll Makros

Kontroll Makros ermöglichen es die Abarbeitung der Templates zu beeinflussen

If-than-else• Struktur:

%if <test> <operator> <test> [elseIf <operator> <test> ] endIf%

Liste aller

• Beispiel: $bases=%list="ClassBase" @separator=", "%$interfaces=%list="ClassInterface" @separator=", "%

Basisklassen

Liste aller %if $bases != "" and $interfaces != ""%: $bases, $interfaces%elseIf $bases != ""%: $bases

Interfaces

Wenn es Basisklassen und Interfaces gibt, gib beide aus: $bases

%elseIf $interfaces != ""%: $interfaces%endIf%

Wenn es nur Basisklassen gibt, gib diese aus

Wenn es nur Interfaces gibt gib

Ausgabe

Wenn es nur Interfaces gibt, gib diese aus

Page 29: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Kontroll Makros

Kontroll Makros ermöglichen es die Abarbeitung der Templates zu beeinflussenp

Pl• Jedes Substitutionsmakro erzeugt ein NewLine

• Mittels Pl kann dieses NewLine formatiert werden

• Default Pl ist \n

Pl i d i ht f di l t t Z il i T l t d t• Pl wird nicht auf die letzte Zeile eines Templates angewendet

• Struktur: %PI=<value>%Struktur: %PI <value>%

• Beispiel: %Pl= „ “%, %Pl= „\n\n“%%Pl= „\t“%%Pl= „ beliebiger String “%g g

Template Description

Basis TemplatesAttribute A top-level template to generate member variables from UML attributes.Attribute Declaration Used by the Attribute template to generate a member variable declaration.Attribute Notes Used by the Attribute template to generate member variable notes.Class A top-level template for generating Classes from UML Classes.Class Base Used by the Class template to generate a base Class name in the inheritance list of a derived ClassClass Base Used by the Class template to generate a base Class name in the inheritance list of a derived Class,

where the base Class doesn't exist in the model.Class Body Used by the Class template to generate the body of a Class.Class Declaration Used by the Class template to generate the declaration of a Class.Class Interface Used by the Class template to generate an interface name in the inheritance list of a derived Class, where

th i t f d 't i t i th d lthe interface doesn't exist in the model.Class Notes Used by the Class template to generate the Class notes.File A top-level template for generating the source file. For languages such as C++, this corresponds to the

header file.Import Section Used in the File template to generate external dependencies.p p g pLinked Attribute A top-level template for generating attributes derived from UML Associations.Linked Attribute Notes Used by the Linked Attribute template to generate the attribute notes.

Linked Attribute Declaration Used by the Linked Attribute template to generate the attribute declaration.

Linked Class Base Used by the Class template to generate a base Class name in the inheritance list of a derived Class for aLinked Class Base Used by the Class template to generate a base Class name in the inheritance list of a derived Class, for a Class element in the model that is a parent of the current Class.

Linked Class Interface Used by the Class template to generate an Interface name in the inheritance list of a derived Class, for an Interface element in the model that is a parent of the current Class.

Namespace A top-level template for generating namespaces from UML packages. (Although not all languages haveNamespace A top level template for generating namespaces from UML packages. (Although not all languages have namespaces, this template can be used to generate an equivalent construct, such as packages in Java.)

Namespace Body Used by the Namespace template to generate the body of a namespace.Namespace Declaration Used by the Namespace template to generate the namespace declaration.Operation A top level template for generating operations from a UML Class's operationsOperation A top-level template for generating operations from a UML Class's operations.Operation Body Used by the Operation template to generate the body of a UML operation.Operation Declaration Used by the Operation template to generate the operation declaration.Operation Notes Used by the Operation template to generate documentation for an operation.Parameter Used by the Operation Declaration template to generate parameters.

Page 30: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Code Template Beispiel

«myStereotype»Person

Class Notes Template

Class BodyTemplate (Stereotype Overrides)

Code Template Beispiel

Linked Attribute Declaration Template

A B

+MyA +MyB

Page 31: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

Modellieren von UML 2.1++ mit Enterprise Architect

10:30

p

Diskussion

Pause

Generieren von Code mit Enterprise Architect

11:15

11:30 p

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

DiskussionDiskussion

Mittagspause

Teamarbeit mit Enterprise Architect

EA im Team Nützen

12:30

13:30

EA im Team Nützen

EA + TFS

Diskussion

Pause14:30 Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

Forward und Reverse Engineering einer DSL

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

EA Integration mit Visual Studio

Ein Vorhandenes EA Projekt in ein VS Projekt einfügen

… im Visual Studio

… einen neuen Solution-Folder anlegen

Page 32: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

EA Integration mit Visual Studio

Ein Vorhandenes EA Projekt in ein VS Projekt einfügen

… mittels Project Menü im VS

h ö li h…auch möglich ein neues anzulegen

EA Integration mit Visual Studio

Ein Vorhandenes EA Projekt aus VS entfernen

… Kontextmenü der Solution

Page 33: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

EA Integration mit Visual Studio

VS Projekt mit EA Projekt verbinden

Project Browser View in VS

Paket aus Project Browser auswählen

Link Existing UML Package to VS Project

Current Package -> Link Existing UML Package to Visual Studio Project

Projekt auswählen

vorher nachher

EA Integration mit Visual Studio

Simultanes Forward- und Reverse-Engineering Konfigurieren

EA VS

Project Browser View in VSProject Browser View im EA

EA VS

Page 34: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

Modellieren von UML 2.1++ mit Enterprise Architect

10:30

p

Diskussion

Pause

Generieren von Code mit Enterprise Architect

11:15

11:30 p

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

DiskussionDiskussion

Mittagspause

Teamarbeit mit Enterprise Architect

EA im Team Nützen

12:30

13:30

EA im Team Nützen

EA + TFS

Diskussion

Pause14:30 Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

Forward und Reverse Engineering einer DSL

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

Teamwork in Enterprise Architekt

ReplicationsReplications

Ein Master, mehrere Slaves

Übernimmt das Mergen von Modellen

XMI Export Import

Pakete als XMI exportieren und in anderem Projekt importieren

Händisches Verwalten von Modellen

Versionskontrolle auf .EAP bzw. DBMS

Concurrency auf Paketebene (für Private Models)

Ausgecheckte Pakete können nur von einem Benutzer bearbeitetAusgecheckte Pakete können nur von einem Benutzer bearbeitet werden

Security Feature für Modelle

Durch das Sperren kann es zu keinen Komplikationen kommen

Kann auf .EAP und DBMS Projekte angewendet werden

Page 35: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Teamwork in Enterprise Architekt

ReplicationsMacht Sinn, wenn ein Client nicht immer Zugang zum Server hat

Hinzufügen von Elementen ist Kumulativ

Löschen ist stärker als editierenLöschen ist stärker als editieren

deployment Deployment

Fileserv er

Master.EAP

Client 1 Client 2

«flow» «flow»

Replica_1.EAP Replica_2.EAP

Teamwork in Enterprise Architekt

XMI-Export/Import

«device»PC

«device»PC

«execution environ... «execution environ...UC.XMLEA EA

UC

«deploy» «deploy»

«flow»«flow»

myProject.EAP yourProject.EAP«invariant»{genau eine Ausprägung}

if t

«manifest»

myModel

1

«manifest»

«manifest»

RootPackage

1

**

SubPackage

Page 36: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Teamwork in Enterprise Architekt

XMI-Export/ImportM d ll l XML Fil i li iModell als XML-File serialisieren

Import von EMX und UML2 Format möglich

Unterstützte Formate• UML 1.3 (XMI 1.0) • UML 1.3 (XMI 1.1) • UML 1.4 (XMI 1.2) • UML 2 0 (XMI 2 1)

Unterstützte Formate

• UML 2.0 (XMI 2.1) • UML 2.1 (XMI 2.1) • MOF 1.3 (XMI 1.1) • MOF 1.4 (XMI 1.2)

Teamwork in Enterprise Architekt

Teamarbeit mittels Versionskontrolle

«device»Server

«execution environment»SVN

package_a.xmlExportiretes Paket

package_b.xml

«device»PC 1

«device»PC 2

«execution environment»EA

«execution environment»EA

SVN Konfigurieren

projact_x.eapproject_y.eap

Anfangs leeres Projekt

Page 37: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Teamwork in Enterprise Architekt

SVN pro Projektkonfigurieren Leeres Projekt

+ do / Mit EA arbeiten

Paket in einemProjekt erstellen

Projekt mit Inhalt

Elemente angelegt

Paket unterVersionkontrolle

stellen

+ do / Mit EA arbeiten

control package [SVN Konfiguriert]/Paket unter Versionkontrolle stellen

control package/Package aus Versionskontrolle lösen

Paket bearbeiten

[Paket einchecken]

[Paket ausgecheckt lassen]

Paket unter Versionskontrolle

+ do / mit Paket arbeiten

Paketeinchecken

Paket eingecheckt

Paket ausgecheckt

[einchecken] [ausgecheckt lassen]

Check In Branch

Check Outeinchecken

Security in Enterprise Architect

Zwei Security Strategien

StandardStandard• Alles ist frei, wenn auf Element gearbeitet werden soll, dieses

sperren, für Person und Gruppe

Rigoros• Alles ist gesperrt, wenn auf Element gearbeitet werden soll muss es

freigegeben werden, nur für eine Person

Umschalten ist möglich

Im ProjectBrowser -> rechte Maustaste auf [..Lock..] zeigt wer eien Lock auf das Element besitztLock auf das Element besitzt

sperrtAlle Elemente freiUser Element

sperrt

gibt frei

Alle Elemente frei

Alle Elemente gesperrt g

Page 38: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Teamwork mit dem Security-Feature

oprional

«device»Fileserv er

«device»Serv er

«execution environ...SVN .EAPSVN

CVS TFS SCC

«manifest»

CVS, TFS, SCC auch möglich

myModel«deploy»«flow»«flow»

«device»PC 1

«device»PC 2

«execution environment»EA

«execution environment»EA

RootPackagepackageName.xml«manifest»

*

1

«manifest»

SubPackage

«invariant»{genau eine Ausprägung}

SECURITY enabled

*

*

Teamwork mit dem Security-Feature

Page 39: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

Modellieren von UML 2.1++ mit Enterprise Architect

10:30

p

Diskussion

Pause

Generieren von Code mit Enterprise Architect

11:15

11:30 p

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

DiskussionDiskussion

Mittagspause

Teamarbeit mit Enterprise Architect

EA im Team Nützen

12:30

13:30

EA im Team Nützen

EA + TFS

Diskussion

Pause14:30 Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

Forward und Reverse Engineering einer DSL

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

EA und TFS

Anbindung des TFS wird mittels VSIntegration «device»Serv er

durchgeführt.

TFS als Versionierungssystem

TFS zur Verwaltung von Work Items

Serv er

«execution environment»TFS

TFS zur Verwaltung von Work-Items

«flow»«flow»

TCP

1. VS mit TFS verbinden«device»Laptop

«flow»*

2. Localfolder im VS erzeugen

3 TFS im EA

«execution environment»Visual Studio

«execution environment»Enterprise Architect

3. TFS im EA konfigurieren

4. Paket unter

«execution environ...Team Explorer projectName.eap

«execution e...MDG Integration «flow»

«flow»

Versionkontrolle stellen

Muss extra installiert werden

Page 40: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

VS mit TFS verbinden

Localfolder im VS erzeugen

… um EA Pakete zu versionieren

… working Directory

angelegtes Teamproject.. angelegtes Teamproject

Page 41: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

TFS im EA konfigurieren

EA-Menü: Project

Local Folder, erzeugt im VS

… automatisch ermittelt

… Account vom TFS Server

Default: C:\Program Files\Microsoft Visual Studio 9.0

\Common7\IDE\TF.exe

Paket unter Versionkontrolle stellen

Paket ist unter Versionskontrolle

… TFS konfiguragtiong g

Page 42: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Projekt-Vorgehen

Use Case

UML 2.1

Enterprise Architect 7

Requirements Design Implem. Test Maintainence

nch

nch

nch

nch

Imp

ort

/ sy

n

Imp

ort

/ sy

n

Imp

ort

/ sy

n

Imp

ort

/ sy

n

TFS Polarion Code Beamer DoorsWork Items

Use CaseRequire-ments

Bug Issue Task …

Paket mit TFS verbinden

link Project to TFS

TFS Server eintragen und

… link Project to TFS

EA Project Explorer im VSTFS Server eintragen und

TS Projekt auswählen

Page 43: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Work-Items nach EA importieren

EA Project Explorer im Visual StudioStudio

Work-Items nach EA importieren

Vorhandene Work-Items im TFS

Verwendetes UML Element

Abbildung der Work-Item Properties zu EA-Element Properties

Page 44: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

Modellieren von UML 2.1++ mit Enterprise Architect

10:30

p

Diskussion

Pause

Generieren von Code mit Enterprise Architect

11:15

11:30 p

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

DiskussionDiskussion

Mittagspause

Teamarbeit mit Enterprise Architect

EA im Team Nützen

12:30

13:30

EA im Team Nützen

EA + TFS

Diskussion

Pause14:30 Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

Forward und Reverse Engineering einer DSL

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

Entwickeln von EA Technologien

Zum Bündeln von EAFeatures …

Page 45: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Erweiterungsmöglichkeiten von UML

pkg Paketdiagramme

InfrastructureLibrary

Core Profiles

«import»

Neues Metamodell UML UML

«merge» «merge» «merge» M3

M2M2

Erweiterung und Veränderung Erweiterung

Erweiterung von UML im EAErweiterung von UML im EA

Aufbau von Modellierungssprachen

M3

Class Association Meta-Metamodell (MOF),zur Definition von Modellierungssprachen

M2

Klasse Assoziation

<<instanceOf>>

g p

UML-Metamodell,Verfügbare

M11 *

<<instanceOf>>

Verfügbare Modellierungselemente

Kunde Bestellung

M0

1 *

<<instanceOf>>

UML-Modell

M0

Laufzeitmodell

Page 46: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

UML Profile mit Stereotypen

Jedes Metaklassenelement, außer Stereotyp selbst, kann mittels Stereotypen erweitert werden.

S h ä k M kl l hi i h li hSchränken Metaklassenelemente hinsichtlich Funktionalität und Notation auf M2 ein.

St t fü b ti tStereotypen für bestimmten Verwendungszweck werden zu Profilen gruppiert

class meinStereotyp

«metaclass»

class Stereotypen

«profile»zu Profilen gruppiert

Elemente eines Profils können auf M1 instanziiert werden

Class

+ isActive: Boolean

meinStereotyp

+ Bean

+ Class

+ Component

+ Dependency

NameDesSteretypen

- Einschraenkungen: int

«extends» Dependency

+ MyEntity

+ NameDesSteretypen

+ Session

+ StateKind

+ totaleAbhängigkeit+ totaleAbhängigkeit

Tagged-Value im EA verwenden

Tagged-Value pro Projekt vordefinieren

Tagged-Value pro Element

Set up: Configure Build

EA Element

Page 47: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Stereotypen vs. Schlüsselwörter

Schlüsselwörter dienen dazu mehrfach verwendete Notationselemente zu unterscheiden.

Konzept hat unterschiedliche Metaklassen aber gleiches Notationselement, z.B. Class und Interface.

«metaclass» «metaclass»«metaclass»Class

+ isActive: Boolean

«metaclass»Interface

myType

- myTag: int «extends»Stereotyp

Class1 «interface»«myType»

«instanceOf»«instanceOf»

«instanceOf»

M2M1

Class1 interfaceInterface1

myTypeClass2

tagsmyTag =

SchlüsselwortSchlüsselwortTagged Values

Spezielle Eigenschaften

Erstellen von Shape-Scripts

stereotype: myTypename: Class2

Page 48: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Agenda

Enterprise Architect

Aufbau von Enterprise Architect

Modellieren von UML 2.1++ mit Enterprise Architect

10:30

p

Diskussion

Pause

Generieren von Code mit Enterprise Architect

11:15

11:30 p

Enterprise Architect Code Generierung Features

Integration von Enterprise Architect mit Visual Studio

DiskussionDiskussion

Mittagspause

Teamarbeit mit Enterprise Architect

EA im Team Nützen

12:30

13:30

EA im Team Nützen

EA + TFS

Diskussion

Pause14:30 Pause

Enterprise Architekt als Modellierungsplattform

Erweitern von UML 2.1 (erstellen einer DSL)

Forward und Reverse Engineering einer DSL

14:30

14:45

Forward und Reverse Engineering einer DSL

Diskussion

Enterprise Architect Object-Model

Vorhandene• VB• Delphi

VorhandeneAPI:

p• C#• Java

Page 49: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

C#Verbindung zum EA Repository

private void button1_Click(object sender, System.EventArgs e){

EA.Repository r = new EA.RepositoryClass();r OpenFile("c:\\eatest eap");r.OpenFile( c:\\eatest.eap );

}

Javapublic void OpenRepository(){

org.sparx.Repository r = new org.sparx.Repository();O Fil (" \\ t t ")r.OpenFile("c:\\eatest.eap");

}

Collection<org.sparx.Package> models = r.GetModels(); // erste Package Ebene

for( org.sparx.Package p : pCollection ){ ….. }

// alle Packages, Diagrammep.GetDiagrams() , p.GetPackages() , p.GetElements()

String objectType = elem.GetType(),String objectType elem.GetType(), if( objectType.equals( "UseCase“ ) ){ … } // alle Use Case Elemente

Collection<Connector> connectorColl = elem.GetConnectors();for( Connector conn : connectorColl ){ // alle Verbindungen( ){

String connType = conn.GetType();if( connType.equals( "Realisation" ) ){ … } }

g

// vom Typ Realisation

Verbindung zum EA Repository

ConnectorEnd ceSupp = conn.GetSupplierEnd();int sourceElementID = conn.GetSupplierID();

Java// source Rollenende// source Element ID

Element sourceElement = r.GetElementByID(sourceElementID); // source Element

ConnectorEnd ceClie = conn.GetClientEnd(); int targetElementID =conn.GetClientID(); El t t tEl t G tEl tB ID(t tEl tID)

// target Rollenende// target Element ID//Element targetElement = r.GetElementByID(targetElementID); // target Element

if( soruceType.equals( "Requirement“ ) && targetType.equals( "UseCase“ ) ){ ….. }

org.sparx.Element newElement = (org.sparx.Element)p.GetElements().AddNew( "name“ , "UseCase“ );

// neues UseCase Element anlegen

// neuen Connector anlegenConnector c = (Connector)newElement.GetConnectors().AddNew( "linkname“ ,

newElement.Update(); // Änderung festschreiben

"Association“ ); c.SetClientID( newElement.GetElementID() );c.SetSupplierID( element.GetElementID() ); c GetClientEnd() SetAggregation(2);

// targetelement setzen

// sourceelement setzen// AggregationKind setzen

0 = None1 = Sharedc.GetClientEnd().SetAggregation(2);

c.Update();// AggregationKind setzen1 = Shared

2 = Composite. // Änderung festschreiben

Page 50: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Enterprise Architect Add-In

namespace EATestPlugin{

public class Class1{

Add-In registrieren

{public object EA_GetMenuItems(EA.Repository Repository, String MenuLocation, String MenuName){switch (MenuName){

1. .dll bereitstellen

2 mit RegSVr32 registrieren{case "-&Horst's Add-In" :

return new string[3]{ "punkt1” , "punkt2” , ”punkt3” };

d f lt t " &H t' Add I "

2. mit RegSVr32 registrieren

3. starte regeditdefault: return "-&Horst's Add-In";

}}

bli id EA M Cli k

4. HKEY_CURRENT_USER\Software\Sparxpublic void EA_MenuClick

(EA.Repository Repository, String MenuName, String ItemName){if (MenuName == "punkt1"){

// Aktion ausführen

Software\Sparx Systems\EAddIns anlegen

//….. Aktion ausführen}

}}//end class

}

5. neuen Key anlegen

6 [projectName] [className]} 6. [projectName].[className]

Forward und Reverse Enigneeringmit dem Automation Interfacemit dem Automation Interface

Enterprise Architect

Java C# VB DelphiCOM

Automation Interface

…Excel Word

Page 51: Microsoft liebt UML - UML 2.5 Enterprise Architect ... · Microsoft liebt UML ... td Activity D. Class D. Viele Iterationen Latenzzeit einhalten ... ¾Spezifiziert Transformationen

Forward und Reverse Engineering

Collection<ProjectResource> resource = repo GetResources(); // Resources des Projektes

Einlesen von EAResoucen

// neue ProjektResource l t

Collection<ProjectResource> resource repo.GetResources();

ProjectResource pr = resource.AddNew("x", "y");

// Resources des Projektes

angelegt//Properties der ProjectResource setzenpr.SetName("Max Mustermann");pr SetRoles("Entwickler");

// name ist eindeutig, d.h. bei nochmaligem einfügen wird pr.SetRoles( Entwickler );

pr.Update();

g gkein neues Element angelegt

// neue ProjectResource ist angelegt und im Projekt

resource Refresh();

angelegt und im Projekt vorhanden

// nochmaliges aufrufen von resource.Refresh(); grepo.GetResources() beinhaltet schon alle neuen, ohne diesen aufruf noch i ht!nicht!