Skip navigation

Salut !

Concernant mon projet open source de modélisation d’applications web à l’aide du cadre applicatif Php 5, Symfony.

Ce petit post pour revoir les outils utilisés et pourquoi :

  1. Epsilon Generation Language
    Permet de générer du texte à partir d’instances de méta-modèles
  2. Epsilon Wizard Language
    Permet de définir des wizards utilisables depuis les éditeurs EMF générés
  3. Epsilon Transform Language
    Permet de définir des transformations entre plusieurs modèles en source vers plusieurs modèles cible, de différents méta-modèles
  4. EMF
    Permet de définir des méta-modèles ecore
  5. Epsilon Eugenia
    Permet de réaliser des éditeurs graphiques semi-automatiquement à partir d’un méta-modèle ecore
  6. GMF
    Cadre applicatif pour la réalisation d’éditeurs graphiques sur base ecore

Tous sont basés sur Eclipse Ganymed.

Maintenant la liste des projets qui vont être créés:

  1. php5
    Définition du métamodèle de Php5 dans sa perspective objet (Class, Interface, Namespace, etc) > 5.2.3
  2. doctrine
    Définition du métamodèle de Doctrine (Record, Connection, etc) > 1.0.6
  3. symfony
    Définition du métamodèle de Symfony (Project, Application, Module, etc) > 1.0

Chacun de ces projets nécessitent plusieurs artefacts:

  1. un méta-modèle
  2. un générateur
  3. des wizards pour faciliter l’instantiation de modèles
  4. des contraintes pour valider les instances de métamodèles
  5. un éditeur hierarchique (parent/enfants)
  6. un éditeur graphique (boite-relations)

Il y a aussi les transformations vers une cible technologique définie.
Concrètement, le méta-modèle Php5 doit être vu comme une cible technologique, puisqu’il y a derrière un générateur de code.
A contrario, Symfony, bien qu’implémenté en Php5, reste purement conceptuel : c’est une utilisation du méta-modèle Php5.

Exactement, lorsqu’on créé une application Symfony, on écrit du code Php5.
Donc lorsqu’on modélisera une application Symfony, on écrira un modèle Symfony, qui sera transformé ensuite en modèle Php5, de là le code sera généré.

Là, on réutilise. Enfin on capitalise.

Il faut donc rajouter un projet .xxx2php5 pour Symfony et Doctrine

Les contraintes sont dans un autre projet pour l’instant mais il se peut bien qu’ils rejoignent le projet du méta-modèle ce qui serait aussi sensé.

Ce qui au final donne ça :

  1. php5.model
  2. php5.generator
  3. php5.model.wizards
  4. php5.model.checks
  5. php5.editor
  6. php5.modeler
  7. doctrine.model
  8. doctrine.generator
  9. doctrine.model.wizards
  10. doctrine.model.checks
  11. doctrine.editor
  12. doctrine.modeler
  13. doctrine.doctrine2php5
  14. symfony.model
  15. symfony.generator
  16. symfony.model.wizards
  17. symfony.model.checks
  18. symfony.editor
  19. symfony.modeler
  20. symfony.symfony2php5

Pourquoi Php5 ?

L’objectif est de permettre la modélisation d’applications symfony et symfony étant un framework php il est sensé que ce métamodèle étende le métamodèle de php5, ou alors permet une transformation vers ce méta-modèle.
Dans tous les cas, le méta-modèle Php5 est nécessaire.

Doctrine aussi est un framework php5, et lui aussi étendra le métamodèle php5 ou permettra une transformation vers.

Pourquoi Symfony ?
Symfony est un framework Php5 implémentant le motif de conception Modèle-Vue-Controleur et est pluggable avec Doctrine, un ORM en Php5 lui aussi, s’appuyant sur DBA pour l’accès aux bases de données. De fait, c’est le plus puissant et le plus aboutit des frameworks php5.
C’est bien un framework (cadre applicatif), pas un CMS ou autres Joomla !

Pourquoi Doctrine ?
Doctrine est un Object Relational Mapper écrit en Php5, c’est aussi le plus puissant et le plus aboutit des ORM php5. Il implémente le DQL, dérivé du HQL d’Hibernate du monde des barbus de Java.

Les artefacts sont produits en utilisants les outils en regard:

  1. métamodèle : EMF
  2. generateur : Epsilon Generation Language
  3. wizards : Epsilon Wizard Language
  4. checks : Epsilon Validation Language
  5. editor : EMF éditeur xml automatiquement généré
  6. modeler : GMF éditeur généré grâce à Eugenia

Donc au final j’abandonne Acceleo qui est un trés bon produit mais je préfère epsilon car bien plus complet dans tous les domaines de la méta-modélisation (s’incruste dans n’importe quel éditeur EMF, M2M, M2T, manque T2M).

Flow3 est un sérieux concurrent de Symfony, implémentant les concepts DDD d’Eric Evans. Quand ce dernier possèdera une documentation,c’est à dire quand Php 5,3 sera stable et que phpDoc sera mis à jour, sûrement que je créérai un modeleur pour ce dernier.

But for now, Let’s play.

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 :