Gilles Di Guglielmo & Julien Baudry (LesFurets.com) Rock solid UI modeling using annotation processing Session abstract ------------- Nous avons travaillé longuement sur le reverse engineering des formulaires de notre comparateur d’assurance. Le résultat s'est traduit par un modèle, décrivant les dépendances entre les champs de cette UI: visibilité, mise à jour du domaine de valeur... Nous avons décidé de transformer ce modèle en un méta-modèle d'IHM, écrit en Java. Ce modèle se base uniquement sur des énumérations, des annotations et des relations entre littéraux pour décrire les dépendances directes entre champs. Afin de comprendre le graphe de dépendances, nous exportons ce modèle en XMI, afin de pouvoir le manipuler dans un modeleur UML. Nous avons également implémenté une validation statique du modèle de dépendances lors la compilation Java. Nous générons statiquement lors de la compilation l’ensemble des dépendances profondes pour chaque champ, pour améliorer les performances runtime, et éviter les possibles dépendances cycliques. A partir de ce méta-modèle, nous avons implémenté un pattern MVC : chaque widget est instancié dynamiquement au runtime, et le framework MVC lie widget et modèle de données, via des patterns d’injections. Les injections sont résolues statiquement lors de la compilation. Nous avons ajouté la notion de layout au méta-modèle d'IHM : les champs sont agrégés en écrans, blocs et groupes. Cette structure permet de valider la topologie du graphe pendant la compilation : ainsi le layout est compatible avec les dépendances de champs. Nous expérimentons actuellement des AB tests en déclarant plusieurs permutations du modèle de champs, pour améliorer l’expérience utilisateur de notre site. Notre projet est disponible sur GitHub. Nous présenterons les patterns, le code et une démo durant la session. Cette session a été présentée précédemment à Code Generation Conference 2013. http://codegeneration.net/cg2013/sessions/index.php?session=18 Session speakers ------------- Gilles Di Guglielmo Gilles travaille depuis plus de 10 ans pour différents éditeurs de logiciels (ILOG, PrimaSolution, Courtanet) sur des sujets très variés: librairie graphique 2D, moteur de règles, plate-forme de services pour J2EE, code génération de modèle métier. Actuellement, il est architecte pour le site LesFurets.com (comparateur d'assurances), et aime aussi prendre l'air de temps en temps à San Francisco ou à Anvers. Il a présenté différentes sessions à JavaOne, Devoxx, CodeGeneration et plusieurs Java User Group en France. Julien Baudry Julien est un ancien du master TA, il est actuellement tech lead pour le site LesFurets.com (comparateur d'assurances). Il a également travaillé chez l’éditeur de logiciel d’assurance Prima Solutions. Il possède plus de 5 ans d’expérience en développement Java/J2EE, frameworks web, Model Driven Architecture, et code génération de modèle métier.