Présentée et soutenue par Denivaldo LOPES

Slides:



Advertisements
Présentations similaires
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Advertisements

Développement dapplications sur mobiles.NET et J2ME, C++ et Symbian WIPLIER Thomas – M2IRT2009 – 15/02/2007.
Distance inter-locuteur
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Les numéros
19 septembre 2006 Tendances Logicielles MDD/MDA : Génération dapplications avec IBM Rational Software Architect Jean-Pierre Schoch –
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Projet n°4 : Objecteering
Smart House System Framework Vincent Chicherie
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Approche par composant : Un cadre pour l’ingénierie de la commande
1 Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février Version 1.0 -
PILOTE - Sous Projet PILOTE SOUS-PROJET 5 Cyril Carrez, Elie Najm, Alexandre Tauveron.
PILOTE - Sous Projet PILOTE SOUS-PROJET 5 Cyril Carrez, Elie Najm, Alexandre Tauveron.
BDA'02 1 Tolérance aux fautes (TaF) adaptable pour les systèmes à composants : application à un gestionnaire de données Phuong-Quynh Duong, Elizabeth Pérez-Cortés,
Méta-modélisation et Référentiels d’Entreprise
09/03/2014 EF Installations de suivi environnemental Draft data specification Version 2.0 TWG EF Facilitators: Franz Daffner, Sylvain Grellet.
LOGO Profile Enterprise Java Beans Réaliser par: HAMROUNI Aymen HOUIJI Manel WESLATI Yassine.
Live Meeting Technique N°3 Thomas LEBRUN – MVP WPF/Silverlight Florent SANTIN – MVP Team System Julien CORIOLAND - MSP.
Injection de dépendances
-17 Anticipations économiques en Europe Septembre 2013 Indicateur > +20 Indicateur 0 a +20 Indicateur 0 a -20 Indicateur < -20 Union européenne total:
Introduction aux services WEB
UML : GENERALITES Rappel Diagrammes Niveaux de visions
Etude des Technologies du Web services
TM.
XML-Family Web Services Description Language W.S.D.L.
le profil UML en temps réel MARTE
MDA en action Ingénierie logicielle guidée par les modèles
From Web services to Ubiquitous computing
Rennes, le 18 septembre 2006 Support du paradigme maître-travailleur dans les applications à base de composants Tâche 2.2 Hinde Bouziane Réunion LEGO.
Spécification et Vérification de Modèles de Procédés de Développement
Titre : Implémentation des éléments finis sous Matlab
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Complément Le diagramme des classes
ADOBE FLEX 4. © Logica All rights reservedNo. 2 Introduction Flex en action Autour de Flex Logica Le programme.
Framework orienté-service de médiation de données
ETL et Data Mining Présenté par : Marc Catudal-Gosselin Université de Sherbrooke automne 2004 automne 2004.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Ecaterina Giacomini Pacurar
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
LE PROFILE UML POUR MARTE
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
Projet de Master première année 2007 / 2008
Sensibilisation a la modelisation
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Découverte de correspondances entre ontologies distribuées
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Le workflow Encadré par: M . BAIDADA Réalisé par: ATRASSI Najoua
Introduction.
Branche Développement Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Transformation de modèles Kick Off Motor Jean Marc Jézéquel & Didier Vojtisek La vision Triskell : Umlaut NG.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
Modélisation des données Niveau conceptuel DON-2 V0-0.
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
USAM BRIDGE H O W E L L -CLASSIQUE
Ministère de l’Éducation, du Loisir et du Sport Responsables des programmes FLS et ELA: Diane Alain et Michele Luchs Animateurs: Diane Alain et Michael.
9 paires séries de 3 étuis ( n° 1 à 27 )
Projet SwitcHome Cahier des charges techniques Adeline COUPE, Hélène DRAUX, Ismaïla GIROUX, Loïc TACHET.
Les Chiffres Prêts?
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Mastère Professionnel Systèmes de Communication et Réseaux
2 Processus de conception de BD
Introduction à l’ingénierie dirigée par les modèles
Réalisé avec le soutien de Pied de page fixe Pied de page 1 Titre Sous titre.
Introduction aux technologies des web services en Java EE
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
MDA ( Model Driven Architecture ). Introduction Model Driven Architecture ● Framework ● Développement de logiciels ● Object Management Group (OMG) ●
Transcription de la présentation:

Présentée et soutenue par Denivaldo LOPES Université de Nantes – LINA École Supérieure d’Électronique de l’Ouest – ESEO Étude et applications de l’approche MDA pour des plates-formes de Services Web Présentée et soutenue par Denivaldo LOPES Directeur de Thèse : Pr. Jean BÉZIVIN Co-encadrant : Slimane HAMMOUDI le 11 juillet 2005

