Vous êtes sur la page 1sur 39

Transformation de modèles

G. Halin
Introduction
• La transformation de modèle
occupe une place importante
dans le MDA
• Met en œuvre la traçabilité
entre les modèles
• CIM -> PIM :
– construction de PIM partiel en
fonction des exigences
• PIM -> PSM :
– Plus importante : lien avec les
plates-formes d’exécution
– Assure la pérennité des
modèles
• PSM -> Code
– Génération de code
– Transformation de modèle ?

Définition d’une transformation


• Transformation :
– Fonction : Ens(Modèles) -> Ens(Modèles)
– Les modèles sont structurés par leur métamodèle
– Se définit au niveau des métamodèles :
• Un ensemble des règles de correspondances
• Génération de code :
– Définir le meta-modèle du langage (ex : java, inexistant)
– Pas de transformation possible

Métamodèle Définition de la
Métamodèle
d’entrée transformation de sortie

Est structuré par Est structuré par

Un modèle Exécution Un modèle


Définition d’une transformation


• Quatre approches de transformation :
• Programmation :
– Utilisation de la POO
– Programmes qui manipulent les modèles
– Utilisation des interfaces taylored ou réflective
• Template :
– Définition de « canevas » du modèle cible avec paramètres
– Les paramètres prennent leur valeur dans le modèle source
– Paramètres : annotation ou tags dans le canevas
• Modélisation :
– Proposer un Modèle pérenne de la transformation
– Définition d’un métamodèle : MOF2.0 QVT (Query, View, Transformation)
• Profil :
– Dans UML
– Utilisation des stéréotypes appliqués aux éléments des modèles

Définition transformation, exemple


Metamodel1 Metamodel2

Deux métamodèles :

• Règles de correspondance
1. A tout auteur correspond une personne
2. Le nom de la personne correspond au nom de
l’auteur
3. Le prénom de la personne correspond au prénom de
l’auteur

Définition transformation, exemple


Metamodel1 Metamodel2

Programmation

A partir d’EMF on obtient les interfaces taylored suivantes :


• Auteur, Metamodel1Factory, Metamodel1Package
• Personne, Metamodel2Factory, Metamodel2Package

public static Personne auteur2Personne (Auteur au) {


Personne p = Metamodel2Factory.eINSTANCE.createPersonne();
p.setNom(au.getNom());
p.setPrenom(au.getPrenom());
return p;
}



Définition transformation, exemple


Metamodel1 Metamodel2

Template
• Définition d’un document XMI paramétré du modèle cible
• Paramètre : balise spécifique exécutable
• Exemple à la JSP (au est un auteur)

<xmi:XMI xmi:version="2.0" xmnls:xmi="…">


<Personne nom="<%au.getNom()%>"
prenom="<%au.getPrenom()%>"
/>
</xmi:XMI>




Modélisation d’une transformation


• Appliquer l’ingénierie des modèles à la transformation
• Modéliser la transformation de modèles
• Utiliser un métamodèle de transformation
• Les modèles expriment les règles de correspondance structurelle
• Les modèles sont pérennes, ils doivent être transformés pour être
exécuté sur une plateforme
• 2001 : OMG lance la définition d’un standard : langage de définition
de transformation
• Définition du métamodèle MOF2.0 QVT (Query, View, Transformation)
• En cours de standardisation, proposition française OpenQVT (Alcatel,
France Telecom, Thales, Sodifrance, Softeam, TNI-Valiosys, CEA, IRISA, Univ Lille,
Univ Paris VI, Univ Nantes)

Modélisation d’une transformation

Principe
Modélisation d’une transformation
Vue simplifiée du métamodèle
• Module : une transformation
• Package : Modèles sources et
cibles
• Query : requêtes effectuées pour la
transformation
– Exprimées en OCL
• View : correspondance structurelle
entre les métamodèles
– Domain : une partie d’un
métamodèle
– Forme déclarative
• Transformation : règle de
construction exprimée par des
expressions
(MatchingExpression)
– Forme impérative (instruction)
• La tranformation peut être :
– Déclarative (view)
– Impérative (transformation)

Modélisation d’une transformation, exemple

Forme déclarative simplifiée

Metamodel1

source

Auteur2Personne Metamodel2
destination

UneTransformation
ATL : Atlas Transformation Language

• Une réponse au MOF QVT


• INRIA, équipe ATLAS et LINA de Nantes
• Commercialisé par la société OBéo
• Métamodèle et une syntaxe
• Approche hybride : déclarative et impérative
• Programme ATL :
– Notion de module, query, rules
– Module : ensemble de règles de parcours et de
transformations utilisant OCL
• Utilisable sous la forme d’un plugin Eclipse

ATL, Exemple
Metamodel1 Metamodel2

module Auteur2Personne; -- Module Template


create OUT : Metamodel2 from IN : Metamodel1;
rule Autheur {
from
a : Metamodel1!Auteur
to
p : Metamodel2!Personnne (
nom <- a.nom,
prenom <- a.prenom
)
}

Transformation de modèle
Du modèle d’analyse à la conception
• Au sein du MDA
– du PIM au PSM
– utilisation du PDM

• Dans UML PIM (Platform Independant Model)

– utilisation des profils


PDM (Platform Description Model)

• stéréotypes
• contraintes

• Illustration avec VP

14

PIM : Modèle d’analyse

• Classes stéréotypées
• boundary
• control
• entité
• Architecture 3 tiers
• MVC

