De retour du Eclipse Acceleo Day 2009 : Retours d’expérience, nouveautés et scoops
Par Cédric Vidal • 16 juil, 2009 • Catégorie: Model Driven, news, populaire •La journée avait mal commencé, j’ai réussi à rater mon train, bloqué dans un embouteillage insolite crée dans un Paris presque désert à 7H00 du matin par un défilé de la garde républicaine. Sans doute une répétition du 14 Juillet … Ils sont beaux ces chevaux, mais quand on les regarde défiler, bloqué au feu rouge en regardant défiler l’aiguille de sa montre et en imaginant partir le train, c’est beaucoup moins drôle … sans parler du fait que le prochain train part une heure et demi plus tard …

Je suis donc arrivé bien en retard au Eclipse Acceleo Day, organisé dans les locaux de l’Ecole des Mines de Nantes pendant les Rencontres Internationales du Logiciel Libre.
Malgré tout, je n’ai raté que l’introduction d’Etienne Juliot, co-fondateur d’Obeo, la société derrière Acceleo et les deux premières présentations. J’ai quand même pu assister aux retours d’expérience d’Olivier Leal de Bull et Samuel Liard d’Orange Labs sur leur mise en œuvre des approches Model Driven sur leurs projets. Retour intéressant mais classique. Rien de nouveau sous le soleil. Par contre, présentation très punchy de Samuel, j’ai beaucoup aimé son style dynamique, pragmatique et plein d’humour. Selon lui, pour éviter les polémiques des puristes MDA sur le méta-modèle pas assez abstrait de son socle MDA, il l’a renommé en MDD. Maintenant, on l’embête plus parce que son méta-modèle est trop spécifique à Java
Pour ma part, je n’avais pas envie de faire un retour d’expérience, quatre dans la matinée, c’était déjà bien assez. J’ai préféré présenter un sujet de veille MDSD avec une présentation intitulée « MDSD Scaffolding and Acceleo » ou je présentais mes slides sur le Scaffolding MDSD et une mise en œuvre de Scaffolding « sur-place » dynamique implémentée avec le moteur de règle Drools et la nouvelle mouture du moteur de génération de code MTL Acceleo. Voici les slides (en anglais) de la présentation:
Je posterai sur ce blog une vidéo flash de la démonstration effectuée pendant la présentation ainsi que des explications dans un billet dédié à cet effet un peu plus tard.
La présentation a été très bien reçue, beaucoup de discussions ont suivi. Les présentations étaient filmées mais il a fallu que la carte de la caméra s’avère pleine en plein milieu de ma présentation donc je ne suis pas sûr de pouvoir poster une vidéo de ma présentation. Je posterai malgré tout une vidéo flash de la démo.
Après ma présentation, c’était François Gaudin qui présentait WISSS, une DSL web ciblant la génération d’applications PHP. Retour d’expérience très intéressant sur la conception d’une chaîne de génération de code Open Source pour PHP. C’est une chaîne prenant en entrée une DSL contenant des concepts d’application web de type écrans, transitions, widgets, contrôleurs, etc … et générant du code directement en modèle à texte avec Acceleo sans passer par un modèle intermédiaire. Ce qui m’a frappé, c’est le bilan qu’il fait sur cette expérience. Selon lui, la distance entre les concepts de sa DSL et la technologie cible est très importante et induit une trop grande complexité dans ses templates de génération de code, les rendant difficilement maintenables. Il ne les développe d’ailleurs plus activement. Il s’intéresse maintenant à une chaîne Django, une technologie aux concepts plus proches de sa DSL, la rendant plus propice à une approche simple M2T. Sa conclusion : préférer l’utilisation d’un PSM quand la technologie cible est trop éloignée du PIM.
Du coté des scoops, nous avons appris qu’une interopérabilité entre Acceleo, ATL et QVTO était prévue. Cela signifie qu’il sera possible d’utiliser de manière transparente des helpers ATL et des query QVTO depuis des templates MTL Acceleo ! La nouvelle version de MTL Acceleo en plus d’être un langage polymorphique fortement typé, supporte aussi une fonctionnalité que j’attends depuis longtemps, le dispatch polymorphique dynamique. Cela signifie que la sélection des templates est non seulement polymorphique mais que le polymorphisme ne se calcule pas sur le type des paramètres déclaré à la compilation mais sur le type concret des paramètres observé à l’exécution. Cela permettra de diminuer de manière drastique la complexité cyclomatique des templates en éliminant les blocs conditionnels de test de type d’instance. Cela permet également une meilleure ouverture des templates au sens du principe d’ouverture/fermeture. MTL Acceleo inclut également en standard un mécanisme déclaratif d’extension de cartouche.
Combiné avec le dispatch polymorphique dynamique, le mécanisme d’extension déclaratif de cartouche augure de templates plus concis, lisible, facilement extensibles et donc plus maintenables. Toutes ces propriétés sont primordiales dans une chaîne MDSD Entreprise. Elles manquaient cruellement dans la version précédente d’Acceleo.
Par ailleurs, ce qui est vraiment agréable dans ce genre d’évènements, c’est de rencontrer les membres de la communauté Model Driven en chair et en os. J’ai enfin pu rencontrer et discuter longuement avec Cédric Brun d’Obeo dont l’article sur les modèles live avec Drools et EMF m’a soufflé le maillon qui me manquait, à savoir l’utilisation des adapteurs EMF pour intégrer Drools et EMF dans le premier prototype de Scaffolding que j’ai réalisé. Il s’est montré très intéressé par mon projet de Scaffolding MDSD. Il m’a proposé d’essayer de l’intégrer à Obeo Designer et en effet, ça rendrait vraiment bien. On essaiera sans doute de faire un POC. Plus d’infos là-dessus et très certainement une démo très bientôt.
J’ai aussi pu discuter avec Jérôme Benois, très intéressé lui-aussi par le Scaffolding MDSD et il m’a avoué avoir déjà fait quelque chose de similaire il y a quelques temps, les grands esprits se rencontrent Jérôme
On a aussi beaucoup discuté de customization de modèle et de EMF Styling, ma DSL textuelle de customisation de modèle type CSS.
Finalement, j’ai aussi eu le privilège de rencontrer Jean Bezivin avec qui j’avais déjà eu quelques échanges par twitter ici et là. Il a même eu la courtoisie de me raccompagner !
Cette journée spéciale Acceleo devrait donc se renouveler en 2010. Vivement l’année prochaine !

