Académique Documents
Professionnel Documents
Culture Documents
1 AU: 2016/2017
Plan
Définition et généralités
Pourquoi les transformations
Transformation endogène/exogène
Transformation verticale/horizentale
Transformation dans MDA
Catégories de transformation
Outils de transformation
Techniques de transformation
Exemple avec ATL et Kermeta
2
Définition et généralités
3
Définition
Une transformation est une opération qui prend
en entrée des modèles (source) et fournit en sortie
des modèles (cibles) selon un ensemble de règles de
transformation.
Généralement un seul modèle source et un seul modèle cible
Une règle de transformation est une description
de la façon dont des constructions dans le langage
source peuvent être transformées dans des
constructions dans le langage cible.
4
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transformation?
Exemple
Transformé en
Transformé en
5
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Règles de transformation?
6
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Pourquoi les transformations?
Raffiner
Un modèle A1 devient un modèle A2
Exemple: appliquer un design pattern
Projeter
Un modèle A1 devient un modèle B1
Exemple: UML -> Java
Offrir la base pour
La production de systèmes dirigée par les modèles
Le support de l’interopérabilité entre les systèmes
7
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transfo endogène/exogène
Transfo horizentale/verticale
8
Transformations endogènes vs exogènes
Transformation endogène
Dans le même espace technologique
Les modèles source et cible sont conformes au même méta-modèle
Exemple: Transformation d'un modèle UML en un autre modèle
UML
Transformation exogène
Entre 2 espaces technologiques différents
Les modèles source et cible sont conformes à des méta-modèles
différents
Exemple: Transformation d'un modèle UML en programme Java,
Transformation d'un fichier XML en schéma de base de données
9
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transformations endogènes vs exogènes
10
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transformations horizontales vs verticales
Une transformation horizontale est une
transformation où les modèles source et cible sont au
même niveau d’abstraction
Une transformation verticale est une transformation
où les modèles source et cible appartiennent à des niveaux
d’abstraction différents.
11
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Résumé
Transformation Transformation
Horizontale Verticale
Restructuration
Raffinement
Normalisation
Intégration de patrons
Transformation endogène
Transformation exogène
12
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transformation dans MDA
13
Transformation en série dans le processus MDA
La réalisation d'une application est un processus basé sur une
série de transformations de modèles
Exemple:
1. Modèle de l'application au niveau abstrait en se basant sur un modèle
de composant abstrait : modèle PIM
2. Projection du modèle vers un modèle de composant EJB : modèle
PSM
3. Raffinement de ce modèle pour ajouter des détails d'implémentation:
modèle PSM
4. Génération du code de l'application modélisée vers la plateforme EJB
14
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple: comment aller de PIM à PSM ?
Via des transformations de modèles …
15
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transformation dans le processus MDA
Relations entre les niveaux de modèles
16
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Système de transformation de modèles dans MDA
Transformation: des modèles
17
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Catégories, outils et
techniques de transformation
18
Catégorie des transformation de modèles
Model-to-text /Model to code (M2T)
Pour la génération de : code, xml, html, doc.
Model-to-model (M2M)
PIM to PSM à la OMG MDA
Raffinement de modèles
Reverse engineering (code to models)
Application de design patterns
Refactoring
Toute activité d’ingénierie sur les modèles qui pourra être automatisée.
19
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
M2T-Exemple
Transformation
20
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
M2M- Exemple1
Privatisation des attributs
Chaque attribut d’une classe devient privé et se voit associé une paire
d’accesseurs
21
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
M2M –Exemple2
D’UML à RDBMS: Modèle de classe en UML vers équivalent
schéma de données relationnel
22
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
M2M–Exemple2- Comment?
Méta-Modèle MOF
Méta-Modèle Transformation
Méta-Modèle UML Méta-Modèle RDBMS
Modèle Modèle
source cible
UMLToRDBMS
Transformation
Class Table
Attribute Column
Association FreignKey
règles
entrée sortie RDBMS Spécification
Diag de classe Transformation
Engine
23
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
M2M – Exemple3: Appliquer des patrons de conception
Objectif de la transformation:
Instancier le patron de conception
Command.
24
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Difficultés liées à la transformations
Analyser et concevoir les transformations
Enchaînement de transformations
Traçabilité
26
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Transformation :Types d’outils
Les langages de programmation standard: Java, C#, etc.
Pas forcément adapté pour tout type de transformation
Outils génériques de transformation
Transformation de graphes, AGG, XSLT, …
Langage dédié d'un atelier de génie logiciel (AGL): Ex : J dans
Objecteering
Souvent propriétaire et inutilisable en dehors de l'AGL
Langage/outil dédié à la transformation de modèles : OMG
QVT, ATL (INRIA), etc.
Simplifie l’écriture et la maintenance des transformations
Une meilleure expressivité
Outils de méta-modélisation avec langage d’action: Ex:
Kermeta (IRISA), etc.
27
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Trois générations des outils de transformation
Données sous forme de séquence
Ex : fichiers textes (AWK)
Un script spécifie déclarativement comment un fichier d'entrée se
réécrit en un fichier de sortie. Un fichier est composé
d'enregistrements ou lignes. Un enregistrement est composé de
champs. Une ligne d'entrée peut produire plusieurs lignes en sortie.
Données sous forme d'arbre
Ex : XML (XSLT)
Un arbre en entrée est parcouru et ce parcours génère des fragments
de l'arbre de sortie.
Données sous forme de graphe
Exemple : MDA /QVT
Un modèle en entrée (un graphe orienté étiqueté) est transformé en un
modèle en sortie. La transformation est spécifiée par un autre modèle.
28
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Techniques de transformations
Trois grandes catégories de techniques de
transformation:
1. Approche déclarative
2. Approche impérative
3. Approche hybride
30
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Techniques de transformations
1. Approche déclarative
Recherche de certains patrons (d'éléments et de leurs relations)
dans le modèle source
Chaque patron trouvé est remplacé dans le modèle cible par une
nouvelle structure d'élément
Ecriture de la transformation « assez » simple mais ne permet pas
toujours d'exprimer toutes les transformations facilement
Exemple : Tefkat (The EMF transformation Engine)
31
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Techniques de transformations
2. Approche impérative
Proche des langages de programmation usuels
On parcourt le modèle source dans un certain ordre et on génère le
modèle cible lors de ce parcours
Pas de notion de règles
L’écriture de transformation peut être plus lourde que l’approche
déclarative mais permet de définir toutes les transformations
notamment les cas complexes
Exemple: Kermeta
32
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Techniques de transformations
3. Approche hybride ou semi-déclarative
A la fois déclarative et impérative
Un ensemble de règles, avec un patron du modèle source et des
instructions impératives à effectuer sur le modèle cible quand le
patron source est détecté
Exemple: ATL
33
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
ATL
34
Principes d’ATL
Langage déclaratif
Ecriture de règles de transformation
Une règle définit comment un concept source est transformé vers un
concept cible
Utilisation d’opérations pour décrire une transformation
Opérations
Basées sur OCL
Requêtes et opérations sur le modèles
Données
Type OCL
35
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Structure d’une transformation
Déclaration du module
Header section
Import de librairies
Import section
Opérations
Helpers
Règles de transformation
Rules
36
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
ATL : opérations
Opération: helper
Défini pour un context donné (cf. cours OCL)
Opération pour une classe donnée
37
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple de transformation
avec Kermeta et ATL
38
Exemple – Ajout des accesseurs
Contrat de la transformation
Chaque attribut du modèle cible possède un « getter » et un «setter»
Les attributs ont tous été conservés pendant la transfo : pas d'ajout, de
suppression ou modification
39
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple - Ajout des accesseurs
Utilisation d'un méta-modèle simplifié de diagramme de classe
Note: les visibilités ne sont pas définies, on ne les gérera pas pendant la transformation
40
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple - Ajout des accesseurs
Pour un attribut att de type type, la forme des accesseurs est
Getter : type getAtt()
Setter : void setAtt(type xxx)
Règles de transformation
Pour chaque attribut de chaque classe
On ajoute, s'ils n'existaient pas déjà, un setter et un getter
dans la classe qui possède l'attribut
Doit donc prévoir des fonctions de vérification de la présence
d'un getter ou d'un setter
41
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation1 avec ATL
Pour vérification des présences des getter et setter, on utilise des helpers
écrits en OCL
42
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation1 avec ATL
Transformation ATL en mode raffinement: Le raffinement fait
que toutes les classes, interfaces et associations de la base seront
alors automatiquement dupliquées
Cinq règles de transformation
Création d'une base de modèle identique
Pour chaque attribut, on a des règles qui créent l'attribut côté cible et
les éventuels méthodes accesseurs manquantes
Selon qu'il possède déjà un getter ou un setter, 4 cas différents
Possède un gettter et un setter (règle « hasAll »)
Possède un setter mais pas un getter (règle « hasSetter »)
Possède un getter mais pas un setter (règle « hasGetter »)
Ne possède ni l'un ni l'autre (règle « hasNothing »)
43
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec ATL
44
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec ATL
46
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec ATL
47
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec Kermeta
Vérification de la présence d'un getter
50
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec Kermeta
Réalisation de la transformation: A partir de la base du modèle, on
parcourt l'ensemble des classes et pour chacun de leur attribut, s'il
ne possède pas un getter ou un setter
Crée la méthode en instanciant le méta-élément Method
Positionne son nom en « setAtt » ou « getAtt »
Positionne son type de retour
Référence sur le type void (voidT) ou le type de l'attribut
Positionne les listes des paramètres pour un getter à partir du type de
l'attribut et le nom « value »
Sinon reste vide par défaut (cas d'un setter)
Positionne les associations entre la méthode créée et la classe qui
possède l'attribut
Cette classe doit aussi posséder la méthode créée
Cost Open source and free Open source and free Both Win
Portability Available for Windows, Linux and Mac Available for Windows, Linux and Mac Both Win
OS OS.
Supports both 32bit and 64bit Supports both 32bit and 64bit
Frequent release On average, three new versions/year On average, one new version/year Kermeta Wins
Technical Submit bug reports and feature Through official Eclipse forums and ATL Wins
support requests through ‘Tracker’ section of newsgroups
their website Bugzilla
Public forums For professional support: developers of
Emails OBEO
52
Comparaison
Criteria Kermeta ATL Results
Documentation User manual and developer guide, User manual and developer guide, FAQ, ATL Wins
FAQ, articles and papers, tutorials articles and papers, tutorials and courses
and courses are available are available
Not enough model transformation Professional training
case studies are provided Rich number of model transformation
case studies are available
53
Conclusions
Les transformations de modèles sont centrales au MDE
Appliquer les principes du SE aux transformations
Doivent être modélisées
Doivent être précisément conçues
Doivent être vérifiées/validées
Doivent être implémentées
Doivent être testées
Doivent évoluer
Encore du travail en vue …
Maturité et facilité d’utilisation des langages
Capitalisation des transformations
Bibliothèques de transformations
Validation de transformations de modèles
Etc.
54
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exercices
55
Exercice1
Placer chacune des transformations suivantes dans le tableau
avec une brève justification si vous hésitez entre deux cases.
Raffinement formel (à la méthode B)
Migration de langage
Génération de code
Application d’un patron de conception
Privatisation des attributs d’une classe
Rétro-conception
Transformation Transformation
horizontale verticale
Transfo. endogène
Transfo. exogène
56
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exercice2
On souhaite écrire une transformation qui refactorise les diagrammes de cas
d’utilisation (nous étudions un seul schéma de refactoring)
Le refactoring consiste à identifier et mettre en place une généralisation de deux cas
d’utilisation lorsque ceux-ci incluent le même troisième cas d’utilisation.
Transformé en
Questions:
1. Donnez les caractéristiques de la transformation décrite. Expliquez.
2. Critiquez la transformation décrite.
3. Donnez les principales étapes à suivre afin de développer cette
57
transformation.ENSI-II3 ILSI
R.DRIRA Chapitre3: Transformation de modèles 2016-2017
FIN Chap4
58