Towards an MDA-Oriented UML Profile for

Page 1 ... EDOC conference. Silaghi, R.; Fondement, F.; Strohmeier, A.: Towards ... Enterprise Distributed Object Computing Conference, EDOC, Monterey, CA,.
116KB taille 2 téléchargements 289 vues
Towards an MDA-Oriented UML Profile for Distribution Raul Silaghi Frédéric Fondement

Software Engineering Lab Swiss Federal Institute of Technology Lausanne 3rd Key Workshop June 7-9, 2004

Towards an MDA-Oriented UML Profile for Distribution z Presentation out of an accepted paper for the next EDOC conference Silaghi, R.; Fondement, F.; Strohmeier, A.: Towards an MDA-Oriented UML Profile for Distribution. Proceedings of the 8th IEEE International Enterprise Distributed Object Computing Conference, EDOC, Monterey, CA, USA, September 20-24, 2004. IEEE Computer Society, 2004 (to appear). Also available as Technical Report, N° IC/2004/49, Swiss Federal Institute of Technology in Lausanne, Switzerland, May 2004.

© F.Fondement & R.Silaghi

-2-

June 07-09, 2004

Contents z On MDA and Platforms z Layered Platforms z Platform Integration z Conclusion

© F.Fondement & R.Silaghi

-3-

June 07-09, 2004

MDA Overview : The Y Pattern language used

PIM

Platform Independent Metamodel source language

Tr ansfor mati on Speci fi cati on Tr ansfor mation target language language used

PSM

Platform Specific Metamodel

z Can be iterative • More than one platform • Refinement steps • CIM->PIM

z Many other possibilities

© Object Management Group, Inc.:MDA Guide, V 1.0.1. omg/03-06-01 © F.Fondement & R.Silaghi

-4-

June 07-09, 2004

Platform Platform description model (PDM): z Domain-specific metamodel z Domain-specific profile • Stereotypes, Tag Definitions and Constraints

Platform and technology z Technology-Independent PDM vs. Technology-Dependent PDM z Platforms layers Platform integration z Guiding the transformation: “Wizard” approach © F.Fondement & R.Silaghi

-5-

June 07-09, 2004

Platform: Middleware z UML as a system modelling notation z Profiles as a platform modelling notation

Distribution

Concurrency

Transactions

What is remotely available in the system, and how to communicate?

What are the behaviours that cannot execute together ?

What are atomic behaviours ?

How to reach distributed elements with CORBA ?

What are the locks to place in CORBA ?

What CORBA transactional element ?

© F.Fondement & R.Silaghi

-6-

June 07-09, 2004

Platform: Middleware z UML as a system modelling notation z Profiles as a platform modelling notation

Distribution

© F.Fondement & R.Silaghi

Concurrency

-7-

Transactions

June 07-09, 2004

An example System «Interface» BankI +createAccount(name : String, bal : Double) : AccountI +getAccount(name : String) : AccountI +transfer(ac1 : String, ac2 : String, amount : Double)

«Interface» AccountI parameter

Account

Bank

-name : String -balance : Double

+createAccount(name : String, bal : Double) : AccountI +getAccount(name : String) : AccountI +transfer(ac1 : String, ac2 : String, amount : Double) #getAccountList() : Account [*]

bank

+getBalance() : Double +withdaw(amount : Double) +deposit(amount : Double) -setBalance(amount : Double)

1

© F.Fondement & R.Silaghi

+getBalance() : Double +withdaw(amount : Double) +deposit(amount : Double)

* accounts

-8-

June 07-09, 2004

Distribution

Distribution Profile

«profile» DistributionProfile

«metaclass» InstanceSpecification

«metaclass» Interface

«stereotype» Distributed

distributed

0..*

1..*

servants

«stereotype» Servant

{inv: self.classifier->forAll(c | c.conformsTo(self.distributed))}

© F.Fondement & R.Silaghi

-9-

June 07-09, 2004

Distribution

Platform integration z “The BankI is distributed” «metamodel» UML

«conform»

«profile» Distribution «conform»

«apply» System

MTL1-D

Distributed System

«Interface» «Distributed» BankI

«Distributed» servants = Set{b} «Interface» «Distributed» AccountI

Configuration

Bank

«Distributed» servants = Set{}

Account

Class Diagram Object Diagram «Servant» b :B a n k

© F.Fondement & R.Silaghi

- 10 -

«Servant» distributed= Set{BankI}

June 07-09, 2004

Distribution

Abstract Distribution Realization «profile» DistributionProfile «merge»

«profile» AbstractDistributionRealizationProfile

«metaclass» Comment

«stereotype» Servant servant

«stereotype» PublishedServant

1

expositions

«stereotype» Exposition

«stereotype» Publisher

1

exposed

«metaclass» Interface

*

1..* exposedInterfaces

*

publisher

«stereotype» InterfaceExposition

«stereotype» ServiceRegistry

«stereotype» NamingRegistry

«stereotype» NameExposition exposedNames : String [1..*]

© F.Fondement & R.Silaghi

- 11 -

June 07-09, 2004

Distribution

CORBA Distribution Realization

«profile» DistributionProfile

«profile» CORBADistributionRealizationProfile «stereotype» NamingRegistry

«merge» «profile» AbstractDistribution RealizationProfile

«stereotype» CORBANamingService

«merge»

© F.Fondement & R.Silaghi

host : String port : String

- 12 -

«stereotype» NameExposition

«stereotype» CORBANameExposition

June 07-09, 2004

Distribution

Platform integration z “The b servant is bound to a CORBA naming service at 127.0.0.1, on port 3028, with name BCV” «metamodel» UML

«profile» Distribution

«conform»

«merge»

«apply»

«profile» CORBA Distribution «conform»

CORBADistributedSystem

Distributed System

MTL2-D

«Servant» distributed= Set{Bank} «PublishedServant» expositions= Set{BankExposition}

Configuration

«Exposition» servant= b publisher= cns «NameExposition» exposedNames= Set{'BCV'} «CORBANameExposition»

«PublishedServant» b:Bank

«CORBANameExposition» BankExposition

«Servant» distributed= Set{NamingServiceExt} «PublishedServant» expositions= Set{} «Publisher» exposed= Set{BankExposition} «NamingRegistry»

«CORBANamingService» cns:NamingServiceExt

© F.Fondement & R.Silaghi

- 13 -

«CORBANamingService» host= '127.0.0.1' port= '3028'

June 07-09, 2004

Distribution

Platform integration

«m etam odel» UML

«profile» Distribution

«conform »

«conform » «apply»

System

MTL1-D

Configuration

«profile» CORBA Distribution

«m erge»

Distributed System

«conform » «apply» CORBA MTL2-D Distributed System

Plugin for Distribution with OpenORB CORBA in Java

Parallax

Java Code using OpenORB CORBA

Configuration

© F.Fondement & R.Silaghi

- 14 -

June 07-09, 2004

Conclusion z Platform separated into Concerns z Concerns refined into Technologies z Final support: extensible code generator z “Wizard” model transformation for integrating platforms z TBD: • • • • • •

More case studies More technologies More concerns More platforms More platform modelling languages More system modelling languages

© F.Fondement & R.Silaghi

- 15 -

June 07-09, 2004