MD Days 2009 : Transformations de modèles
Par Stéphane JUTIN le vendredi 27 novembre 2009, 13:07 - Technique - Lien permanent
Modèles et meta-modèles :
- Un modèle est un graphe orienté obéissant à un méta-modèle.
- Les méta-modèles peuvent être issus d'organisme de normalisation (comme le méta-modèle UML, défini par l'OMG), mais on peut aussi en créer soit-même.
- Une transformation permet de convertir automatiquement un graphe d'un méta-modèle vers un autre.
Récursivité : Méta-modèles et transformations peuvent être représentés sous forme de graphe et sont donc des modèles. Par exemple pour définir le format des meta-modèles, on utilise un méta-méta-modèle (qui s'auto-décrit, au sens où il est lui-même son propre méta-modèle).
Analogie avec le monde XML :
- le modèle => document XML
- le méta-modèle => DTD ou XML-schéma
- la transformation => feuille de style XSL-T
Néanmoins XML ne sait représenter que des arbres ce qui est moins général qu'un graphe.
Exemple de transformation :
On peut définir un méta-modèle pour représenter la syntaxe du langage Java, puis définir une transformation diagramme de classe UML => méta-modèle Java
, afin de personaliser la génération de code de son modeleur favori.
Application au MDA
Dans une approche MDA, on a généralement un PIM (Platform Independant Model) qui décrit le fonctionnel de l'application et qui est ensuite transformé en PSM (Platform Specific Model) suivant la plateforme ciblée (Java Spring/Hibernate, Java J2EE, .NET), ce dernier devant être à son tour transformé pour générer le code.