Upload
yvette-lemaire
View
103
Download
0
Embed Size (px)
Citation preview
1
Étude et applications de l’approche MDA pour des
plates-formes de Services WebPrésentée et soutenue par
Denivaldo LOPES
le 11 juillet 2005
Directeur de Thèse : Pr. Jean BÉZIVIN
Co-encadrant : Slimane HAMMOUDI
Université de Nantes – LINA École Supérieure d’Électronique de l’Ouest – ESEO
2
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Sommaire•Introduction
•État de l’art
•Approche MDA pour la plate-forme Services Web : modélisation
•Spécification de correspondances et définition de transformations
•Un outil pour la spécification de correspondances
•Conclusion
3
IntroductionContexte : Internet et Services Web
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Internet/Intranet
Les services Web !(XML, SOAP, WSDL et UDDI)
XML-RPCDCOM/COM+
CORBA-IIOP
EDI-standards
CORBA-IIOP
DCOM/COM+
HTTP/HTMLCGI
RPCJava RMI
EDI-standards
CORBA-IIOPDCOM/COM+
Travel Agency Airlines
RentCar
Hotel
Client
Client
Client
- un intergiciel unificateur ? - interopérabilité sur l’Internet ?
?
?
?
?
?
?
?
4
• Internet et Services Web
Étude et applications de l’approche MDA pour des plates-formes de Services Web
WSDL
Services Web
SOAPest accédé en utilisantUDDI
supporte la découverte de attaché à
supporte la communication entre
décrit
Un service Web est « une manière standardisée d’intégrer des applications basées sur le Web en utilisant les standards ouverts XML, SOAP, WSDL, UDDI et les protocoles de transport de l’Internet.» (cf. Webopedia).
XML comme la clé pour l’interopérabilité.
5
Contexte - Introduction
Un service Web est un Intergiciel de plus !
Je veux des solutions pour :- La complexité de développement, de
maintenance et d’évolution des systèmes.
• Internet et Services Web
La solution est d’utiliser des modèles dans tous
les cycles de vie de développement des
systèmes.
J’ai déjà entendu parler de cet
histoire de modèles :
OMT, Booch, UML, outils CASE
Maintenant, c’est différent. MDA (Model Driven Architecture)
propose d’utiliser des modèles pour implémenter des
systèmes logiciels de A à Z.
6
Contexte : Architecture dirigée par les modèles (MDA)*
Contexte - Introduction
MOF
Ecore
Other metamodeling
language
Metamodel
Infrastructure
PIM Mapping Techniques
PIM
PSM
PSM Mapping Techniques
1..*
1..*
1..*
1..*
1..*
1..*
<<conformsTo>>
<< conformsTo >>
<<depends on>><<are described with>>
<<are described with>>
Mappingfrom PSM to PSM
Mappingfrom PIM to PIM
<<independant of>>
<<expressed with>>
<<expressed with>>
<<expressed with>>
Refactoringfrom PSM to PIM
Mappingfrom PIM to PSM
PIM – Platform Independent ModelPSM – Platform Specific Model
* OMG, Model Driven Architecture (MDA) – ormsc/2001-07-01, 2001.
7
Motivations• Les services Web :
- Avantage : intergiciel adapté à l’Internet.
- Inconvénient : faible niveau d’abstraction.
• MDA :
- Maîtrise de la complexité.
- Guide le développement logiciel.
- Assure l’interopérabilité à un niveau d’abstraction élevé.
Problématique• Comment valider MDA ?
- Les services Web dans le contexte de MDA : modélisation.
- La transformation de modèles métier en services Web.
- L’impact du choix des langages de modélisation et des plates-formes cibles dans une approche MDA.
Introduction
8
Introduction
Démarche
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement,
etc.
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement,
etc.
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE**)
Code source (Java), fichiers de déploiement,
etc.
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement,
etc.
transformationmodèle-vers-modèle
Modèle Cible (SW*)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
* SW – Services Web** J2EE – Java + JWSDP (Java Web Service Developer Pack)
9
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Sommaire•Introduction
•État de l’art :
- Correspondance entre métamodèles
- La transformation de modèles
- Application de MDA pour la plate-forme des Services Web
•Approche MDA pour la plate-forme Services Web : modélisation
•Spécification de correspondances et définition de transformations
•Un outil pour la spécification de correspondances
•Conclusion
10
État de l’art
• MDA et les différents sens du terme Mapping dans la littérature :
- correspondance et transformation.- correspondance.- transformation.
• L’application de MDA à l’élaboration de la plate-forme de services Web.
Étude et applications de l’approche MDA pour des plates-formes de Services Web
11
AB BA1 1
* domain range
relation
element
1
AReIB
**
* J. HAUSMANN et S. KENT. Visualizing Model Mappings in UML. SOFTVIS’03.
Correspondance entre métamodèles - État de l’art
Correspondance entre métamodèles« ... we use the term mapping to address the general understanding of connection between models and refer to relation and pair whenever the distinction between definition and instance is suitable » *.
J. H. Hausmann et S. Kent
12
État de l’art
La transformation de modèlesEn 2002, l’OMG a présenté son RFP MOF 2.0 QVT pour stimuler la création d’un langage de transformation normalisé.
Langages de transformation :
•YATL (Yet Another Transformation Language)
• Université de Kent
• basé sur OCL (Object Constraint Language), hybride et modularité.
• BOTL (Basic Object-oriented Transformation Language) • Université Technique de Munich
• bidirectionnel, purement déclaratif, sans modularité.
• ATL (Atlas Transformation Language)• Université de Nantes.
• basé sur OCL, hybride et modularité.
13
WSDL
État de l’art
Application de MDA pour la plate-forme des Services Web : Aspects statiques
* David FRANKEL et John PARODI. Using Model-Driven ArchitectureTM to DevelopWeb Services. Rapport technique, IONA Technologies PLC, April 2002.
Une correspondance entre un modèle métier en UML et WSDL*
UML
14
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Sommaire•Introduction
•État de l’art
•Approche MDA pour la plate-forme Services Web : modélisation
- Méthodologie
- Architecture Type pour la transformation de modèles
- Étude de cas modélisé en UML et EDOC
- Métamodèles: Services Web et J2EE
•Spécification de correspondances et définition de transformations
•Un outil pour la spécification de correspondances
•Conclusion
15
Approche MDA pour la plate-forme Services Web : modélisation
Le choix ou la création des métamodèles pour le PIM
Le choix ou la création des métamodèles pour le PSM
La spécification des correspondances entre les métamodèles du PIM et du PSM
La génération de la définition de transformations
L’application de la définition de transformations (PIM vers PSM)
Compléter le PSM
Générer le code source, scripts, fichiers de déploiement, etc (PSM vers code)
[PSM est complet]
[oui]
[non]
Méthodologie pour l’application de la démarche MDA
Étude et applications de l’approche MDA pour des plates-formes de Services Web
16
Méthodologie - Approche MDA pour la plate-forme Services Web
Une architecture type pour la transformation de modèles
transformation engine
target Msource M
source target
MMM : metametamodel MM : metamodel M : model
transformation program
exec
MMM
conformsTo
source MM target MM
conformsToconformsTo
conformsTo
+left
mapping MM
mapping M
conformsTo
+right
generatedFrom
conformsTo
transformation M
conformsTo
conformsTo
conformsTo
transformation MM
Spécification de correspondancesDéfinition de
Transformations
+attrA11:Type1+attrA12:Type2
A1
+attrA21:Type3+attrA22:Type4
A2
+attrB11:Type5+attrB12:Type6
B1
+attrB21:Type7+attrB22:Type8
B2
A2B
Aa2Bb
Source metamodel
Target metamodel
Mapping
Me
source
target Mapping Element
composition
17
Le choix ou la création des métamodèles pour le PIM
Le choix ou la création des métamodèles pour le PSM
La spécification des correspondances entre les métamodèles du PIM et du PSM
La génération de la définition de transformations
L’application de la définition de transformations (PIM vers PSM)
Compléter le PSM
Générer le code source, scripts, fichiers de déploiement, etc (PSM vers code)
[PSM est complet]
[oui]
[non]
Méthodologie pour l’application de la démarche MDA
Étude et applications de l’approche MDA pour des plates-formes de Service Web
UML et EDOC
18
Étude de cas : UML
HotelService
Hotel
CarHire
Bank
AirLinesTravel Agency
TravelService
AirLinesService
RentingCarService
BankService
Customer
Étude de cas : UML - Approche MDA pour la plate-forme Services Web
travelagency
+findTravel(travelReq:TravelReq):TravelList+reserveTravel(travelSel:TravelInf):Reserv+payTravel(payInf:PayInf):AckPay+cancelTravel(reservInf:Reserv):AckCancel
ServiceTravelAg
19
Étude de cas : EDOC
MakePayment
Bank
BuyTravel
Customer
MakePayment
AirLines
SellFlightTicket
MakePayment
CarHire
RentCar
MakePayment
Hotel
BookHotel
BuyFlightTicket
TravelAg
RentCar
BookHotel
SellTravel
MakePayment
Le Community Process de l’agence de voyages (Notation CCA)
Étude de cas : EDOC - Approche MDA pour la plate-forme Services Web
20Méthodologie pour l’application de la démarche MDA
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Le choix ou la création des métamodèles pour le PIM
Le choix ou la création des métamodèles pour le PSM
La spécification des correspondances entre les métamodèles du PIM et du PSM
La génération de la définition de transformations
L’application de la définition de transformations (PIM vers PSM)
Compléter le PSM
Générer le code source, scripts, fichiers de déploiement, etc (PSM vers code)
[PSM est complet]
[oui]
[non]
WSDL et J2EE (Java + JWSDP)
21
Les SW comme plate-forme cible - Approche MDA pour la plate-forme Services Web
Un métamodèle de WSDL (fragment)
WSDLElement
Documentation
Definition
+_targetNameSpace+name
Fault
+name
FaultType
+name
OneWayOperation
Import
Types
Part
Message
Port
Binding
PortType
Service
Operation
BindingOperation
StartWithExtensionType
RequestResponseOperation
ParamType
+name
SolicitResponseOperation
0..*
+import
0..1
+types
0..*
+message0..*
+portType
0..*+binding
0..*
+service
+port 0..*
+binding
+type
+part 0..*
+operation
0..*
0..1+solicitResponse
0..1
+requestResponse0..*
0..*+fault
+output
+output
+input
+output
+boperation0..*
+output0..1
+input0..1
+fault
0..*
+input
+message
+message
22
La plate-forme J2EE
Un métamodèle de Java (fragment)
JElement
+name:String+visibility:Visibility+modifier:Modifier
JPrimitiveType
+type:TypeName
JValue
+value:String
JParameter
+result:Boolean
JMember
JavaPackage
JField
+isTransient:Boolean+isVolatile:Boolean+isFinal:Boolean
JClass
+isActive:Boolean
JInterface
JMethod
+isNative:Boolean+isSinchronized:Boolean+body:String
JClassifier
0..1
0..*+nested
0..1 +super+sub0..*
+type+type
+type
+owner0..*
0..* 0..*
0..*
0..*0..1
+contents
+implementedby+implements
0..*0..*
0..1 +owner
0..*+parameters+has+value0..1
+members
+throws
La plate-forme J2EE - Approche MDA pour la plate-forme Services Web
23
La plate-forme J2EE - Approche MDA pour la plate-forme Services Web
Un template et un métamodèle pour JWSDP (fragment)
<<JInterface>>Remote
<<JInterface>>WSInterface
<<JMethod>>WSOperation
<<JClass>>WSClass
<<JMethod>>WSOperation
<<JClass>>RemoteException
Throws Throws
+jmethods 1..* +jmethods 1..*
Template
Métamodèle JWSDP
WebApp
DisplayName
Description
SessionConfig
SessionTimeOut
+displayName
+description
+sessionConfig+sessionTimeOut
0..1
0..1
0..1
web
0..1
24
Étude et applications de l’approche MDA pour des plates-formes de Service Web
Sommaire•Introduction
•État de l’art
•Approche MDA pour la plate-forme Services Web : modélisation
•Spécification de correspondances et définition de transformations
- UML vers Services Web
- UML vers J2EE
- EDOC vers Services Web
- Comparaisons
•Un outil pour la spécification de correspondances
•Conclusion
Le choix ou la création des métamodèles pour le PIM
Le choix ou la création des métamodèles pour le PSM
La spécification des correspondances entre les métamodèles du PIM et du PSM
La génération de la définition de transformations
L’application de la définition de transformations (PIM vers PSM)
Compléter le PSM
Générer le code source, scripts, fichiers de déploiement, etc (PSM vers code)
[PSM est complet]
[oui]
[non]
UML et EDOC WSDL et J2EE (Java + JWSDP)
25
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
WSDL
Spécification de correspondances et définition de transformations
UMLmetamodel
WSDLmetamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperationPort
Service
Definition+_targetNameSpace+name
+types0..1
+types
+part0..*+message
0..*
+operation0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service
0..*
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification+method
C2S
P2Part
M2Bo
Dt2T
P2D
A2T
module UML2WSDL;create OUT : WSDL from IN : UML;rule C2S{
from c : UML!Classto s : WSDL!Service(
name <- 'Service' + c.name,owner <- c.namespace,port <- pt
),*** } ***
Générée à partir de
O2O
Étude et applications de l’approche MDA pour des plates-formes de Services Web
SW – Services Web
26
UML vers Services WebUML metamodel WSDL metamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition
+_targetNameSpace+name
+types0..1
+types
+part0..*+message0..*
+operation 0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service0..*
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification
+method
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification
+method
C2S
P2Part
O2O
M2Bo
Dt2T
P2D
A2T
UML vers Services Web - Spécification de correspondances …
Me
sourcetarget mapping element
composition
ClassService
name:String
Definition
+ownerClassifier
ModelElementname:String
Namespace
+namespace
0..1
C2S
n2nname name
n2onamespace owner
‘Service’+@
27
UML vers Services Web - Spécification de correspondances …
module UML2WSDL;create OUT : WSDL from IN : UML;rule C2S{
from c : UML!Classto s : WSDL!Service(
name <- 'Service' + c.name,owner <- c.namespace,port <- pt
),pt : WSDL!Port(
name <- c.name + 'Port',binding <- bd,documentation <-'\t\t<soap:address location="'+ ***
),bd : WSDL!Binding(
name <- c.name + 'Binding',owner <- c.namespace,type <- pType,boperations <- c.feature ->select (e|e.oclIsTypeOf(UML!Method)),soapBinding <- soapB
),pType: WSDL!PortType( name <- c.name,***)
} ***
UML metamodel WSDL metamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition+_targetNameSpace+name
+types0..1
+types
+part0..*+message0..*
+operation0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service
0..*
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification
+method
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification
+method
C2S
P2Part
O2O
M2Bo
Dt2T
P2D
A2T
28
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code <?xml version="1.0" encoding="UTF-8"?><definitions name="Service_travelagency" targetNamespace="urn://travelagency.wsdl"><types> *** </types><message name="findTravel"> <part name="travelReq" type="ns:TravelReq"/></message>***<portType name="ServiceTravelAg">***</portType><service name="ServiceTravelAg"> *** </service></definitions>
Générée à partir de
modèle WSDLWSDLElementDocumentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition
+_targetNameSpace+name
+types0..1
+types
+part 0..*
+message
0..*
+operation0..*
+portType 0..* +type
+binding 0..*
+boperations 0..*
+port 0..*
+service
0..*
document WSDL
UML vers Services Web - Spécification de correspondances …
SW – Services Web
29
UML vers Services Web - Spécification de correspondances …
<?xml version="1.0" encoding="UTF-8"?><definitions name="Service_travelagency" targetNamespace="urn://travelagency.wsdl"> <types> *** </types> <message name="findTravel"> <part name="travelReq" type="ns:TravelReq"/> </message> *** <portType name="ServiceTravelAg">
<operation name="findTravel" parameterOrder=""><input message="findTravel"/><output message="findTravelResponse"/>
</operation>***
</portType> <binding name="ServiceTravelAgBinding" type="ServiceTravelAg">
<operation name="findTravel"> *** </operation>***
</binding> <service name="ServiceTravelAg">
<port name="ServiceTravelAgPort" binding="ServiceTravelAgBinding"><soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port> </service></definitions>
travelagency
+findTravel(travelReq:TravelReq):TravelList+reserveTravel(travelSel:TravelInf):Reserv+payTravel(payInf:PayInf):AckPay+cancelTravel(reservInf:Reserv):AckCancel
ServiceTravelAg
30
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
transformationmodèle-vers-modèle
UML vers J2EE - Spécification de correspondances …
UML vers J2EE (Java + JWSDP) de manière progressive.
module UML2JAVAM;create OUT : JAVAM from IN : UML;rule C2Jc{from c : UML!Class to jc : JAVAM!JClass( name <- c.name, visibility <- if c.visibility = #vk_public then
***) } ***
Générée à partir de
UML metamodel
Java metamodelMapping
JElement
JPackage
JClassifier
ModelElement
Namespace
Package
AssociationEnd
Interface
Attribute
Operation
Method
Parameter
DataType
+specification
+method
P2P
GeneralizableElement
Generaliation
Class
JClass
JInterface
JPrimitiveType
JMember
JField
JValue
JMethod
JParameter
+implemetedby+implements
+owner+jparameters
+type+type+nested
+super
0..*
0..1
0..*0..*
0..*
0..*
Ae2F
C2Jc
OM2M
Pr2Pr
Dt2Jpt
I2I
A2F
31
UML vers J2EEUML metamodel Java metamodelMapping
JElement
JPackage
JClassifier
ModelElement
Namespace
Package
AssociationEnd
Interface
Attribute
Operation
Method
Parameter
DataType
+specification
+method
P2P
GeneralizableElement
Generaliation
Class
JClass
JInterface
JPrimitiveType
JMember
JField
JValue
JMethod
JParameter
+implemetedby+implements
+owner+jparameters
+type+type+nested
+super
0..*
0..1
0..*
0..*
0..*
0..*
Ae2F
C2Jc
OM2M
Pr2Pr
Dt2Jpt
I2I
A2F
UML vers J2EE - Spécification de correspondances …
32
module UML2JAVAM;create OUT : JAVAM from IN : UML;rule C2Jc{
from c : UML!Class to jc : JAVAM!JClass(name <- c.name,visibility <- if c.visibility = #vk_public then
#publicelse if c.visibility = #vk_private then
#privateelse
#protected endif endif,
isActive <- c.isActive,jpackage <- c.namespace,super <- if c.generalization -> select(e|e.parent <> c)->size() > 0 then
c.generalization -> select(e|e.parent <> c)-> first().parentelse JAVAM!JClassendif,
implements <- c.clientDependency -> select(e|e.stereotype->exists(e|e.name='realize'))->collect(e|e.supplier),
***) } ***
UML vers J2EE - Spécification de correspondances …
33
UML vers J2EE - Spécification de correspondances …
Java metamodel Java metamodelMapping
JElement
JPackage
JClassifier
JClass
JInterface
JPrimitiveType
JMember
JMethod
+implemetedby+implements
+nested
+super
0..*
0..1
0..*
0..*
+throws
JElement
JPackage
JClassifier
JClass
JInterface
JPrimitiveType
JMember
JMethod
+implemetedby+implements
+nested
+super
0..*
0..1
0..*
0..*
+throws
P2P
C2Cserv
C2C
I2I
M2M
M2Mt
<<JInterface>>Remote
<<JInterface>>WSInterface
<<JMethod>>WSOperation
<<JClass>>WSClass
<<JMethod>>WSOperation
<<JClass>>RemoteException
Throws Throws
+jmethods 1..* +jmethods 1..*
Template
34
module Java2Java;create OUT : JAVAMR from IN : JAVAM;uses strings;rule C2Cserv{
from c : JAVAM!JClass( c.name.startsWith('Service'))
to jc : JAVAMR!JClass(name <- c.name,***implements <- c.implements->asSequence()->including(ITF) ),ITF : JAVAMR!JInterface(name <- 'ITF_'+c.name,super <- JAVAMR!JInterface.allInstances()->select(e|e.name='Remote')->first(),)
}rule M2Mt{
from m : JAVAM!JMethod (m.owner.name.startsWith('Service'))to jm : JAVAMR!JMethod(
name <- m.name,throws <- JAVAMR!JClass.allInstances()->
select(e|e.name='RemoteException')->first()), ***}
***
UML vers J2EE - Spécification de correspondances …
<<JInterface>>Remote
<<JInterface>>WSInterface
<<JMethod>>WSOperation
<<JClass>>WSClass
<<JMethod>>WSOperation
<<JClass>>RemoteException
Throws Throws+jmethods 1..* +jmethods 1..*
Template
35
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code // CLASSpackage travelagency;public class ServiceTravelAg implements travelagency.ITF_ServiceTravelAg {public Reserv reserveTravel(TravelInf travelSel) throws java.rmi.RemoteException {
//Type your code here}***}// INTERFACEpackage travelagency;public interface ITF_ServiceTravelAg extends java.rmi.Remote {public Reserv reserveTravel(TravelInf travelSel) throws java.rmi.RemoteException;***}
Générée à partir de
Java model+JWSDP API
JElement
JPackage
JClassifier
JClass
JInterface
JPrimitiveType
JMember
JField
JValue
JMethod
+implemetedby+implements
+type+nested
+super
0..*
0..1
0..*0..*
0..*
UML vers J2EE - Spécification de correspondances …
36
// CLASSpackage travelagency;
public class ServiceTravelAg implements travelagency.ITF_ServiceTravelAg {
public Reserv reserveTravel(TravelInf travelSel) throws java.rmi.RemoteException { ***}
public TravelList findTravel(TravelReq travelReq) throws java.rmi.RemoteException { ***}
public AckCancel cancelTravel(Reserv reservInf) throws java.rmi.RemoteException { ***}
public AckPay payTravel(PayInf payInf) throws java.rmi.RemoteException {***}****}
// INTERFACEpackage travelagency;
public interface ITF_ServiceTravelAg extends java.rmi.Remote {public Reserv reserveTravel(TravelInf travelSel) throws java.rmi.RemoteException;public TravelList findTravel(TravelReq travelReq) throws java.rmi.RemoteException;public AckCancel cancelTravel(Reserv reservInf) throws java.rmi.RemoteException;public AckPay payTravel(PayInf payInf) throws java.rmi.RemoteException; }
UML vers J2EE - Spécification de correspondances …
travelagency
+findTravel(travelReq:TravelReq):TravelList+reserveTravel(travelSel:TravelInf):Reserv+payTravel(payInf:PayInf):AckPay+cancelTravel(reservInf:Reserv):AckCancel
ServiceTravelAg
<<JInterface>>Remote
<<JInterface>>WSInterface
<<JMethod>>WSOperation
<<JClass>>WSClass
<<JMethod>>WSOperation
<<JClass>>RemoteException
Throws Throws+jmethods 1..* +jmethods 1..*
Template
37
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
- profil UML pour EDOC- métamodèle EDOC
EDOC vers Services Web - Spécification de correspondances …
module EDOCprof2WSDL;create OUT : WSDL from IN : UML;
helper context UML!Class def: getEDOCProtocolPort(): ***
rule Pc2S{ ***}***
Générée à partir de
UML profile for ECA
WSDLmetamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition
+_targetNameSpace+name
+types0..1
+types
+part0..*+message
0..*
+operation 0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service
0..*
Package
<<DataElement>>Class De2T
<<ExternalDocument>>DataType
<<Attribute>>Attribute
<<FlowPort>>Class
<<Port>>Class
<<ProtocolPort>>Class
<<PortOwner>>Class
<<ProcessComponent>>Classifier
<<CompositeData>>Class+owner+feature1..*
<<OperationPort>>Class
+type
+ports1..*
P2D
A2P
Pc2S
F2M
O2O
P2PB
SW – Services Web
38
EDOC vers Services WebEDOC vers Services Web - Spécification de correspondances …
UML profile for ECA WSDL metamodelMappingWSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition
+_targetNameSpace+name
+types0..1
+types
+part0..*+message0..*
+operation 0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service0..*
Package
<<DataElement>>Class De2T
<<ExternalDocument>>DataType
<<Attribute>>Attribute
<<FlowPort>>Class
<<Port>>Class
<<ProtocolPort>>Class
<<PortOwner>>Class
<<ProcessComponent>>Classifier
<<CompositeData>>Class
+owner+feature1..*
<<OperationPort>>Class
+type
+ports1..*
P2D
A2P
Pc2S
F2M
O2O
P2PB
39
module EDOCprof2WSDL;create OUT : WSDL from IN : UML;
-- helpershelper context UML!Class def: getEDOCProtocolPort(): Sequence(UML!Class) = UML!AssociationEnd.allInstances()->select(e|e.participant=self)-> collect(x|x.association)->first().connection-> select(y|y.participant <> self)-> select(z | z.participant.hasStereotype('ProtocolPort') and z.participant.inheritInterface())-> collect(e|e.participant);
rule Pc2S{ from c : UML!Class (c.hasStereotype('ProcessComponent') and c.hasAssocResponds()) to s : WSDL!Service( name <- c.name, owner <- c.namespace, port <- c.getEDOCProtocolPort() *** )}
***
EDOC vers Services Web - Spécification de correspondances …
40
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
EDOC vers Services Web - Spécification de correspondances …
module EDOC2WSDL;create OUT : WSDL from IN : EDOC;
rule Pc2S{from pc: EDOC!ProcessComponent
to sv: WSDL!Service(***)
}***
Générée à partir de
EDOC-CCAmetamodel
WSDLmetamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition+_targetNameSpace+name
+types0..1
+types
+part0..*+message
0..*
+operation0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service
0..*
Package
DataElementDe2T
DataType
Attribute
<<boundary>>FlowPort
<<boundary>>Port
<<boundary>>ProtocolPort
PortOwner
ProcessComponent
CompositeData+owner+feature1..*
<<boundary>>OperationPort
+type
+ports1..*
P2D
A2P
F2M
O2O
P2PB
Pc2S
SW – Services Web
41
EDOC vers Services Web - Spécification de correspondances …
EDOC-CCAmetamodel WSDL metamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition
+_targetNameSpace+name
+types0..1
+types
+part0..*+message0..*
+operation 0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service0..*
Package
DataElementDe2T
ExternalDocument
Attribute
<<boundary>>FlowPort
<<boundary>>Port
<<boundary>ProtocolPort
PortOwner
ProcessComponent
CompositeData+owner+feature1..*
<<boundary>>OperationPort
+type
+ports1..*
P2D
A2P
Pc2S
F2M
O2O
P2PB
42
EDOC-CCAmetamodel
WSDLmetamodelMapping
UML metamodel WSDL metamodelMapping
WSDLElement Documentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition+_targetNameSpace+name
+types0..1
+types
+part0..*+message
0..*
+operation0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service
0..*
Package
DataElementDe2T
DataType
Attribute
<<boundary>>FlowPort
<<boundary>>Port
<<boundary>>ProtocolPort
PortOwner
ProcessComponent
CompositeData+owner+feature1..*
<<boundary>>OperationPort
+type
+ports1..*
P2D
A2P
F2M
O2O
P2PB
Pc2S
EDOC vers Services Web - Spécification de correspondances …
module EDOC2WSDL;create OUT : WSDL from IN : EDOC;rule Pc2S{ from pc : EDOC!ProcessComponent to sv: WSDL!Service( name <- pc.name, owner <- pc.namespace, port <- pc.ports->select(e|e.oclIsKindOf(EDOC!ProtocolPort)) )}
module EDOCprof2WSDL;create OUT : WSDL from IN : UML-- helpers helper context UML!Class def: getEDOCProtocolPort(): Sequence(UML!Class) = UML!AssociationEnd.allInstances()->select(e|e.participant=self)-> collect(x|x.association)->first().connection-> select(y|y.participant <> self)-> select(z | z.participant.hasStereotype('ProtocolPort') and z.participant.inheritInterface())-> collect(e|e.participant);rule Pc2S{ from c : UML!Class (c.hasStereotype('ProcessComponent') and c.hasAssocResponds()) to s : WSDL!Service( name <- c.name, owner <- c.namespace, port <- c.getEDOCProtocolPort() *** ) }***
profil UML pour EDOC vers WSDL
Instructions:allInstances = 1select = 3collect = 2first =1Total = 7
Métamodèle EDOC-CCA vers WSDL
Instructions:select = 1oclIsKindOf = 1
Total = 2
43
transformationmodèle-vers-code
Modèle Source (UML ou EDOC)
Modèle Cible (J2EE)
Code source (Java), fichiers de déploiement
et configuration
Modèle Cible (dotNET)
Code source (C#), fichiers de déploiement
et configuration
transformationmodèle-vers-modèle
Modèle Cible (SW)
Code source (XML)« document WSDL »« document BPEL »
PSM
PIM
Code
UML vers Services Web - Spécification de correspondances …
Générée à partir de
modèle WSDLWSDLElementDocumentation
Type
Part
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition
+_targetNameSpace+name
+types0..1
+types
+part 0..*
+message
0..*
+operation0..*
+portType 0..* +type
+binding 0..*
+boperations 0..*
+port 0..*
+service
0..*
document WSDL<?xml version="1.0" encoding="UTF-8"?><definitions name="Service_travelagency" targetNamespace="urn://travelagency.wsdl">*** </binding> <service name="TravelAg">
<port name="SellTravelPort" binding="SellTravelBinding"><soap:address
location="REPLACE_WITH_ACTUAL_URL"/></port>
</service></definitions>
- profil UML pour EDOC- métamodèle EDOC
SW – Services Web
44
<?xml version="1.0" encoding="UTF-8"?><definitions name="Service_travelagency" targetNamespace="urn://travelagency.wsdl"> <types>*** </types> <message name="findTravelCall">
<part name="travelReq" type="ns:TravelReq"/> </message> *** <portType name="SellTravel"> <operation name="findTravel" parameterOrder=""> <input message="findTravelCall"/>
<output message="findTravelResponse"/> </operation>
*** </portType> <binding name="SellTravelBinding" type="SellTravel"> **** </binding> <service name="TravelAg">
<port name="SellTravelPort" binding="SellTravelBinding"><soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port> </service></definitions>
EDOC vers Services Web - Spécification de correspondances …
<<Protocol>>BuySellTravel
<<ProtocolPort>>SellTravel
<<ProcessComponent>>TravelAg
<<responds>>
<<OperationPort>>FindTravel
+findTravel
<<FlowPort>>FindTravelCall
<<FlowPort>>FindTravelResponse
<<initiates>> <<responds>>
<<CompositeData>>FindTravelCall
<<CompositeData>>FindTravelResponse
45
Spécification de correspondances et définition de transformations
Comparaisons
UML(version 1.4)
EDOC(profil UML)
EDOC (métamodèle)
WSDL normal complexe** simple
BPEL complexe* - -
J2EE(Java + JWSDP)
normal complexe** simple
dotNET(C# + API)
normal - -
PIMPSM
* L’utilisation de profils (valeurs marquées) → utilisation de filtres et requêtes plus complexes.
** L’utilisation de profils (stéréotypes) → utilisation de filtres et requêtes plus complexes.
Spécification de correspondances et définition de transformation :PIM vers PSM
Les deux plates-formes sont similaires pour le processus de transformation
Un intergiciel de plus
EDOC (métamodèle) est plus adapté pour modéliser un métier et puis le transformer en
services Web
46
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Sommaire•Introduction
•État de l’art
•Approche MDA pour la plate-forme Services Web : modélisation
•Spécification de correspondances et définition de transformations
•Un outil pour la spécification de correspondances
- Fondements pour la spécification de correspondances
- Métamodèle de correspondance
- MMT (Mapping Modeling Tool)
- Applications aux services Web : UML2WSDL
- Apports de notre outil
•Conclusion
47
Spécification de Correspondances
Définition de Transformations
0..*
1+spec
Un outil pour la spécification de correspondances
Générée à partir de
UMLmetamodel
WSDLmetamodelMapping
WSDLElement Documentation
TypePart
Message
Operation
PortType
Binding
BindingOperation
Port
Service
Definition+_targetNameSpace+name
+types0..1
+types
+part0..*+message
0..*
+operation0..*
+portType0..*+type
+binding0..*
+boperations0..*
+port0..*+service
0..*
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification+method
ModelElement
Namespace
Package
AssociationEnd
Class
Interface
Attribute
Operation
Method
Parameter
DataType
+specification+method
C2S
P2Part
O2O
M2Bo
Dt2T
P2D
A2T
module UML2WSDL;create OUT : WSDL from IN : UML;rule C2S{
from c : UML!Classto s : WSDL!Service(
name <- 'Service' + c.name,owner <- c.namespace,port <- pt
),*** } ***
Étude et applications de l’approche MDA pour des plates-formes de Services Web
48
Soit M1(s)/Ma,M2(s)/Mb, et CMa→Mb/Mc où: M1 est un modèle du système s créé en utilisant le métamodèle Ma.M2 est un modèle du même système s créé en utilisant le métamodèle Mb .CMa→Mb/Mc est un modèle de correspondances entre Ma et Mb créé en utilisant le métamodèle Mc .Alors la transformation peut être définie comme la fonction suivante :
Un outil pour la spécification de correspondances
Fondements pour la spécification de correspondances
bCMbMaa (s)/MM)/M,C(s)/MTransf(M 21 MC
MMM
source MM target MMmapping MM
mapping M
transformation MM
transformation M
conformsTo
conformsToconformsTo
conformsTo
+left +right
generatedFrom
conformsTo
conformsTo
49
Un outil pour la spécification de correspondances
Métamodèle de correspondance
+name:EString
Element
+version:EString+note:EString
Definition
+filter:oclExpression
Left
+lastupdate:EString+lastnote:EString+lastversion:EString
Historic
+path:EString
MetaModelHandler
Right
+converter:oclExpression
TypeConverter
+path:EString+type:EString
ElementHandler <<EDataType>>oclExpression
+bidirectional:EBooleanObject+note:EString+filter:oclExpression
Correspondence
+left +right1..*
+handler +handler0..*+nested
+enclosing
+correspondence +nested
+left +right
+handlers1..*
0..1 +typeconverterRL
+typeconverterLR
+definition
0..*
0..*1..*
50
Génère la définition de transformation à partir d’un modèle de correspondance
Génère une représentation textuelle simplifiée du modèle de correspondances.
Crée un modèle de correspondance
Vérifie la conformité de ce modèle de correspondance avec son métamodèle.
L’outil est basé sur EMF (Eclipse Modeling Framework)
MMT (Mapping Modeling Tool)
Un outil pour la spécification de correspondances
51
MMT (Mapping Modeling Tool) - Un outil pour la spécification de correspondances
52
module UML2JAVAM;create OUT : JAVAM from IN : UML;rule C2Jc{
from c : UML!Class (c.namespace <> 'service')to jc : JAVAM!JClass(name <- c.name,visibility <- if c.visibility = #vk_public then
#publicelse if c.visibility = #vk_private then
#privateelse
#protected endif endif,
isActive <- c.isActive,jpackage <- c.namespace,super <- if c.generalization ->
select(e|e.parent <> c)->size() > 0 then c.generalization -> select(e|e.parent <> c)->
first().parent else JAVAM!JClass
endif,implements <- c.clientDependency ->
select(e|e.stereotype->exists(e|e.name='realize'))->collect(e|e.supplier),
***) } ***
Généré manuellementGénéré
automatiquement
Un outil pour la spécification de correspondances
53
Un outil pour la spécification de correspondances
MMT(Mapping Modeling Tool)Applications aux Services Web : UML2WSDL
Vérifie la conformité de ce modèle de correspondance avec son métamodèle.
Génère une représentation textuelle simplifiée du modèle de correspondances.
Crée un modèle de correspondance
Génère la définition de transformation à partir d’un modèle de correspondance
54
Un outil pour la spécification de correspondances
Applications aux Services Web : UML2WSDL
module UML2WSDL;create OUT : WSDL from IN : UML;rule C2S{
from c : UML!Classto s : WSDL!Service(
name <- 'Service' + c.name,owner <- c.namespace,port <- pt
),pt : WSDL!Port(
name <- c.name + 'Port',binding <- bd,documentation <-'\t\t<soap:address location="'+ ***
),bd : WSDL!Binding(
name <- c.name + 'Binding',owner <- c.namespace,type <- pType,boperations <- c.feature ->
select (e|e.oclIsTypeOf(UML!Method)),soapBinding <- soapB
),pType: WSDL!PortType(name <- c.name,***)
} ***
Généré manuellement
Généré automatiquement
55
Un outil pour la spécification de correspondances
Apports de notre outil
• La séparation de préoccupations:
- La spécification de correspondances est un PIM.
- La définition de transformations est un PSM.
• « L’indépendance » d’un langage de transformation.
• Un atout pour l’évolution et la préservation de la logique métier (i.e. modèle de correspondances) :
- Un modèle de correspondance peut évoluer si les métamodèles changent.
• Une approche plus intuitive et plus simple que le codage direct de définition de transformations.
56
Étude et applications de l’approche MDA pour des plates-formes de Services Web
Sommaire•Introduction
•État de l’art
•Approche MDA pour la plate-forme Services Web : modélisation
•Spécification de correspondances et définition de transformations
•Un outil pour la spécification de correspondances
•Conclusion
- Contribution
- Perspectives
57
• Approche conceptuelle et expérimentale de MDA pour les services Web :
- Méthodologie et architecture type.
- Métamodèles : services Web (WSDL, BPEL), J2EE et dotNET.
- Des spécifications de correspondances et des définitions de transformations.
- Une étude de l’impact d’un langage de modélisation (UML x EDOC) ou d’une plate-forme (J2EE x dotNET).
- MMT (outil pour la création de correspondances et la génération de définition de transformations).
ConclusionÉtude et applications de l’approche MDA pour des plates-formes de Services Web
58
Conclusion
Perspectives
• L’étude d’autres langages tel que UEML, et d’autres plates-formes JXTA.
• L’utilisation d’action semantics.
• La distance sémantique entre métamodèles doit être plus étudiée.
• L’intégration des algorithmes de schema matching dans notre outil MMT.
• L’introduction d’un mécanisme d’extension dans notre métamodèle de correspondance.
• Une étude plus détaillée entre les différents types de relations entre les éléments de correspondances.
59
Publications
Approche MDA pour le développement d’applications internet sur des plates-formes services web : Modélisation, transformation et prototypage, Revue d’Ingénierie des Systèmes d’Information, Hermes science publications, juillet, 2005.
Generating Transformation Definition from Mapping Specification: Application to Web Service Platform, The 17th Conference on Advanced Information Systems Engineering (CAiSE’05), LNCS 3520, 309-325, Porto, Portugal, June 13-17, 2005.
Mapping Specification in MDA: From Theory to Practice, First International Conference Interoperability of Enterprise Software and Applications (INTEROP-ESA’05), Publisher Springer, Switzerland, February 21 - 25, 2005.
B2B Applications, BPEL4WS, Web Services and dotNET in the context of MDA, International Conference on Enterprise Integration and Modelling Technology (ICEIMT’04), Canada, Toronto, October 9-11, 2004.
Étude et applications de l’approche MDA pour des plates-formes de Services Web
60
Publications
Applying MDA Approach for Web Service Platform, The 8th International IEEE Enterprise Distributed Object Computing Conference (EDOC’04), Monterey, USA, September 20-24, 2004.
Applying MDA Approach to B2B Applications: A Road Map, Workshop on Model Driven Development (WMDD’04) - at ECOOP 2004, Oslo, Norway, June 15, 2004.
An Experiment in Mapping Web Services to Implementation Platforms, Research Report, RR-IRIN2004-01, France, March 2004.
Web Services in the Context of MDA, The 2003 International Conference on Web Services (ICWS’03), Las Vegas, USA, June 23-26, 2003.
61
Étude et applications de l’approche MDA pour des
plates-formes de Service Web
Merci de votre attention!
Denivaldo Lopese-mail: [email protected] home-page: http://www.eseo.fr/~dlopes