Métamodèle

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Méta-modèle)

Dans le cadre d'une modélisation, un métamodèle est un modèle dont les instances sont elles-mêmes des modèles. Comme l'indique le préfixe méta-, un métamodèle est une abstraction permettant de décrire des modèles. La métamodélisation désigne au sens large la conception de métamodèles.

Les métamodèles peuvent prendre diverses formes et être utilisés dans divers domaines. En informatique, et plus particulièrement en génie logiciel, la notion de métamodèle est centrale à l'ingénierie dirigée par les modèles, un ensemble de pratiques qui ont en commun la création et l'utilisation de modèles pour conceptualiser un domaine d'application. Cet usage s'étend également à l'ingénierie des systèmes.

Définition[modifier | modifier le code]

Liens d'instanciation et de représentation entre un métamodèle, un modèle et un original
Liens d'instanciation et de représentation entre un métamodèle, un modèle et un original

Un métamodèle est un modèle qui décrit la structure de modèles[1]. En particulier, il permet la construction de langages de modélisation, la création de relations entre les modèles et la définition de règles de modélisation[1]. On dit que le métamodèle représente le modèle, tandis que le modèle instancie le métamodèle[2]. Par exemple, un système logiciel peut être représenté par un diagramme d'objets qui peut lui-même être représenté par un diagramme de classes en UML[3]. Ainsi, le système logiciel représente l'original, c'est-à-dire l'objet réel modélisé, tandis que le diagramme d'objets est son modèle et que le diagramme de classes est un métamodèle.

Spécification d'un métamodèle[modifier | modifier le code]

Quatre aspects sont nécessaires à la spécification d'un métamodèle : une syntaxe abstraite, une syntaxe concrète, une sémantique statique et une sémantique dynamique[1],[4]. Idéalement, ces éléments sont définis à l'aide d'un langage formel[4]. Pour cette raison, un métamodèle est aussi parfois défini comme le modèle d'un langage de modélisation[5].

Syntaxe abstraite[modifier | modifier le code]

La syntaxe abstraite d'un métamodèle décrit les constructions qui composent ses modèles, par exemple leurs propriétés et leurs relations[1]. Par exemple, la syntaxe abstraite d'un diagramme de classes est composée de classes, d'attributes, d'associations, etc.

Syntaxe concrète[modifier | modifier le code]

La syntaxe concrète d'un métamodèle décrit la représentation des constructions définies par sa syntaxe abstraite[1]. Cette représentation est le plus souvent graphique ou textuelle. Elle peut aussi correspondre à un format de données. À chaque syntaxe abstraite correspondent une ou plusieurs syntaxes concrètes. Ainsi, une classe d'un diagramme de classes est représentée par un rectangle comportant trois sections (nom, associations, opérations) tandis qu'une association est représentée comme une flèche. Un diagramme de classes peut aussi être représenté textuellement en XMI.

Sémantique statique[modifier | modifier le code]

La sémantique statique (aussi appelée sémantique structurelle[6]) d'un métamodèle décrit les critères et les règles de modélisation qui ne peuvent pas être représentés par la syntaxe abstraite[1]. Il existe des langages spécifiques pour la formulation de ces règles. Par exemple, OCL permet de décrire la sémantique statique d'un diagramme de classes[6]. En ingénierie dirigée par les modèles, les règles de sémantique statique peuvent être utilisées pour vérifier qu'un modèle respecte les propriétés de son métamodèle. Dans ce cas, les règles doivent être automatiquement vérifiables, c'est-à-dire décidables.

Sémantique dynamique[modifier | modifier le code]

La sémantique dynamique d'un métamodèle est une description du sens qui lui est donné[2]. Contrairement aux aspects précédents, la sémantique dynamique est rarement exprimée à l'aide d'un langage formel[7]. Le langage naturel est pour cela privilégié[2].

Méta-métamodèle[modifier | modifier le code]

Définition[modifier | modifier le code]

Il est toujours possible de définir un modèle pour un objet ou un concept donné. Par conséquent, un métamodèle peut lui-même être représenté par un métamodèle qui définit les concepts disponibles pour la métamodélisation[1]. Un tel métamodèle est appelé méta-métamodèle. En théorie, il n'y a pas de limite au nombre de niveaux de modélisation : chaque métamodèle est représenté par un autre métamodèle à un niveau supérieur. En pratique, le nombre de niveaux de modélisation est fixe et le métamodèle le plus abstrait est souvent auto-descriptif (ou réflexif, ou méta-circulaire[8]), c'est-à-dire qu'il peut se représenter lui-même[9].

Architecture dirigée par les modèles[modifier | modifier le code]

Représentation des métamodèles dans le standard MOF. La couche la plus abstraite est M3. La couche M0 représente l'original, c'est-à-dire l'objet de la réalité qui est modélisé.
Représentation des métamodèles dans le standard MOF. La couche la plus abstraite est M3. La couche M0 représente l'original, c'est-à-dire l'objet de la réalité qui est modélisé.

En architecture dirigée par les modèles (MDA), le standard Meta-Object Facility (MOF) fournit un méta-métamodèle qui permet de représenter d'autres métamodèles comme le métamodèle du langage UML ou des langages de transformation QVT. La représentation des métamodèles avec MOF s'appuie le plus souvent sur quatre couches de modélisation[10]. 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[11]. 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[11].

Méta-métamodèle MOF
Méta-métamodèle MOF (simplifié)

La définition du méta-métamodèle du standard MOF reprend les principaux concepts des diagrammes de classes en UML (classifieurs, attributs, associations, etc.). Puisque le méta-métamodèle est auto-descriptif, il est également représenté en utilisant ces concepts.

