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é
m Bot: Fusion des bandeaux de portail
m correction de lien archive
 
(27 versions intermédiaires par 17 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Confusion|texte=Ne doit pas être confondu avec le [[Programmation_neuro-linguistique#Linguistique|métamodèle en tant qu'outil de programmation neuro-linguistique]].}}
{{à vérifier}}
Le métamodèle est un concept employé en informatique et en PNL (approche en psychologie) et y représente 2 sens différents.


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.
==Le métamodèle en informatique==
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.


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]].
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 écrit dans un code (un langage, un formalisme, ...) approprié à l'expression et à l'usage des connaissances qu'ils véhiculent.
Une carte IGN, une partition musicale, la formule mathématique "E=mc²", un logiciel, ... sont des exemples de modèles.


== Définition ==
La notion de "[[Modèle]]" est donc directement liée à celles de "[[Formalisme]]", de "Point de Vue/[[Théorie]]" et de "Sujet d'études/[[Système]]"
[[Fichier:Métamodèle, modèle et original.png|alt=Liens d'instanciation et de représentation entre un métamodèle, un modèle et un original|vignette|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<ref name=":0">{{Ouvrage|langue=en|auteur1=Thomas Stahl|titre=Model-Driven Software Development|sous-titre=Technology, Engineering, Management|éditeur=|année=2006|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=en|auteur1=Bianca Scholten|titre=The Road to Integration : A Guide to Applying the ISA-95 Standard in Manufacturing|éditeur=|année=2007|pages totales=234|passage=155|isbn=978-0-9792343-8-5|lire en ligne=https://books.google.com/books?id=-UQ0knDacZsC&printsec=frontcover}}</ref>. 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 ==
Considérons à son tour la structure S composée des 4 notions {Sujet d’Etudes, 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]]).
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=en|auteur1=Anya Helene Bagge|titre=Language, Models and Megamodels, Tutorial on Megamodelling|éditeur=|date=10 juillet 2014|pages totales=24|isbn=|lire en ligne=http://grammarware.github.io/sattose/slides/Bagge.pdf}}</ref>.


=== Syntaxe abstraite ===
[[Image:Modèles_et_métamodèles.JPG]]
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 ===
Un '''métamodèle''' peut donc être défini comme la représentation d'un point de vue particulier sur cette structure S.
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]].
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 [[MOF]].


=== Sémantique statique ===
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.
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 ===
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.
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=en|auteur1=Gregory Nordstrom|titre=Metamodeling-rapid design and evolution of domain-specific modeling environments|lieu=Nashville|éditeur=|année=1999|passage=11-12|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" />.


== Le méta-modèle en PNL ==
== Méta-métamodèle ==
La [[Programmation Neuro-Linguistique]] (PNL) est une démarche en psychologie qui cherche à [[modélisation (PNL)|modéliser]] les [[cognition|compétences cognitives]] et comportementales des humains. Le tout premier modèle que ces concepteurs ont conçu est le « [[Programmation Neuro-Linguistique#Linguistique|méta-modèle]] » <ref name="Esser2003,p.12">{{harvsp|id=Esser, 2003|texte=Monique Esser, 2003|p=12}}.</ref>. C'est un modèle linguistique, basé sur les travaux de Noam Chomsky et ceux d'Alfred Korzybsky<ref name="Cudicio, 1986,p.51">{{harvsp|id=Cudicio, 1986|texte=Catherine Cudicio, 1986|p=51}}.</ref>.


=== Définition ===
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ésentation mentale|représentations mentale]]s sensorielles initiales qui ont suscité l'expression verbale<ref name="TurnerHevin, 2006,p.99">{{harvsp|id=TurnerHevin, 2006|texte=Jane Turner et Bernard Hévin, 2006|p=99}}.</ref>.
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''. 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''<ref name=":5">{{Ouvrage|langue=fr|auteur1=Eric Cariou|titre=Ingénierie des Modèles, Méta-modélisation|éditeur=|année=|isbn=|lire en ligne=http://ecariou.perso.univ-pau.fr/cours/mde/cours-meta}}</ref>), 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>.


=== Architecture dirigée par les modèles ===
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<ref name="Cudicio, 1986,p.51">{{harvsp|id=Cudicio, 1986|texte=Catherine Cudicio, 1986|p=51}}.</ref>. À chacun de ces types de phrases, correspond une question-clé qui invite le patient à éclaircir l'expression de sa pensée.
{{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<ref>{{Ouvrage|langue=en|auteur1=Jon Siegel|titre=Introduction to OMG’s Model Driven Architecture|éditeur=|date=septembre 2001|passage=6|isbn=|lire en ligne=https://www.omg.org/news/meetings/workshops/RT_2002_Workshop_Presentations/02-3_Siegel_MDATech90Min.pdf}}</ref>. 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<ref name=":4">{{Lien web|langue=anglais|auteur1=|titre=Meta Object Facility|url=https://www.omg.org/spec/MOF/2.5.1/|site=omg.org|périodique=|date=octobre 2016|consulté le=4 décembre 2019}}</ref>. 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<ref name=":4" />.
[[Fichier:MOF Metamodel 144dpi.jpg|alt=Méta-métamodèle MOF|vignette|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, [[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 ===

==== Échange de modèles ====
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<ref name=":5" />. Le standard MOF fournit par exemple [[XML Metadata Interchange|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 [[Extensible Markup Language|XML]].

==== 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 archive|langue=anglais|auteur1=|titre=What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model?|horodatage archive=20050307110503|url=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.


== Références ==
== Références ==
Ligne 32 : Ligne 74 :


== Voir aussi ==
== Voir aussi ==
=== Bibliographie ===
* Modèles & Métamodèles, Guy Caplat, 2008 {{ISBN|978-2-88074-749-7}}

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


{{Portail|informatique}}
=== Bibliographie ===
* {{fr}} Modèles & Métamodèles, Guy Caplat, 2008 {{ISBN|978-2-88074-749-7}}
* {{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 | isbn10 = 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 | isbn10 = 2-10-050385-5 | oclc = 239622833 | passage = | lire en ligne = | plume = oui }}

{{Portail|informatique|psychologie}}


{{DEFAULTSORT:Metamodele}}
[[Catégorie:Génie logiciel]]
[[Catégorie:Génie logiciel]]
[[Catégorie:Programmation neuro-linguistique]]

[[de:Metamodell]]
[[en:Metamodeling]]
[[es:Metamodelado]]
[[it:Metamodellazione]]
[[ja:メタモデル]]
[[lt:Metamodeliavimas]]
[[pl:Metamodelowanie]]
[[zh:元建模]]

Dernière version du 10 janvier 2021 à 15:12

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)

Bibliographie

[modifier | modifier le code]

Article connexe

[modifier | modifier le code]