Sommaire Introduction État de l’art É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

Introduction Contexte : Internet et Services Web Étude et applications de l’approche MDA pour des plates-formes de Services Web Introduction Contexte : Internet et Services Web - un intergiciel unificateur ? - interopérabilité sur l’Internet ? ? XML-RPC DCOM/COM+ CORBA-IIOP EDI-standards HTTP/HTML CGI RPC Java RMI Travel Agency Airlines Internet/ Intranet RentCar Client Client Les services Web ! (XML, SOAP, WSDL et UDDI) Hotel Client

pour l’interopérabilité. Étude et applications de l’approche MDA pour des plates-formes de Services Web Internet et Services Web 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). WSDL Services Web SOAP est accédé en utilisant UDDI supporte la découverte de attaché à supporte la communication entre décrit XML comme la clé pour l’interopérabilité.

Internet et Services Web Contexte - Introduction Internet et Services Web 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. 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.

Contexte : Architecture dirigée par les modèles (MDA)* Contexte - Introduction Contexte : Architecture dirigée par les modèles (MDA)* MOF Ecore Other metamodeling language Metamodel Infrastructure PIM Mapping Techniques PIM PSM PSM Mapping 1..* <<conformsTo>> << conformsTo >> <<depends on>> <<are described with>> Mapping from PSM to PSM from PIM to PIM <<independant of>> <<expressed with>> Refactoring from PSM to PIM from PIM to PSM PIM – Platform Independent Model PSM – Platform Specific Model * OMG, Model Driven Architecture (MDA) – ormsc/2001-07-01, 2001.

Motivations Problématique Les services Web : Introduction 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.

Démarche * SW – Services Web Introduction Démarche transformation modè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. modèle-vers-modèle Modèle Cible (SW*) Code source (XML) « document WSDL » « document BPEL » PSM PIM Code transformation modè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. modè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)

Sommaire Introduction État de l’art : Correspondance entre métamodèles É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

Étude et applications de l’approche MDA pour des plates-formes de Services Web É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.

Correspondance entre métamodèles 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 AB B A 1 * domain range relation element AReIB * J. HAUSMANN et S. KENT. Visualizing Model Mappings in UML. SOFTVIS’03.

La transformation de modèles État de l’art La transformation de modèles En 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é.

Une correspondance entre un modèle métier en UML et WSDL* État de l’art Application de MDA pour la plate-forme des Services Web : Aspects statiques UML WSDL Une correspondance entre un modèle métier en UML et WSDL* * David FRANKEL et John PARODI. Using Model-Driven ArchitectureTM to DevelopWeb Services. Rapport technique, IONA Technologies PLC, April 2002.

Sommaire Introduction État de l’art É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

Approche MDA pour la plate-forme Services Web : modélisation Étude et applications de l’approche MDA pour des plates-formes de Services Web 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

Une architecture type pour la transformation de modèles Méthodologie - Approche MDA pour la plate-forme Services Web MMM conformsTo source MM target MM +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 Mapping Me source target Mapping Element composition +left mapping MM mapping M conformsTo +right generatedFrom transformation M conformsTo transformation MM source M target M source target Spécification de correspondances Définition de Transformations transformation program exec transformation engine MMM : metametamodel MM : metamodel M : model Une architecture type pour la transformation de modèles

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 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) [PSM est complet] [non] Compléter le PSM [oui] Générer le code source, scripts, fichiers de déploiement, etc (PSM vers code) Méthodologie pour l’application de la démarche MDA

Étude de cas : UML AirLines Travel Agency AirLinesService CarHire Étude de cas : UML - Approche MDA pour la plate-forme Services Web Étude de cas : UML HotelService Hotel CarHire Bank AirLines Travel Agency TravelService AirLinesService RentingCarService BankService Customer travelagency +findTravel(travelReq:TravelReq):TravelList +reserveTravel(travelSel:TravelInf):Reserv +payTravel(payInf:PayInf):AckPay +cancelTravel(reservInf:Reserv):AckCancel ServiceTravelAg

Le Community Process de l’agence de voyages (Notation CCA) Étude de cas : EDOC - Approche MDA pour la plate-forme Services Web Étude de cas : EDOC MakePayment Bank BuyTravel Customer AirLines SellFlightTicket CarHire RentCar Hotel BookHotel BuyFlightTicket TravelAg SellTravel Le Community Process de l’agence de voyages (Notation CCA)