15

PIM : Modèle d’analyse

• Structuration en paquetages

16
PIM : Modèle d’analyse

• Structuration en
paquetages

17

PIM : Modèle d’analyse

• Structuration en paquetages
– correction du modèle initial

18

Passage au PSM : 2 vues à considérer

• Deux sous-vues, deux étapes à considérer


– Vue Modèle, Vue, Controleur

vue MVC

– Vue persistance : ORM (Object Relational Mapping)

vue persistance

Passage au PSM : choix de frameworks

• Les différents niveaux (ou couches

Application

Présentation Métie Persistanc Donnée


(java bean) (jdbc) (sgbd)

Framework MV Framework persistanc

• Framework de persistance
– ORM : Object Relational Mappin
– Mapping entre Objet et Relation (Table)

20
r

Passage au PSM : choix de frameworks

• Exemple avec Frameworks

21
Passage au PSM : la vue MVC

La vue de l’analyse (incomplète)

Utilisation du profil WebModeler


Passage au PSM : la vue persistance
• Le modèle d’analyse

• Utilisation du profil « ORM » :

23

Passage au PSM : la vue persistance

• Passage au modèle de persistance


Passage au PSM : la vue persistance

• Génération de la Base de données


Passage au PSM : la vue persistance, exemple
Le modèle métier

• Les éléments à prendre en compte


– la navigabilité et les cardinalité
– les identi ants Le modèle java

public class Vin {


private int numero;
private String nom;
private int annee;
private int nbBouteilles;
private float prix;
private Producteur leProducteur;

public class Buveur {


public class Producteur private int ID;
private int ID; private String nom;
private String nom; private String prenom; 26
private Set<Vin> lesVins = new HashSet<Vin>();
fi

La vue de persistance

• Mapping Objet - Relatio


– gestion des relations, navigabilité
Le modèle relationnel

vin
package vins;

public class Vin {


private Long numero;
private String nom;
private int annee;
private int nbBouteilles;
private float prix; producteur
private Producteur producteur;
……

package vins;

public class Producteur {


private Long numero;
private String nom;
private String adresse;
………. 27

La vue de persistance

• Mapping Objet - Relatio


– gestion des relations, navigabilité
Le modèle relationnel

package vins; vin


public class Vin {
private Long numero;
private String nom;
private int annee;
private int nbBouteilles;
private float prix;
…… producteur

package vins;

import java.util.HashSet;
import java.util.Set;

public class Producteur {


private Long numero;
private String nom;
private String adresse;
private Set<Vin> lesVins = new HashSet<Vin>(); 28

La vue de persistance

• Mapping Objet - Relatio


– gestion des relations, navigabilité
Le modèle relationnel

vin

package vins;

public class Vin {


private Long numero;
private String nom; buveur
private int annee;
private int nbBouteilles;
private float prix;
……

package vins;
import java.util.Set; abu
import java.util.HashSet;
public class Buveur {
private Long numeroBuv;
private String nom;
private String prenom;
private Set<Vin> abu = new HashSet<Vin>(); 29

La transformation : utilisation du pro l <ORM>


Le modèle métier stéréotypé « persistance »

Le modèle métier stéréotypé « base de donnée »

30
fi
La transformation : utilisation du pro l <ORM>

• Le modèle stéréotypé « BD » :


– modèle entité/relation américain orienté modèle physiqu

• Les liens :

1..* relation identi ante


Cycles de vie dépendants entre les éléments liés

0..*

0..1
relation non identi ante

Cycles de vie indépendants entre les éléments liés


1..1

31
fi
fi

fi
Prise en compte des relations

Le modèle stéréotypé « persistance » Le modèle stéréotypé « base de donnée »

32
Génération de la BD : stratégie d’héritage

• Mapping Objet - Relatio


– gestion de l’héritage

Le modèle objet Le modèle relationnel


une table par classe

vin

vinDeGarde

vinConso

33
n

Génération de la BD : stratégie d’héritage

• Mapping Objet - Relation

Le modèle objet Le modèle relationnel

vin

vinDeGarde vinConso

buveur abu

producteur

34
Génération de la BD : stratégie d’héritage

• Mapping Objet - Relatio


– gestion de l’héritage

Le modèle objet Le modèle relationnel


une table par classe concrète

vinConso

vinDeGarde

35
n

Génération de la BD : stratégie d’héritage

• Mapping Objet - Relation

Le modèle objet Le modèle relationnel


vinDeGarde

vinConso

buveur abu

producteur

36
Génération de la BD : stratégie d’héritage

• Mapping Objet - Relatio


– gestion de l’héritage

Le modèle objet Le modèle relationnel


une table par hiérarchie

vin

37
n

Génération de la BD : stratégie d’héritage

• Mapping Objet - Relation

Le modèle objet Le modèle relationnel


vin

buveur abu

producteur

38
Conclusion

• La transformation de modèle est stratégique pour MDA


• L’approche par POO est plus facile à aborder
• L’approche par template nécessite d’utiliser un langage
dédié
• L’approche par modèle : une culture
– Des métamodèles arrivent, des outils aussi
– Plusieurs outils MOF QVT : standard ?
• L’approche par profil : une aide à la transformation
• Approche non abordée : par injection (tag dédié)
• TP : trois approches
– Par programmation : EMF
– Par modèles : ATL
– Par profil : Visual-Paradigm

Vous aimerez peut-être aussi