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 :
- Epsilon Generation Language
Permet de générer du texte à partir d’instances de méta-modèles - Epsilon Wizard Language
Permet de définir des wizards utilisables depuis les éditeurs EMF générés - 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 - EMF
Permet de définir des méta-modèles ecore - Epsilon Eugenia
Permet de réaliser des éditeurs graphiques semi-automatiquement à partir d’un méta-modèle ecore - 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:
- php5
Définition du métamodèle de Php5 dans sa perspective objet (Class, Interface, Namespace, etc) > 5.2.3 - doctrine
Définition du métamodèle de Doctrine (Record, Connection, etc) > 1.0.6 - symfony
Définition du métamodèle de Symfony (Project, Application, Module, etc) > 1.0
Chacun de ces projets nécessitent plusieurs artefacts:
- un méta-modèle
- un générateur
- des wizards pour faciliter l’instantiation de modèles
- des contraintes pour valider les instances de métamodèles
- un éditeur hierarchique (parent/enfants)
- 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 :
- php5.model
- php5.generator
- php5.model.wizards
- php5.model.checks
- php5.editor
- php5.modeler
- doctrine.model
- doctrine.generator
- doctrine.model.wizards
- doctrine.model.checks
- doctrine.editor
- doctrine.modeler
- doctrine.doctrine2php5
- symfony.model
- symfony.generator
- symfony.model.wizards
- symfony.model.checks
- symfony.editor
- symfony.modeler
- 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:
- métamodèle : EMF
- generateur : Epsilon Generation Language
- wizards : Epsilon Wizard Language
- checks : Epsilon Validation Language
- editor : EMF éditeur xml automatiquement généré
- 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.
Vous devez être connecté pour poster un commentaire.