WSDL et J2EE (Java + JWSDP) É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) Méthodologie pour l’application de la démarche MDA

Un métamodèle de WSDL (fragment) Les SW comme plate-forme cible - Approche MDA pour la plate-forme Services Web WSDLElement Documentation Definition +_targetNameSpace +name Fault FaultType OneWayOperation Import Types Part Message Port Binding PortType Service Operation BindingOperation StartWithExtensionType RequestResponseOperation ParamType SolicitResponseOperation 0..* +import 0..1 +types +message +portType +binding +service +port +type +part +operation +solicitResponse +requestResponse +fault +output +input +boperation Un métamodèle de WSDL (fragment)

Un métamodèle de Java (fragment) La plate-forme J2EE - Approche MDA pour la plate-forme Services Web La plate-forme J2EE 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 +super +sub +type +owner +contents +implementedby +implements +parameters +has +value +members +throws Un métamodèle de Java (fragment)

Un template et un métamodèle pour JWSDP (fragment) La plate-forme J2EE - Approche MDA pour la plate-forme Services Web <<JInterface>> Remote WSInterface <<JMethod>> WSOperation <<JClass>> WSClass RemoteException Throws +jmethods 1..* Template Métamodèle JWSDP WebApp DisplayName Description SessionConfig SessionTimeOut +displayName +description +sessionConfig +sessionTimeOut 0..1 web Un template et un métamodèle pour JWSDP (fragment)

Sommaire Introduction État de l’art Étude et applications de l’approche MDA pour des plates-formes de Service 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] UML et EDOC WSDL et J2EE (Java + JWSDP) 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

Spécification de correspondances et définition de transformations Étude et applications de l’approche MDA pour des plates-formes de Services Web Spécification de correspondances et définition de transformations transformation modè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-vers-modèle Modèle Cible (SW) Code source (XML) « document WSDL » « document BPEL » PSM PIM Code UML metamodel WSDL Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service ModelElement Namespace Package AssociationEnd Class Interface Attribute Method Parameter DataType +specification +method C2S P2Part M2Bo Dt2T P2D A2T module UML2WSDL; create OUT : WSDL from IN : UML; rule C2S{ from c : UML!Class to s : WSDL!Service( name <- 'Service' + c.name, owner <- c.namespace, port <- pt ),*** } *** Générée à partir de O2O WSDL SW – Services Web

UML vers Services Web UML metamodel WSDL metamodel Mapping C2S n2n n2o UML vers Services Web - Spécification de correspondances … UML vers Services Web UML metamodel WSDL metamodel Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service ModelElement Namespace Package AssociationEnd Class Interface Attribute Method Parameter DataType +specification +method C2S P2Part O2O M2Bo Dt2T P2D A2T Class Service name:String Definition +owner Classifier ModelElement Namespace +namespace 0..1 C2S n2n name n2o namespace owner ‘Service’+@ Me source target mapping element composition

