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.

Liens :