Présentation sur la génération de code. J’y suis allé pour comparer le sujet présenté à SpringFuse, de Jaxio, la société de Nicolas Romanetti et de Florent Ramière, que vous connaissez si vous venez souvent au ParisJUG.

La présentation est intitulée « Practitioners approach to generate object-relational persistence and services« . Elle est présentée par Patrick Steger et Marc Baechinger de Zühlke Engineering AG.

Tout d’abord, pourquoi générer du code, puis ensuite une présentation de leur solution, mise en oeuvre dans un projet.

Pourquoi générer du code ?
img_42071
La génération de code permet de gagner du temps en générant rapidement le squelette de l’application, en s’attachant à générer avec une qualité constante la partie purement technique de l’application.
Patrick explique aussi que la génération permet de réduire le nombre de bugs. En générant le coeur de l’application, il dégage du temps pour ensuite se concentrer sur la partie métier de l’application. C’est un facteur de motivation pour l’équipe.

La solution présentée est basée tout d’abord sur l’utilisation d’un modeleur UML. Le schéma est exporté au format XMI.
generation01

Des feuilles de style XSLT permettent de générer du code Java à partir du fichier XMI.
velocity

La solution est donc réalisable avec un peu d’effort.
Parmi les améliorations proposées, les 2 présentateurs parlent de générer plus de code, hop attendez je vous retrouve le slide… voilà
img_4226
Et c’est là que je me dis, mince quand même, si Jaxio était venu présenter SpringFuse… Parce que les petits gars d’en face, les DTOs, les Controllers, la vue, SpringFuse génère tout cela, avec une qualité tip top…

Je suis allé voir les 2 présentateurs en fin de présentation. Les justifications et les idées sur la génération de code étaient intéressantes. Je pense qu’une partie de nous refuse de voir la génération comme un gain de temps. Certains pensent que ce n’est adapté qu’au scaffolding(échafaudage), alors que l’idée est de générer le coeur de l’application, de montrer les bonnes pratiques aux développeurs juniors, de s’assurer de la qualité, et de ne pas se planter lorsque l’on manque de temps.