Acceleo vous permet faire du "développement dirigé par le modèle" (de l'anglais MDA, Model Driven Architecture). Il s'agit de définir un modèle de données à partir duquel Acceleo génère l'application Web correspondante. Pour vous expliquer tout ça plus simplement, je vais reprendre l'exemple du tutoriel d'Acceleo : la création d'un logiciel de blog.

Pour faire simple, on va dire qu'un blog, c'est des articles écrits par des auteurs qui peuvent se loger grâce à leur login (de l'anglais "to log in"). Ce concept se modélise de cette façon en UML (en gros) :

(Il est pas beau mon Playmobil ?)

Ensuite, on va définir les différentes pages du blog et les liens entre les pages. La page d'accueil du site affiche la liste des articles, et un auteur peut créer un article après s'être logé :

Schéma UML des écrans

La case du milieu de chaque écran définit les champs du formulaire Web ("<<Texte>> login") et la case du bas donne ce qui sera les liens entre les pages, avec une action du logiciel entre les deux ("enregistrer( )" va enregistrer l'article puis l'afficher). Vous remarquerez le lien sans flèche entre l'écran "SeLoger" et l'écran "CréerArticle", qui signifie qu'il faut être logé pour pouvoir écrire un article.

Nous voici donc avec deux modèles : un pour les données à enregistrer dans le blog (les auteurs et les articles) et un second pour décrire l'interaction entre les pages. La suite se passe sur ce petit tutoriel vidéo d'Acceleo (cliquez sur "Next" pour commencer). Vous allez retrouver mes schémas en nettement plus complets, puis tout un tas de bidouilles d'informaticien pour générer l'application (c'est pas si compliqué en fait) et à la fin, on voit la démonstration de l'appli Web générée.

Pour vous rendre compte de l'intérêt d'Acceleo, sachez qu'il m'aurai fallu deux jours pour faire la même chose à la main (ou une nuit en mode "projet" ;-)). Alors bien sûr, ça ne suffit pas pour faire une application complètement adaptée aux besoins, mais on a une bonne base et il suffit d'un peu de retouche "cosmétique" pour vous pondre Blogger ou autre logiciel du style en deux temps, trois mouvements ;-)


Pour les plus geeks d'entre vous :

Acceleo est un plugin Eclipse composés de différents modules. Chaque module permet la génération d'un stéréotype d'application. Les modules disponibles pour l'instant permettent de générer la transformation :

  • UML vers C#-NHibernate,
  • UML vers Java,
  • UML vers j2ee-Struts-Hibernate.

D'autres modules sont disponible mais pas encore stables.

Le module utilisé pour la démonstration génère une application Web J2EE en s'appuyant sur les frameworks Struts et Hibernate. Ce module génère :

  • les JSP,
  • les classes "Forms", "Actions" et les fichiers de configuration Struts,
  • les classes métier,
  • les interfaces des DAO (Data Access Object) et leur implémentation Hibernate,
  • le mapping des classes métier et les scripts SQL,

et en bonus :

  • les tests JUnit et HTMLUnit,
  • les feuilles de style CSS,
  • de l'Ajax (non, pas la lessive)

Pour plus de détails, c'est sur la page du module.