Skip navigation

Beh nan, pas ma mère, plutôt celle de tous, de tout.

Salut, un petit post sur le « méta » et le développement dirigé par des modèles.

Pour une définition de Méta, je ne peux que vous conseiller la lecture de Wikipedia

La voici:

méta est un préfixe qui provient du grec μετά (meta) (après, au-delà de, avec). Il exprime, tout à la fois, la réflexion, le changement, la succession, le fait d’aller au-delà, à côté de, entre ou avec.

méta signifie aussi à propos, comme dans métaphysique, la physique de la physique, ou dans métalinguistique, désignant le lexique linguistique.

méta est souvent utilisé dans le vocabulaire scientifique pour indiquer l’auto-référence (réflexion) :

  • méta-physique = physique de la physique
  • méta-langage = système ou langage permettant de décrire d’autres langages
  • méta-livre = livre à propos d’un livre
  • méta-documentation = documentation sur la documentation

méta est aussi très souvent utilisé en science pour désigner un niveau d’abstraction supérieur, un modèle. Exemple : une métadonnée est une donnée sur les données.

Nous voilà donc à parler de ce qu’on parle, mais tout autrement.

Ah ?

Bien sûr que oui. Et on le fait tout le temps d’ailleurs, mais on est devenue tellement arrogant qu’on ne le voit plus.

Ainsi quand on parle de quelque chose, on est obligé de savoir au pire  du meilleur la structure et au meilleur en y ajoutant la connaissance du comportement, de ce dont on parle.

Quand on parle d’une personne, on s’attend à ce qu’elle est des jambes, parce qu’on pense à un truc du genre « Homme possède deux Jambes » et que si bizarrement un homme n’en possède pas, ça choque un peu, mais s’il en a trois ?

En bref, quand on se place dans un contexte « méta », on parle donc de ce qui est : la structure topologique et relationnelle de l’être (ce qui est), ce qui inclus évidement son comportement autant interne qu’externe vis-à-vis des autres partis.

Et on fait ça selon nos intérêts : un informaticien va prêter plus d’attention à ce qu' »est » l’informatique, et ainsi mieux y voir (à force de temps, de passion ou autre) les concepts affairants et leurs relations entre elles. Il se peut même que certains concepts n’y soit que « référencés ». Ils ne sont pas hors de contexte, seulement que ce contexte l’utilise (référencement ou encapsulation). Par exemple, dans le contexte « Pays », on pourrait y définir « Entreprise ». Après tout un pays possède des entreprises, dans un certains sens (« les entreprises françaises »). Et dans un autre sens, Pays pourrait être référencé par un produit « Voyage » d’un tout autre contexte. Ils n’ont rien à voir ?

C’est ce qu’exprime Wiki dans sa définition, dans la première phrase « le fait d’aller au-delà, à côté de, entre ou avec« . Depuis le niveau méta, on peut aller absolument n’importe ou, lier n’importe quoi à n’importe quoi d’autre. Pourvue qu’on sache en comprendre le sens (documentation du modèle, etc).

Je n’ai jusqu’ici utilisé que peu de mots inusuels.

Un exemple : Php 5.

Php5 est un language de développement informatique.
Ce language définit des concepts, tels que Classe, Interface, Propriété, Methode, Opération, etc.
A l’aide d’un méta-language, on peut définir le modèle.

Métaclasse Class

Métaclasse Class

Ici est définit une métaclasse « Class » qui possède des relations :

  • extends: une classe peut étendre une autre classe, une seulement
  • methods : une classe peut posséder une à plusieurs méthodes
  • properties : une classe peut posséder une à plusieurs propriétés
  • implements : une classe peut implémenter plusieurs interfaces

Ici nous avons donc décrit de quoi on parle, de classes. Ainsi je peux parler de la classe Personne qui possède l’attribut « jambes ».

Création de classes php5 nommées Person et Jambe et d'une relation entre elles

Création de classes php5 nommées Person et Jambe et d'une relation entre elles

Vous pouvez voir ici que le travail effectué plus haut me permet maintenant d’éditer un modèle d’une classe php5 de manière un peu plus visuelle.Ceci a été réalisé « dynamiquement », sans générer aucun code !

En premier lieu vient (d’office) un éditeur XML hiérarchique comme dans cette image. Ensuite, en utilisant GMF, on peut créer un éditeur visuel à base de concepts et de relations, un « vrai » modeleur php5 en somme.

C’est de cette même manière que j’ai réalisé script.ecore, filesystem.ecore, php5.ecore, symfony.ecore ou encore doctrine.ecore.

Générer du code à partir d’un modèle (instance de méta-modèle) :

On peut utiliser des outils tels que openArchitectureWare ou Acceleo pour générer du code à partir des modèles. Je tenterai d’aborder l’un comme l’autre dans d’autres posts.

Je grossi un peu les choses, mais c’est plus pour donner envie à d’autres de s’y mettre qu’autre chose :p

A bientôt !

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :