La pérennité est l’objectif principal de MDA. Il s’agit de faire en sorte que la logique métier des applications ne soit plus mêlée aux considérations techniques de mise en production.
Il devient dès lors possible de capitaliser les savoir-faire et d’être beaucoup plus réactif aux changements technologiques.
le standard MOF (Meta Object Facility) apporte le support de définition des formalismes de modélisation sous la forme de métamodèles.
Selon MOF, un métamodèle définit la structure que doit avoir tout modèle conforme à ce métamodèle.
Autrement dit, tout modèle doit respecter la structure définie par son métamodèle.
Par exemple, le métamodèle UML définit que les modèles UML contiennent des packages, leurs packages des classes, leurs classes des attributs et des opérations, etc.
MOF représente les métamodèles sous forme de diagrammes de classes.
Un métamodèle est donc une sorte de diagramme de classes qui définit la structure d’un ensemble de modèles.
il existe plusieurs façons de faire des métamodèles (MOF1.3, MOF1.4,MOF2.0, EMF, etc.)
Tous les métamodèles publics de l’OMG sont réalisés avec MOF 1.4, assez simple d’utilisation, contrairement à la 1.3, qui nécessite une connaissance de CORBA, ou à la 2.0, très complexe.
Afin de discerner les classes constituantes d’un métamodèle des autres classes, telles que les classes Java, MOF1.4 propose d’utiliser le terme métaclasse.
Un métamodèle est ainsi constitué d’un ensemble de métaclasses.
De même, afin de discerner les objets instances des métaclasses des autres objets, MOF1.4 propose d’utiliser le terme méta-objet.
Ainsi, un modèle est constitué d’un ensemble de méta-objets instances de métaclasses.
Les concepts de base de MOF1.4 sont les suivants (en appellation anglaise)
Class. Une métaclasse permet de définir la structure de méta-objets. Un ensemble de méta-objets constitue un modèle. Une métaclasse contient des méta-attributs et des méta-opérations.
DataType. Un type de donnée permet de spécifier le type non-objet d’un méta-attribut ou d’un paramètre d’une méta-opération.
Association. Une méta-association permet de spécifier une relation binaire entre deux métaclasses.
Package. Un métapackage permet de regrouper sous un même espace de nommage différents éléments d’un métamodèle.