Applications[modifier | modifier le code]

En génie logiciel[modifier | modifier le code]

Échange de modèles[modifier | modifier le code]

La conception d'un métamodèle capable de représenter plusieurs modèles facilite la sérialisation, la manipulation et l'échange de ces modèles[8]. Le standard MOF fournit par exemple XMI, une procédure permettant de représenter un modèle ou un métamodèle dérivé du méta-métamodèle MOF à l'aide du langage XML.

Validation et transformation de modèles[modifier | modifier le code]

En ingénierie dirigée par les modèles, la validation de modèles est un processus par lequel on vérifie que les éléments d'un modèle satisfont des contraintes[1]. Par exemple, une contrainte peut limiter les valeurs que prend l'attribut d'une classe en UML. Ces contraintes peuvent être définies dans la sémantique statique d'un métamodèle, par exemple avec le langage OCL, puis vérifiées pour les instances du métamodèle.

Les transformations de modèles sont des programmes qui modifient de manière automatique ou semi-automatique des modèles. Ces transformations sont par exemple utilisées pour vérifier qu'un ensemble de modèles est cohérent. La spécification d'une transformation définit des relations entre les éléments des métamodèles. Ensuite, l'exécution d'une transformation crée ou modifie des modèles selon les règles définies entre les métamodèles. À ce titre, les langages de transformation de modèles comme ATL offrent la possibilité de manipuler les éléments des métamodèles.

Urbanisation des systèmes d'information[modifier | modifier le code]

L'urbanisation est un processus de transformation du système d'information d'une organisation afin qu'il soit mieux adapté aux missions et à l'évolution de l'organisation. Ce processus peut être amorcé grâce à la définition d'un métamodèle d'urbanisme.

Zoos de métamodèles[modifier | modifier le code]

Les zoos de métamodèles sont des répertoires de métamodèles qui peuvent être utilisés comme matériel de test et d'expérimentation en ingénierie dirigée par les modèles[12]. Les métamodèles d'un zoo sont exprimés à l'aide d'un langage de modélisation et sont donc tous des instances d'un même méta-métamodèle (par exemple, UML ou Ecore).

En intelligence artificielle[modifier | modifier le code]

En intelligence artificielle, et plus précisément en représentation des connaissances, une ontologie est une spécification qui décrit et analyse les relations entre différents concepts. En cela, les ontologies s'apparentent à des métamodèles[13]. Lorsqu'une ontologie est construite comme un métamodèle, son domaine d'application est un champ d'informations. Un métamodèle constitue une façon de définir une ontologie mais il en existe d'autres[14].

En gestion des processus métiers[modifier | modifier le code]

La gestion des processus métiers (ou business process management) est une discipline de management dont le but est formaliser les processus métiers d'une organisation ainsi que leurs interactions. À cet effet, l'Object Management Group (OMG) a mis en place un business process definition metamodel (BPDM) en 2003. BPDM est un métamodèle qui unifie les diverses notations utilisées dans la définition des processus métiers.

En ingénierie des systèmes[modifier | modifier le code]

Les avantages apportés par la métamodélisation peuvent également être utilisés en dehors de la conception logicielle. Par exemple, le langage SysML est un langage de modélisation utilisé en ingénierie des systèmes et défini comme un sous-ensemble d'UML. Sa définition utilise un métamodèle construit à partir de profils UML. C'est un métamodèle de la couche M2 dans l'architecture en quatre couches de l'approche MDA.

Références[modifier | modifier le code]

  1. a b c d e f g et h (en) Thomas Stahl, Model-Driven Software Development : Technology, Engineering, Management, (lire en ligne)
  2. a b et c (en) Colin Atkinson, « Model-driven development: a metamodeling foundation », IEEE Software,‎ , p. 6
  3. (en) Bianca Scholten, The Road to Integration : A Guide to Applying the ISA-95 Standard in Manufacturing, , 234 p. (ISBN 978-0-9792343-8-5, lire en ligne), p. 155
  4. a et b (en) Pierre Kelsen et Qin Ma, « A Lightweight Approach for Defining the Formal Semantics of a Modeling Language », Lecture Notes in Computer Science,‎ (lire en ligne)
  5. (en) Anya Helene Bagge, Language, Models and Megamodels, Tutorial on Megamodelling, , 24 p. (lire en ligne)
  6. a et b (en) Angelo Gargantini, Elvinia Riccobene et Patrizia Scandurra, « A semantic framework for metamodel-based languages », Automated Software Engineering,‎
  7. (en) Gregory Nordstrom, Metamodeling-rapid design and evolution of domain-specific modeling environments, Nashville, (DOI 10.1109/ECBS.1999.755863, lire en ligne), p. 11-12
  8. a et b Eric Cariou, Ingénierie des Modèles, Méta-modélisation (lire en ligne)
  9. (en) Jean-Jacques Dubray, « Metamodel Oriented Programming », sur infoq.com, (consulté le )
  10. (en) Jon Siegel, Introduction to OMG’s Model Driven Architecture, (lire en ligne), p. 6
  11. a et b (en) « Meta Object Facility », sur omg.org, (consulté le )
  12. (en) « Zoos - AtlanMod », sur imt-atlantique.fr, (consulté le )
  13. Eva Söderström, Birger Andersson, Paul Johannesson et Erik Perjons, « Towards a Framework for Comparing Process Modelling Languages », dans Notes on Numerical Fluid Mechanics and Multidisciplinary Design, Springer International Publishing, (ISBN 978-3-319-98176-5, lire en ligne), p. 600–611
  14. (en) « What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model? », sur metamodel.com, (version du sur Internet Archive)

Voir aussi[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

Article connexe[modifier | modifier le code]