ArchGenXML et le futur de la génération de code sous Zope/Plone


Cela faisait un bon moment que je n’avais pas écrit un billet ici… et pour cause: on temps libre est principalement occupé par le développement et les tests de la version 2.0 de ArchGenXML. Contrairement à la version 1.5 qui ciblait Plone 2.1avec une compatibilité Plone 2.5 cette version est construite autour du support de Plone 3.0 avec une compatibilité vers Plone 2.5.

Les buts atteints de cette version sont le passage en egg de ce module, le support des profils Generic Setup , la génération des interfaces Zope3, la généaration des tests unitaires et des tests fonctionnels en python et au format doctest. Des gros changement en perspective, et une incompatibilité avec la génération précédente. Nous restons bloqués en phase d’évaluation béta par manque testeurs. Nous cherhcons en particulier des testeurs pour la partie génération de workflows.

L’autre nouveauté, plus contraignante celle-ci, est l’utilisation de nouveaux connecteurs dans les schémas UML pour symboliser les ‘adapter’. Les versions précédentes d’ArchGenXML se satisfaisaient d’éditeurs utilisant UML 1.4 et il faut à présent des éditeurs utilisant UML 2.0 au minimum pour cette nouvelle fonctionnalité. Exit donc les éditeurs tel que ArgoUML qui était le seul éditeur UML libre supporté. J’ai passé beaucoup de temps à tester d’autres éditeurs libre comme gaphor, umbrello et papyrus (une extension d’eclipse). Pour l’instant aucun ne permet d’être utilisé avec ArchGenXML. Du coté des éditeurs propriétaires Poseidon UML est toujours supporté avec son nouveau système de rente pour la version communautaire. Par contre le greffon Apollo pour eclipse du même éditeur n’est pas du tout utilisable. Si vous connaissez un bon éditeur UML 2.0 faites-le moi savoir.

Le test du plugin Apollo m’a montré une vue intéressante de la génération de code : la vue du développeur. Avec un projet Java et ce greffon dans eclipse il est possible d’attacher un schéma UML à chaque package Java puis de faire évoluer le diagramme de classe en même temps que le code et réciproquement. Ce greffon prend en charge l’ingénieurie inverse des fichiers Java comme la génération de code puis la synchronisation entre les deux. C’est particulièrement bluffant. Il existe déjà des outils pour faire ces opérations en Python, mais ceux-ci ne peuvent pas être réunis en un seul pour faciliter la vie des développeurs Python. Pour atteindre ce niveau de fonctionnalité il faut un IDE (Pype, WingIDE, Eric, …) et éditeur UML (gaphor, umbrello) et un composant d’ingénieurie inverse (python… epydoc et happydoc montrent comment faire).

Du coté du futur de la génération de code, ArchGenXML génère déjà du code Zope 3 (pour son utilisaton dans Plone) et d’autres projets de CMS en python commencent à s’intéresser à cette possibilité (voir la branche Django). Cet été il y a eu un projet « Google Summer of Code » autour de Genesis qui se présente comme le succésseur de ArchGenXML, mais faute de communication ce projet semble être retombé dans les limbes des vaporwares.

7 Responses to ArchGenXML et le futur de la génération de code sous Zope/Plone

  1. Hébé…
    Va falloir trouver un nouveau modeleur UML alors !

    Perso, je me sers pas d’AGX pour les workflow…. Désolé.

  2. encolpe dit :

    Pour l’instant nous allons continuer d’utiliser ArgoUML et Poseidon pour le développement des fonctionnalités d’ArchGenXML. En un mois j’ai testé umbrello, gaphor, Apollo pour eclipse et Papyrus. Papyrus est vraiment très intéressant et est développé au CEA. Mais cela reste une extension d’eclipse donc il faut faire du Java pour générer du Python… c’est un peu dommage.

  3. youyou dit :

    Super analyse des éditeurs uml. C’est certain que les alternative open source n’ont pas la qualité et surtout les fonctionnalités des éditeurs professionnels. Vraiment bien que ArchGenXml suit le cours des chose. Pour avoir utilisé Poseidon, je le trouve très bien, bien mieux qu’argo. A tu déja utilisé bouml : http://bouml.free.fr/features.html

  4. encolpe dit :

    J’ai déjà essayé bouml mais pour l’instant je n’arrive pas à l’utiliser. C’est à peine si j’arrive à démarrer un nouveau projet.

  5. Ping : Quelques nouvelles de python: Django, Python 3000, Ironpython, Zope/Plone « Le blog de Patrick Vergain

  6. Bruno Pagès dit :

    Bonjour,

    j’avoue ne pas comprendre que vous n’arriviez pas à utiliser Bouml, vous avez lut les tutoriels ( http://bouml.free.fr/documentation_fr.html ) dont il existe une version en Français ?

    sinon, pour info, Bouml gère maintenant Python😉

    Bonnes modélisations

    Bruno

  7. encolpe dit :

    J’utilise la version fournie par ma distribution (Debian Sid) et quoi que j’essaie de faire dans l’interface j’ai une erreur: ‘BOUML_ID is not defined’.
    Franchement, je n’ai pas eu envie d’aller plus loin.

%d blogueurs aiment cette page :