Meta-Object Facility
# Meta-Object Facility

En génie logiciel, et plus particulièrement en architecture dirigée par les modèles, le Meta-Object Facility (MOF) est un standard de l'Object Management Group (OMG) s'intéressant à la représentation des métamodèles et leur manipulation. Le langage MOF est auto-descriptif, c'est-à-dire que la couche la plus abstraite est suffisamment expressive pour se représenter elle-même.

## Couches de modélisation

La représentation des métamodèles avec MOF s'appuie le plus souvent sur quatre couches de modélisation. Chaque couche est une abstraction de la couche inférieure :

* M3 est un méta-métamodèle auto-descriptif de MOF ;
* M2 est un métamodèle construit selon le standard MOF (par exemple, UML 2.0) ;
* M1 est un modèle utilisateur ;
* M0 est un objet de la réalité, sujet à une modélisation ;

L'architecture en quatre couches est considérée dans l'approche MDA comme étant suffisamment générale pour un processus de modélisation logicielle. Bien qu'étant la plus fréquente, cette architecture n'est cependant pas la seule. Le standard MOF requiert au minimum deux couches de modélisation et n'impose pas de nombre de couches maximum. Ainsi, une spécification en deux couches (par exemple, classe (M1) – objet (M0)) est conforme à l'approche MDA bien qu'elle ne définisse pas de méta-métamodèle.

## Métamodèles définis par le MOF

Le langage UML est décrit par un métamodèle conforme au MOF. Ainsi un modèle UML peut être sérialisé en XMI. Mais il y a également de nombreux autres métamodèles situés au même niveau que UML. On peut citer par exemple les métamodèles CWM, SPEM, SysML, etc. Le standard QVT, qui définit plusieurs langages de transformations de modèles, est également décrit à l'aide du méta-métamodèle MOF.