create OUT : WSDL from IN : UML; rule C2S{ from c : UML!Class UML vers Services Web - Spécification de correspondances … module UML2WSDL; create OUT : WSDL from IN : UML; rule C2S{ from c : UML!Class to 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', type <- pType, boperations <- c.feature ->select (e|e.oclIsTypeOf(UML!Method)), soapBinding <- soapB pType: WSDL!PortType( name <- c.name,***) } *** UML metamodel WSDL metamodel Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service ModelElement Namespace Package AssociationEnd Class Interface Attribute Method Parameter DataType +specification +method C2S P2Part O2O M2Bo Dt2T P2D A2T

SW – Services Web Générée à partir de transformation modèle-vers-code 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">***</portType> <service name="ServiceTravelAg"> *** </service> </definitions> Générée à partir de modèle WSDL WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service document WSDL transformation modè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-vers-modèle Modèle Cible (SW) Code source (XML) « document WSDL » « document BPEL » PSM PIM Code SW – Services Web

ServiceTravelAg travelagency 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

UML vers J2EE (Java + JWSDP) de manière progressive. UML vers J2EE - Spécification de correspondances … 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 Mapping 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 +nested +super 0..* 0..1 Ae2F C2Jc OM2M Pr2Pr Dt2Jpt I2I A2F Modèle Source (UML ou EDOC) PIM transformation modèle-vers-modèle PSM Modèle Cible (SW) Modèle Cible (J2EE) Modèle Cible (dotNET) transformation modèle-vers-code Code source (XML) « document WSDL » « document BPEL » Code source (Java), fichiers de déploiement et configuration Code source (C#), fichiers de déploiement et configuration Code UML vers J2EE (Java + JWSDP) de manière progressive.

GeneralizableElement UML vers J2EE - Spécification de correspondances … UML vers J2EE UML metamodel Java metamodel Mapping 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 +nested +super 0..* 0..1 Ae2F C2Jc OM2M Pr2Pr Dt2Jpt I2I A2F

create OUT : JAVAM from IN : UML; rule C2Jc{ from c : UML!Class UML vers J2EE - Spécification de correspondances … 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 #public else if c.visibility = #vk_private then #private else #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), *** ) } ***

Java metamodel Mapping UML vers J2EE - Spécification de correspondances … Java metamodel Mapping JElement JPackage JClassifier JClass JInterface JPrimitiveType JMember JMethod +implemetedby +implements +nested +super 0..* 0..1 +throws P2P C2Cserv C2C I2I M2M M2Mt <<JInterface>> Remote WSInterface <<JMethod>> WSOperation <<JClass>> WSClass RemoteException Throws +jmethods 1..* Template

create OUT : JAVAMR from IN : JAVAM; uses strings; rule C2Cserv{ UML vers J2EE - Spécification de correspondances … 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() ), ***} <<JInterface>> Remote WSInterface <<JMethod>> WSOperation <<JClass>> WSClass RemoteException Throws +jmethods 1..* Template

Modèle Source (UML ou EDOC) PIM transformation modèle-vers-modèle UML vers J2EE - Spécification de correspondances … // CLASS package travelagency; public class ServiceTravelAg implements travelagency.ITF_ServiceTravelAg { public Reserv reserveTravel(TravelInf travelSel) throws java.rmi.RemoteException { //Type your code here } *** // INTERFACE 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 Modèle Source (UML ou EDOC) PIM transformation modèle-vers-modèle PSM Modèle Cible (SW) Modèle Cible (J2EE) Modèle Cible (dotNET) transformation modèle-vers-code Code source (XML) « document WSDL » « document BPEL » Code source (Java), fichiers de déploiement et configuration Code source (C#), fichiers de déploiement et configuration Code

ServiceTravelAg travelagency // CLASS package travelagency; UML vers J2EE - Spécification de correspondances … // CLASS package 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 {***} **** } // INTERFACE 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; } <<JInterface>> Remote WSInterface <<JMethod>> WSOperation <<JClass>> WSClass RemoteException Throws +jmethods 1..* Template travelagency +findTravel(travelReq:TravelReq):TravelList +reserveTravel(travelSel:TravelInf):Reserv +payTravel(payInf:PayInf):AckPay +cancelTravel(reservInf:Reserv):AckCancel ServiceTravelAg

SW – Services Web - profil UML pour EDOC - métamodèle EDOC EDOC vers Services Web - Spécification de correspondances … - profil UML pour EDOC - métamodèle EDOC 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 WSDL metamodel Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service Package <<DataElement>> Class De2T <<ExternalDocument>> DataType <<Attribute>> Attribute <<FlowPort>> <<Port>> <<ProtocolPort>> <<PortOwner>> <<ProcessComponent>> Classifier <<CompositeData>> +owner +feature 1..* <<OperationPort>> +ports P2D A2P Pc2S F2M O2O P2PB transformation modè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-vers-modèle Modèle Cible (SW) Code source (XML) « document WSDL » « document BPEL » PSM PIM Code SW – Services Web

EDOC vers Services Web UML profile for ECA WSDL metamodel Mapping P2D EDOC vers Services Web - Spécification de correspondances … EDOC vers Services Web UML profile for ECA WSDL metamodel Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service Package <<DataElement>> Class De2T <<ExternalDocument>> DataType <<Attribute>> Attribute <<FlowPort>> <<Port>> <<ProtocolPort>> <<PortOwner>> <<ProcessComponent>> Classifier <<CompositeData>> +owner +feature 1..* <<OperationPort>> +ports P2D A2P Pc2S F2M O2O P2PB

create OUT : WSDL from IN : UML; -- helpers EDOC vers Services Web - Spécification de correspondances … 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() *** ) }

SW – Services Web Générée à partir de transformation modèle-vers-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-CCA metamodel WSDL Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service Package DataElement De2T DataType Attribute <<boundary>> FlowPort ProtocolPort PortOwner ProcessComponent CompositeData +owner +feature 1..* OperationPort +ports P2D A2P F2M O2O P2PB Pc2S transformation modè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-vers-modèle Modèle Cible (SW) Code source (XML) « document WSDL » « document BPEL » PSM PIM Code SW – Services Web

EDOC-CCA metamodel Mapping WSDL metamodel EDOC vers Services Web - Spécification de correspondances … EDOC-CCA metamodel Mapping WSDL metamodel WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service Package DataElement De2T ExternalDocument Attribute <<boundary>> FlowPort <<boundary> ProtocolPort PortOwner ProcessComponent CompositeData +owner +feature 1..* OperationPort +ports P2D A2P Pc2S F2M O2O P2PB

<<boundary>> EDOC vers Services Web - Spécification de correspondances … 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 = 1 select = 3 collect = 2 first =1 Total = 7 Métamodèle EDOC-CCA vers WSDL select = 1 oclIsKindOf = 1 Total = 2 EDOC-CCA metamodel WSDL Mapping UML metamodel WSDL metamodel WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service Package DataElement De2T DataType Attribute <<boundary>> FlowPort ProtocolPort PortOwner ProcessComponent CompositeData +owner +feature 1..* OperationPort +ports P2D A2P F2M O2O P2PB Pc2S 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)) ) }

