Nothing Special   »   [go: up one dir, main page]

Aller au contenu

« Métamodèle » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
BerAnth (discuter | contributions)
Patrouille : Révocation des modifications de 196.117.97.5 (retour à la dernière version de Tictacbot) ; Vandalisme
Balises : LiveRC Annulation
Eneelk (discuter | contributions)
relecture/réécriture de la partie "non PNL"
Ligne 1 : Ligne 1 :
Dans le cadre d'une [[modélisation]], un '''métamodèle''' est un [[Modèle (informatique)|modèle]] dont les instances sont elles-mêmes des modèles. Comme l'indique le préfixe ''[[Méta (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.
{{À vérifier|thème=informatique|date=juin 2010}}


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]].
Le '''métamodèle''' est un concept employé en [[informatique]] et en [[Programmation neuro-linguistique|PNL]] (approche en psychologie) et y représente deux sens différents.


== Définition ==
== Le métamodèle en informatique ==
Un métamodèle est un modèle qui décrit la structure de modèles<ref name=":0">{{Ouvrage|langue=anglais|auteur1=Thomas Stahl|titre=Model-Driven Software Development: Technology, Engineering, Management|passage=|lieu=|éditeur=|date=2006|pages totales=|isbn=|lire en ligne=https://www.voelter.de/data/books/mdsd-en.pdf}}</ref>. En particulier, il permet la construction de [[Langage de modélisation|langages de modélisation]], la création de relations entre les modèles et la définition de règles de modélisation<ref name=":0" />. On dit que le métamodèle ''représente'' le modèle, tandis que le modèle ''instancie'' le métamodèle<ref name=":3">{{Article |langue=anglais |auteur1=Colin Atkinson |titre=Model-driven development: a metamodeling foundation |périodique=IEEE Software |date=2003 |issn= |lire en ligne= |pages=6 }}</ref>. 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 (informatique)|UML]]<ref>{{Ouvrage|langue=anglais|auteur1=Bianca Scholten|titre=The Road to Integration: A Guide to Applying the ISA-95 Standard in Manufacturing|passage=155|lieu=|éditeur=|date=2007|pages totales=234|isbn=978-0-979234-38-5|lire en ligne=}}</ref>. Ainsi, le diagramme de classes est un métamodèle.
La notion de métamodèle est utilisée dans trois domaines de l'informatique : en intelligence artificielle, en programmation objet et en génie logiciel.


== Spécification d'un métamodèle ==
En [[intelligence artificielle]], et plus précisément en [[représentation des connaissances]], un métamodèle décrit la structure des modèles et permet de raisonner sur les modèles comme sur les connaissances de premier niveau<ref>R. Davis, « ''{{Langue|en|Meta-Rules: Reasonning About Control}}'', ''{{Langue|en|AI}}'', vol. 15, 1980.</ref>. Certains langages à objets, comme [[Java (langage)|Java]], décrivent de la même manière les classes, les métaclasses et les objets. En [[génie logiciel]], c'est avec [[UML (informatique)|UML]] que la notion de métamodèle a été développée. Le métamodèle décrit les modèles : classes, objets, attributs, relations… et se décrit lui-même.
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<ref name=":0" />{{,}}<ref name=":1">{{Article |langue=anglais |auteur1=Pierre Kelsen |auteur2=Qin Ma |titre=A Lightweight Approach for Defining the Formal Semantics of a Modeling Language |périodique=Lecture Notes in Computer Science |date=2008 |issn= |lire en ligne=http://www.site.uottawa.ca/~bochmann/talks/MODELS%202008/lightweight%20semantics%20-%20Aloy.pdf |pages= }}</ref>. Idéalement, ces éléments sont définis à l'aide d'un langage formel<ref name=":1" />. Pour cette raison, un métamodèle est aussi parfois défini comme le modèle d'un [[langage de modélisation]]<ref>{{Ouvrage|langue=anglais|auteur1=Anya Helene Bagge|titre=Language, Models and Megamodels, Tutorial on Megamodelling|passage=|lieu=|éditeur=|date=10 juillet 2014|pages totales=24|isbn=|lire en ligne=http://grammarware.github.io/sattose/slides/Bagge.pdf}}</ref>.


=== Syntaxe abstraite ===
Métamodèle signifie littéralement modèle du modèle. Il peut être défini comme la représentation d'un point de vue particulier sur des modèles. Un métamodèle qui se décrit lui-même est dit réflexif. Cette propriété permet d'avoir une représentation complète des modèles sans régression infinie : modèle, méta-modèle, méta-méta-modèle…
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<ref name=":0" />. Par exemple, la syntaxe abstraite d'un diagramme de classes est composée de classes, d'attributes, d'associations, etc.


=== Syntaxe concrète ===
Au-delà de leur diversité, les modèles présentent une caractéristique commune : ils sont des représentations d’un point de vue (d'une conception, d'une théorie…) particulier sur un système sujet d’études. Ils sont écrits dans un code (un langage, un formalisme…) approprié à l'expression et à l'usage des connaissances qu'ils véhiculent.<br/>
La syntaxe concrète d'un métamodèle décrit la représentation des constructions définies par sa syntaxe abstraite<ref name=":0" />. Cette représentation est le plus souvent [[Représentation graphique|graphique]] ou [[Texte|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 [[XML Metadata Interchange|XMI]].
Une carte IGN, une partition musicale, la formule mathématique « ''E''=''mc''² », un logiciel… sont des exemples de modèles.


=== Sémantique statique ===
La notion de « [[Modèle]] » est donc directement liée à celles de « [[Formalisme]] », de « Point de Vue/[[Théorie]] » et de « Sujet d'étude/[[Système]] ».
La sémantique statique (aussi appelée sémantique structurelle<ref name=":2">{{Article |langue=anglais |auteur1=Angelo Gargantini |auteur2=Elvinia Riccobene |auteur3=Patrizia Scandurra |titre=A semantic framework for metamodel-based languages |périodique=Automated Software Engineering |date=2009 |issn= |lire en ligne= |pages= }}</ref>) 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<ref name=":0" />. Il existe des langages spécifiques pour la formulation de ces règles. Par exemple, [[Object Constraint Language|OCL]] permet de décrire la sémantique statique d'un diagramme de classes<ref name=":2" />. 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écidabilité|décidables]].


=== Sémantique dynamique ===
Considérons à son tour la structure ''S'' composée des 4 notions {Sujet d’étude, Formalisme, Point de Vue, Modèle} comme un nouveau sujet d’études, en l’occurrence un métasujet d’études. Il est alors tout à fait concevable et légitime de bâtir des (méta)points de vue sur tout ou partie de ce nouveau sujet d’études et de les représenter par des (méta)modèles exprimés dans des (méta)langages (et ainsi de suite ; cf. « [[Unified Modeling Language|UML]] Four-Layer Architecture » [[Object Management Group|OMG]]).
La sémantique dynamique d'un métamodèle est une description du sens qui lui est donné<ref name=":3" />. Contrairement aux aspects précédents, la sémantique dynamique est rarement exprimée à l'aide d'un langage formel<ref>{{Ouvrage|langue=anglais|auteur1=Gregory Nordstrom|titre=Metamodeling-rapid design and evolution of domain-specific modeling environments|passage=11-12|lieu=[[Nashville]]|éditeur=|date=1999|pages totales=|isbn=|doi=10.1109/ECBS.1999.755863|lire en ligne=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.102.527&rep=rep1&type=pdf}}</ref>. Le langage naturel est pour cela privilégié<ref name=":3" />.


== Méta-métamodèle ==
[[Image:Modèles_et_métamodèles.JPG]]


=== Définition ===
Un '''métamodèle''' peut donc être défini comme la représentation d'un point de vue particulier sur cette structure ''S''.
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<ref name=":0" />. Un tel métamodèle est appelé ''méta-métamodèle''.
Si on ne s'intéresse dans ''S'' qu'au couple {Langage, Modèle} on rejoint l'acception la plus courante de métamodèle : modèle de langage de description de modèles. Il existe différents [[métalangage]]s permettant l'écriture de tels métamodèles. Parmi ceux-ci on peut citer entre autres le langage BNF ([[forme de Backus-Naur]]) ou le [[Meta-Object Facility|MOF]].


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''), c'est-à-dire qu'il peut se représenter lui-même<ref>{{Lien web|langue=anglais|auteur1=Jean-Jacques Dubray|titre=Metamodel Oriented Programming|url=https://www.infoq.com/articles/mop/|site=infoq.com|périodique=|date=2009|consulté le=26 novembre 2019}}</ref>.
Si on s'intéresse au couple {Sujet d'études, Point de Vue}, un métamodèle sera la représentation d'une opinion (d'une théorie…) portée sur des points de vue portés sur des sujets d'études (noter la récurrence). L'[[épistémologie]] et l'histoire des Sciences sont des disciplines pourvoyeuses de tels métamodèles.


=== Architecture dirigée par les modèles ===
Les méthodes de conception d'applications et d'architecture informatiques (telles que le [[cycle en V]]), leurs représentations formelles et les logiciels associés relèvent également de la métamodélisation.
{{Article connexe|Architecture dirigée par les modèles|Meta-Object Facility}}
[[Fichier:M0-m3.png|alt=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é.|vignette|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. 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 (informatique)|classe]] (M1) – [[Objet (informatique)|objet]] (M0)) est conforme à l'approche MDA bien qu'elle ne définisse pas de méta-métamodèle.
[[Fichier:MOF Metamodel 144dpi.jpg|alt=Méta-métamodèle MOF|vignette|Méta-métamodèle MOF]]
La définition du méta-métamodèle du standard MOF reprend les principaux concepts des diagrammes de classes en UML (classifieurs, [[Attribut (informatique)|attributs]], [[Diagramme de classes#Association|associations]], etc.). Puisque le méta-métamodèle est auto-descriptif, il est également représenté en utilisant ces concepts.

== Applications ==

=== En génie logiciel ===

==== Validation et transformation de modèles ====
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<ref name=":0" />. 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 [[Transformation de modè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 [[ATLAS Transformation Language|ATL]] offrent la possibilité de manipuler les éléments des métamodèles.

==== Urbanisation des systèmes d'information ====
{{Article détaillé|Métamodèle d'urbanisme}}
L'[[Urbanisation (informatique)|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 ====
Les zoos de métamodèles sont des répertoires de métamodèles qui peuvent être utilisés comme matériel de [[Test logiciel|test]] et d'expérimentation en ingénierie dirigée par les modèles<ref>{{Lien web|langue=anglais|auteur1=|titre=Zoos - AtlanMod|url=https://web.imt-atlantique.fr/x-info/atlanmod/index.php?title=Zoos|site=imt-atlantique.fr|périodique=|date=9 juillet 2015|consulté le=3 décembre 2019}}</ref>. 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 [[Eclipse Modeling Framework|Ecore]]).

=== En intelligence artificielle ===
En [[intelligence artificielle]], et plus précisément en [[représentation des connaissances]], une [[Ontologie (informatique)|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<ref>{{Chapitre|prénom1=Eva|nom1=Söderström|prénom2=Birger|nom2=Andersson|prénom3=Paul|nom3=Johannesson|prénom4=Erik|nom4=Perjons|titre chapitre=Towards a Framework for Comparing Process Modelling Languages|titre ouvrage=Notes on Numerical Fluid Mechanics and Multidisciplinary Design|éditeur=Springer International Publishing|date=2002|isbn=978-3-319-98176-5|lire en ligne=http://dx.doi.org/10.1007/3-540-47961-9_41|consulté le=2019-11-30|passage=600–611}}</ref>. 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<ref>{{Lien web|langue=anglais|auteur1=|titre=What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model?|url=https://web.archive.org/web/20050307110503/http://www.metamodel.com/article.php?story=20030115211223271|site=metamodel.com|périodique=|date=2003|consulté le=}}</ref>.

=== En gestion des processus métiers ===
La [[Business Process Management|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|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 ===
Les avantages apportés par la métamodélisation peuvent également être utilisés en dehors de la conception logicielle. Par exemple, le langage [[Systems Modeling Language|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 [[Profil (UML)|profils UML]]. C'est un métamodèle de la couche ''M2'' dans l'architecture en quatre couches de l'approche MDA.


== Le méta-modèle en PNL ==
== Le méta-modèle en PNL ==
Ligne 37 : Ligne 78 :


== Voir aussi ==
== Voir aussi ==
=== Article connexe ===
* [[Métalangage]]

=== Bibliographie ===
=== Bibliographie ===
* Modèles & Métamodèles, Guy Caplat, 2008 {{ISBN|978-2-88074-749-7}}
* Modèles & Métamodèles, Guy Caplat, 2008 {{ISBN|978-2-88074-749-7}}
Ligne 45 : Ligne 83 :
* {{Ouvrage | id = Esser, 2003 | langue = | prénom1 = | nom1 = | auteur = Monique Esser | titre = La PNL en perspective | numéro d'édition = 2 | lien éditeur = Labor | éditeur = Labor | lieu = Bruxelles | année = 2003 | pages totales = | isbn = 978-2-8040-1792-7 | isbn2 = 2-8040-1792-3 | oclc = 56545419 | passage = | lire en ligne = | plume = oui }}
* {{Ouvrage | id = Esser, 2003 | langue = | prénom1 = | nom1 = | auteur = Monique Esser | titre = La PNL en perspective | numéro d'édition = 2 | lien éditeur = Labor | éditeur = Labor | lieu = Bruxelles | année = 2003 | pages totales = | isbn = 978-2-8040-1792-7 | isbn2 = 2-8040-1792-3 | oclc = 56545419 | passage = | lire en ligne = | plume = oui }}
* {{Ouvrage | id = TurnerHevin, 2006 | langue = | prénom1 = | nom1 = | auteurs = Jane Turner et Bernard Hévin | titre = Le nouveau Dico-PNL | sous-titre = Comprendre les mots et les concepts de la PNL | éditeur = InterÉditions | lieu = Paris | année = 2006 | pages totales = | isbn = 978-2-10-050385-8 | isbn2 = 2-10-050385-5 | oclc = 239622833 | passage = | lire en ligne = | plume = oui }}
* {{Ouvrage | id = TurnerHevin, 2006 | langue = | prénom1 = | nom1 = | auteurs = Jane Turner et Bernard Hévin | titre = Le nouveau Dico-PNL | sous-titre = Comprendre les mots et les concepts de la PNL | éditeur = InterÉditions | lieu = Paris | année = 2006 | pages totales = | isbn = 978-2-10-050385-8 | isbn2 = 2-10-050385-5 | oclc = 239622833 | passage = | lire en ligne = | plume = oui }}

=== Article connexe ===
* [[Modélisation]]
* [[Métalangage]]


{{Portail|informatique|psychologie}}
{{Portail|informatique|psychologie}}

Version du 3 décembre 2019 à 19:19

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

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 diagramme de classes est un métamodèle.

Spécification d'un métamodèle

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

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

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

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

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

Définition

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), c'est-à-dire qu'il peut se représenter lui-même[8].

Architecture dirigée par les modèles

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. 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éta-métamodèle MOF
Méta-métamodèle MOF

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

En génie logiciel

Validation et transformation de modèles

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

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

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[9]. 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

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[10]. 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[11].

En gestion des processus métiers

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

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.

Le méta-modèle en PNL

La programmation neuro-linguistique (PNL) est une démarche en psychologie qui cherche à modéliser les compétences cognitives et comportementales des humains. Le tout premier modèle que ces concepteurs ont conçu est le « méta-modèle » [12]. C'est un modèle linguistique, basé sur les travaux de Noam Chomsky et ceux d'Alfred Korzybsky[13].

Il sert d’une part à mettre en évidence les mécanismes utilisés par le sujet pour transformer son expérience sensorielle en langage, et d’autre part à enrichir la conception du monde du sujet par le questionnement des figures linguistiques spécifiques et de retrouver ainsi les représentations mentales sensorielles initiales qui ont suscité l'expression verbale[14].

Le méta-modèle en PNL est constitué de 12 types de violations sémantiques, c'est-à-dire des expressions peu claires. Celles-ci peuvent être regroupées en 3 groupes : les omissions, les généralisations et les distorsions[13]. À chacun de ces types de phrases, correspond une question-clé qui invite le patient à éclaircir l'expression de sa pensée.

Références

  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-979234-38-5), 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. (en) Jean-Jacques Dubray, « Metamodel Oriented Programming », sur infoq.com, (consulté le )
  9. (en) « Zoos - AtlanMod », sur imt-atlantique.fr, (consulté le )
  10. 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
  11. (en) « What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model? », sur metamodel.com,
  12. Monique Esser, 2003, p. 12.
  13. a et b Catherine Cudicio, 1986, p. 51.
  14. Jane Turner et Bernard Hévin, 2006, p. 99.

Voir aussi

Bibliographie

Article connexe