Merci pour ton retour
C’est sûr que maintenant les retours d’utilisation du MDA n’apportent plus trop d’infos.. Surtout lorsque le public maitrise bien le sujet. Donc autant ajouter un peu de fun ! 
Ta présentation était très bien faite. Ca a été une des plus techniques de la journée. J’ai retrouvé des idées qui étaient utilisées dans feu OptimalJ (il générait dans le PIM les services CRUD des entités).
Salut Samuel,
Merci pour ces compliments
Sinon, en effet, c’est toujours délicat de parler d’un sujet que les habitués connaissent bien, c’est aussi pour ça que j’ai choisi un sujet de veille
Quoi qu’il en soit, ta présentation était vraiment excellente !
Pour ce qui est de la génération de services CRUD dans le PIM, je ne savais pas que OptimalJ le faisait mais ça ne m’étonne pas car c’était un outil extraordinaire. Cependant, j’avais déjà observé cette mise en oeuvre dans une autre chaîne faite maison basée sur RSA.
Quoi qu’il en soit, la différence significative dans l’approche proposée ici est bien que les éléments scaffoldés ne sont pas matérialisés dans le modèle saisi par l’utilisateur. Dans l’approche que tu évoques qui consiste à générer directement dans le modèle des services CRUD, ceux-ci sont matérialisés ne manière irréversible (en dehors d’un contrôle-Z sur l’instant) ce qui pour moi nuis à l’utilisabilité du modèle pour plusieurs raisons. D’une part, le modèle est surchargé et la surcharge occulte l’essentiel du modèle. D’autre part, la suppression des entités n’entraine pas la suppression des éléments générés.
Dans l’approche proposée ici, les éléments scaffoldés sont automatiquement supprimés lorsque les entités sont supprimées. Par ailleurs, dans cette approche, bien que les éléments ne soient pas matérialisés, il est possible d’objecter qu’ils alourdissent bel et bien le modèle, cependant, il est très aisé d’ajouter un filtre d’affichage permettant de masquer temporairement tout ou partie des éléments scaffoldés.
++
[...] déjà traité en détail les nouveautés de cette nouvelle version à l’occasion de l’Eclipse Acceleo Day à Nantes. Depuis cet article, l’équipe a ajouté quelques nouveautés appréciables. La plus remarquable [...]