SW – Services Web - profil UML pour EDOC - métamodèle EDOC UML vers Services Web - Spécification de correspondances … - profil UML pour EDOC - métamodèle EDOC Générée à partir de modèle WSDL WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service 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> transformation modè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-vers-modèle Modèle Cible (SW) Code source (XML) « document WSDL » « document BPEL » PSM PIM Code SW – Services Web

<?xml version="1.0" encoding="UTF-8"?> EDOC 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="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> <<Protocol>> BuySellTravel <<ProtocolPort>> SellTravel <<ProcessComponent>> TravelAg <<responds>> <<OperationPort>> FindTravel +findTravel <<FlowPort>> FindTravelCall FindTravelResponse <<initiates>> <<CompositeData>>

Spécification de correspondances et définition de transformations Comparaisons EDOC (métamodèle) est plus adapté pour modéliser un métier et puis le transformer en services Web Spécification de correspondances et définition de transformation : PIM vers PSM PIM PSM UML (version 1.4) EDOC (profil UML) EDOC (métamodèle) WSDL normal complexe** simple BPEL complexe* - J2EE (Java + JWSDP) dotNET (C# + API) Un intergiciel de plus Les deux plates-formes sont similaires pour le processus de transformation * 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.

Sommaire Introduction État de l’art É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

Un outil pour la spécification de correspondances Étude et applications de l’approche MDA pour des plates-formes de Services Web Un outil pour la spécification de correspondances UML metamodel WSDL Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetNameSpace +name +types 0..1 +part 0..* +message +operation +portType +type +binding +boperations +port +service ModelElement Namespace Package AssociationEnd Class Interface Attribute 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!Class to s : WSDL!Service( name <- 'Service' + c.name, owner <- c.namespace, port <- pt ),*** } *** ? Spécification de Correspondances Définition de Transformations 0..* 1 +spec Générée à partir de

? M Fondements pour la spécification de correspondances Un outil pour la spécification de correspondances Fondements pour la spécification de correspondances MMM source MM target MM mapping MM mapping M transformation MM transformation M conformsTo +left +right generatedFrom 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 : M ? C

<<EDataType>> 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 +type:EString ElementHandler <<EDataType>> oclExpression +bidirectional:EBooleanObject Correspondence +left +right 1..* +handler 0..* +nested +enclosing +correspondence +handlers 0..1 +typeconverterRL +typeconverterLR +definition

MMT (Mapping Modeling Tool) Un outil pour la spécification de correspondances MMT (Mapping Modeling Tool) 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

Généré automatiquement Un outil pour la spécification de correspondances 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 #public else if c.visibility = #vk_private then #private else #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é manuellement Généré automatiquement

MMT(Mapping Modeling Tool) Un outil pour la spécification de correspondances MMT(Mapping Modeling Tool) Applications aux Services Web : UML2WSDL Génère une représentation textuelle simplifiée du modèle de correspondances. Vérifie la conformité de ce modèle de correspondance avec son métamodèle. Génère la définition de transformation à partir d’un modèle de correspondance Crée un modèle de correspondance

Généré automatiquement 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!Class to 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', 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

Apports de notre outil La séparation de préoccupations: 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.

Sommaire Introduction État de l’art É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

Étude et applications de l’approche MDA pour des plates-formes de Services Web Conclusion 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 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.

Étude et applications de l’approche MDA pour des plates-formes de Services Web 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.

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.

Merci de votre attention! Denivaldo Lopes e-mail: dlopes@eseo.fr Étude et applications de l’approche MDA pour des plates-formes de Service Web Merci de votre attention! Denivaldo Lopes e-mail: dlopes@eseo.fr home-page: http://www.eseo.fr/~dlopes