7.1.4 Les transformations
7.1.4.1 Les transformations de modèles
Le passage entre les différents modèles
présentés auparavant se fait par le biais de l'exécution
de transformations. La Figure 38 illustre les différentes
transformations que l'on peut trouver généralement dans MDA.
La transformation ou projection et la retro-ingénierie
peuvent être des transformations entre deux modèles conformes
à un même métamodèle, on parle alors de
transformation endogène, ou entre des modèles respectant des
métamodèles différents, il s'agit dans ce cas d'une
transformation exogène. Le raffinement est une transformation
endogène un peu particulière, car elle s'appuie non seulement sur
un métamodèle commun au modèle d'entrée et de
sortie de la transformation, mais c'est aussi le modèle d'entrée
qui sert de modèle de sortie.
La transformation sert à passer d'un niveau abstrait vers
un niveau plus concret, plus on avance dans les transformations, plus on se
rapproche du modèle de code.
La retro-ingénierie fait le trajet inverse et remonte des
niveaux concrets jusqu'aux niveaux abstraits. Le raffinement sert le plus
souvent à ajouter de l'information sans changer le sens des objets.
MDA préconise d'utiliser les modèles dans son
approche, et c'est tout naturellement qu'il propose de modéliser les
transformations elles même. Une transformation est vue comme une
application, avec ses exigences, ses modèles de conception et de code.
Afin de modéliser les transformations, MDA définit le standard
MOF2.0 Query View Transformation (QVT)(Object Management Group 2011c).
QVT est le métamodèle décrivant les modèles de
transformation. QVT se limite aux transformations entre modèles.
La Figure 39 illustre une transformation entre deux
modèles, le modèle UML en entrée, qui est conforme au
métamodèle UML, et le modèle Java en sortie, qui pour sa
part est conforme au métamodèle Java. Le modèle de
transformation UML2Java se doit d'être conforme au
métamodèle QVT.
7.1.4.2 Query Views Transformations (QVT)
QVT devait répondre aux propositions de l'OMG QVT
Request For Proposal (Object Management Group 2002b) dont voici les
principales exigences (Combemale et al. 2007) :
· normaliser un moyen d'exprimer des correspondances
(transformations) entre langages définis avec MOF.
· exprimer des requêtes (Query) pour filtrer
et sélectionner des éléments d'un modèle (y compris
sélectionner les éléments source d'une transformation).
· proposer un mécanisme pour créer des vues
(Views) qui sont des modèles déduits d'un autre pour en
révéler les aspects spécifiques.
· formaliser une manière de décrire des
transformations (Transformations).
Le standard OMG : MOF QVT (Combemale et al. 2007) :
· Syntaxe abstraite en MOF 2.0 (et syntaxe concrète
textuelle et graphique)
· Possibilité de plusieurs modèles (conformes
à des métamodèles issus de MOF)
· Langage de requête s'appuyant sur OCL
· Gestion automatique des liens de
traçabilité
· MOF QVT devra permettre plusieurs scenarios
d'exécution (transformations unidirectionnelles, multidirectionnelles,
etc.).
Dans sa dernière version, QVT 2.0 propose trois langages
de transformation (cf. Figure 40) :
Figure 40 : Les relations entre les métamodèles de
QVT (Object Management Group 2011c)
CNAM de Nantes - 2010 / 2011 - Mémoire
d'ingénieur
|
|
|
La partie déclarative de QVT est structurée en une
architecture à deux couches composée de :
· « Relations » qui est un langage de haut
niveau orienté utilisateur. Il permet d'établir des relations
entre les modèles MOF participant à la transformation. Les traces
entre les éléments de modèles impliqués dans les
transformations sont créées implicitement. « Relations
» peut être utilisé soit comme formalisme de
représentation des relations entre modèles soit pour être
traduit en modèle « Core » par une transformation
« RelationsToCore ».
· « Core » qui est un langage
technique de bas niveau défini par une syntaxe textuelle. Contrairement
à « Relations », toutes les traces de transformations doivent
être décrites afin d'être créées.
La partie impérative est composée pour sa part de
:
· « Operational Mappings » qui est
une extension de « Relations » et de « Core
» avec des constructions impératives (extension d'OCL). Cela
autorise une syntaxe concrète et un plus procédural à
destination des programmeurs standards.
· « Black Box MOF Operation » qui permet
d'invoquer des fonctionnalités de transformation
implémentées dans un langage externe.
La combinaison de ces trois langages donne un « langage
hybride ».
Figure 41 : Alignement entre
modèle/métamodèle et DTD/document XML (Blanc 2005,
p.103)
Figure 42 : XMI et la structuration des balises XML (Blanc
2005, p.104)
CNAM de Nantes - 2010 / 2011 - Mémoire
d'ingénieur
|
|
|
|