Modèle de représentation

Dans différents articles sur les modèles, nous avons parlé de modélisation, de transformations de modèle, de méta-modèles et méta-méta-modèles, de langage de modélisation et bien sur de DSL.

Nous n’avons par contre pas évoqué la question de la représentation des modèles et donc des modèles de représentation.

Pour construire un modèle, il faut évidement un langage de modélisation. Pour replacer le contexte, un langage de modélisation consolide l’ensemble des concepts qui permettent de construire un modèle par instanciation de ces premiers. Ainsi, a l’image de la relation classe/instance, si l’on place la classe au niveau M2 (celui du méta-modèle) alors une instance de la classe sera un modèle conforme a celle ci.

Par exemple, si l’on considère un DSL permettant de représenter des Personnes alors avec une classe personne, il sera possible de modéliser des personnes réelles au travers des instances de cette classe.

Tout cela est bien pratique mais comment tout cela va t il se représenter? sur la base d’un méta-modèle donné (ici une classe Personne), il est effectivement possible de déclarer « virtuellement » des personnes mais cela ne décrit pas comment cela va être représenté!

Comment cela, ce n’est pas représenté? Bien si, quand je fait une classe, je décris cela en UML dans un diagramme de Classe et quand j’instancie cette classe pour créer une personne alors je peux utiliser un diagramme d’objet pour le représenter comme suit:

Oui effectivement, c’est bien ce qu’il est possible de faire, la définition de la Personne en tant que classe peut être décrite en UML de la sorte. De même le fait de choisir que l’instance d’une personne sera représenté via un objet UML est aussi tout a fait possible…. mais cela est une représentation parmi d’autre.

Par exemple si je choisi de représenter une personne sous la forme d’un bonhomme, le schéma suivant est alors toujours en fait le même que le précédent, a la représentation prés!

Mais en considérant le code suivant, ma modélisation est de nouveau encore complément vrai!

public class Personne {}
Personne bob=new Personne();

La différence fondamentale entre ces modèles est donc juste le modèle de représentation utilisé. Dans le premier cas, une représentation UML, la seconde une représentation custom et la troisième une représentation textuelle. On dit alors que l’on a une syntaxe abstraite commune et différentes syntaxes concrètes.

Vous allez donc me dire mais il faut bien représenter les choses d’une manière ou d’une autre! oui tout a fait, mais c’est la ou il est important de bien distinguer le modèle de sa représentation car celle ci peut induire en erreur sur la nature du modèle et du DSL employé.

Si nous avions juste considérer le modèle UML, nous aurions pu considérer que le méta-modèle ayant permis de définir Bob était UML! Or non, celui-ci nous sert qu’a le représenter! Il en va même de même pour la classe Personne, le méta-modèle employé n’est pas non plus UML (et le diagramme de classe) mais le DSL du concept Objet de la POO qui est implémenté par UML dans sa représentation du diagramme de classe.

Ou la la ça devient peut être subtil et peut être pas très utile. En fait détrompez vous! Si dans le cadre de modèle descriptif, c’est assez peu utile ou du moins ça l’est pour avoir une représentation des choses fidèles a l’idée de ce que l’on en fait, c’est beaucoup plus important dans le cadre de l’automatisation et de la transformation de modèle ou il va être important de distinguer syntaxe abstraite et syntaxe concrète, pour garantir que nos transformations sont bien définit entre domaines ou si celles-ci ne sont que des projections d’une représentation dans une autre (avec les limitations que portent les représentations elles-mêmes).

Si un parallèle devait être fait, il est exactement le même qu’avec les syntaxe concrète et abstraite que l’on trouve dans les langages de programmation a ceci prêt qu’ici nous ne manipulons pas des arbres syntaxiques comme en ASN1[1] ou avec BNF [2] pour la représentation syntaxique mais des graphes syntaxiques permettant un degré d’expressivité et de relation entre concept plus élevé et potentiellement représentable en UML bien sur mais aussi en [3].

Références

Un commentaire sur “Modèle de représentation

Laisser un commentaire