Vous êtes sur la page 1sur 56

Chapitre5: Transformation de modèles

Niveau: II3 ILSI


Enseignante: Rim DRIRA
rim.drira@ensi-uma.tn
Bureau 215

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.

 Le niveau d’abstraction dépend du niveau de détails


dans le modèle, mais ne dépend pas forcément du méta-
modèle:
 une transformation endogène, telle qu’un raffinement de
modèles, peut être considérée comme verticale.

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

Migration de logiciels PIM vers PSM


Fusion de modèles Rétro-
conception

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

 On va traiter cet exemple:


 Transformation en Kermeta, style impératif
 Transformation en ATL, style hybride

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

 Fonction pour gérer le premier caractère d'une chaine en majuscule

 Référence sur le type void

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

 Pour un attribut du source, 2 éléments sont créés côté cible


 L'attribut équivalent
 La méthode getter associée, qui est ajoutée dans la liste des méthodes de la classe de l'attribut via la
45 section impérative « do »
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

 Pour un attribut, on récupère les méthodes de sa classe


(att.owner.methods) et on vérifie qu'il existe un getter
 Nom « getAtt » (vérifie taille chaine > 3 sinon les substring plantent)
 Même type de retour que l'attribut
 Liste de paramètres vide
48
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec Kermeta
 Vérification de la présence d'un setter

 Vérification d'un setter


 Nom « setAtt »
 Un seul paramètre, du même type que l'attribut
 Type de retour est « void »
49
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Exemple – Transformation avec Kermeta

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

 Retourne ensuite la base du modèle modifiée


51
R.DRIRA ENSI-II3 ILSI Chapitre3: Transformation de modèles 2016-2017
Comparaison

Criteria Kermeta ATL Results


Learning Easier to learn as its syntax is Eiffel and Must have knowledge about OCL syntax and Kermeta Wins
Curve java-like. ATL syntax.

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

Reputation in Worse than ATL Better than Kermeta ATL Wins


market
Expressiveness  Primitive (int, String, boolean) and  Many data types (tuple, map etc.) are Kermeta Wins
well-known collections (bag, set allowed apart from standard data types
etc.) are allowed. (int, String etc.) and collections (bag, set
 Java like exceptions handling etc.).
mechanism with “rescue” block  Doesn’t handle exception
 Variables can be declared within  Not possible to declare variables within
imperative block imperative block

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

Vous aimerez peut-être aussi