Bonjour à tous,
ma question sera simple :
Quel est la différence en un profil UML et un méta-modèle ?
Avantages / inconvénients ?
Profil UML
Méta-modèle
Bonjour à tous,
ma question sera simple :
Quel est la différence en un profil UML et un méta-modèle ?
Avantages / inconvénients ?
Le méta-modèle d'UML est la définition du langage UML. C'est ce qui définit les élément de constructions disponibles et comment il peuvent s'assembler. Seulement, UML permet de représenter tout et n'importe quoi. Après tout, tu peux donner la sémantique que tu veux aux carrés et aux traits que tu dessines ! Cela fait sa force mais parfois sa faiblesse.
Pour pouvoir specialiser UML pour un usage spécifique (base de donnée, biologie, recette de cuisine ), le méta-modèle a la capacité d'être étendu pour intégrer de nouvelles constructions et de nouvelles régles d'assemblage adaptées au domaine traité. Paradoxalement, on ajoute des informations au métamodèle UML (stéréotypes + contraintes) pour restreindre ses possibilités. (sous-entendu, enlever la possibilité de faire n'importe quoi)
Un profil UML est donc un ensemble de stéréotypes et de contraintes qui vient compléter la définition standard d'UML (i.e, le métamodèle UML).
je suis d'accord avec toi mais pas complètement convaincu
Poursuivons autour d'un exemple :
Je souhaite "(méta)modèliser" ... disons ... une bibliothèque.
Si j'utilise juste UML, je manipulerai des classes et des attributs auxquels on attache la sémantique qu'on veut (livre, auteur, ...) mais mon métamodèle sera pollué par des notions UML dont je n'ai pas besoin et qui n'ont pas de sens dans le contexte.
En utilisant un profil, je concrétise la chose en fixant le vocabulaire et en délimitant bien mon contexte.
Maintenant, si je souhaite me détacher d'UML, en restant fidèle au MOF, je peux aussi définir un métamodèle en utilisant directement mon jargon. Ainsi j'ai directement un métamodèle spécifique sans le vocabulaire UML ni de notions de stéréotypes/contraintes.
Question : Quel est la différence entre le profil "Bibliothèque" (basé sur UML) et le métamodèle "Bibliothèque" (basé sur le MOF) ?
- profil "Bibliothèque" (basé sur UML) : tu spécialises le langage UML à ta sauce.
- métamodèle "Bibliothèque" : tu créés ton propre langage.
L'argument est faveur de la première solution est très pragmatique : il s'agit de démarrer d'un existant (le langage UML) et de bénéficier in-fine de tous les outils existants qui gravite autour de ce langage. Par exemple, n'importe quel bon outil CASE pour UML permet le chargement de profil (ex: bibliothèque) Dès lors, tu disposes d'un outil complet pour modéliser ta bibliothèque. C'est l'outil par exemple qui va proposer une palette graphique adéquate, qui va s'occuper de vérifier que tu assembles correctement tes élément de constructions (vérif des contraintes du profil), te permettre des exportations dans divers format (XML, PNG, ..), etc...
Maintenant, tu peux créer ton propre langage "bibliothéque" en utilisant le langage du MOF (ou équivalent). C'est l'idéal évidemment puisque tu obtiens un DSL (domain specific language) parfaitement adapté et sans aucune notion superflue. C'est bien. Mais il va falloir "outiller" tout cela pour que cela soit utile. Et là ya du boulot !
Le principe des DSLs est le plus séduisant mais il faut construire toute l'infrastructure autour pour l'exploiter. Cela prends du temps et coute de l'argent. En attendant, les profils sont beaucoup moins couteux puisque l'on se "branche" sur l'existant. Mais les chercheurs réfléchissent à des moyens de générer automatiquement une infrastructure à partir d'une définition de langage. N'importe qui pourra alors créer et outiller son langage en un temps record.
Je vois qu'on s'est bien compris ...
Ce post pourrait se transformer en [Débat] je pense ...
Très intructif ...
@+
Petit ajout par rapport à la discussion : il existe maintenant des moyens de générer l'outillage lorsque l'on part d'un méta-modèle.
En particulier, l'initiative EMF (Eclipse Modeling Framework) permet de générer une API, un éditeur graphique et un ensemble de classes permettant de réaliser des applications à partir d'un méta-modèle.
EMF s'appuie sur Ecore, un méta-méta-modèle qui peut être vu comme un sous-ensemble du MOF.
Pour tout savoir sur EMF : http://www.eclipse.org/modeling/emf/
Lire aussi Cours et tutoriels pour apprendre UML surtout celui ci : Cours complet pour apprendre UML 2.0, une série de tutoriels par Laurent Audibert
Un nouveau métamodèle n'a d'intérêt que si l'on cherche à définir des éléments qui n'existent pas déjà dans UML.
Si on part d'un méta-méta-modèle pour définir des méta-classes semblables à celle de la superstructure d'uml, c'est un peu comme réinventer la roue...
A mon avis, les profils sont plus adaptés aux besoins actuels (majoritairement informatiques).
Il y a la théorie, sur laquelle je suis favorable aux DSL, mais en pratique c'est superflu car les techniques de profil UML permettent énormément de choses, et bien assez pour 90% des cas actuels à mon avis.
Un lien intéressant sur les techniques de profil UML2 : http://www.eclipse.org/modeling/mdt/...u/article.html
Partager