Implémentation d’un atelier agile de génération de code d\'une application riche Spring basé sur l\'approche MDSD.
Mots clés: Eclipse, MDSD, DSL, EMF, GMF, Acceleo, Hibernate, Spring, JSF, JBoss Richfaces, Spring Security.
1. Projet de fin d’études pour l’obtention d’un diplôme national d’ingénieur Atelier Agile de génération de code d’une application riche Spring basé sur l’approche MDSD Encadré par : M. Adel ELJ M. Hamda SAAD Réalisé par : Amen Allah BHAR Soutenu Le 15/07/2010
5. la formation, l’assistance et l’accompagnement dans les nouvelles méthodes de développement, les architectures et les technologies orientées surtout vers les plateformes à base de Java (Java EE, Spring, SOA, Eclipse, JBoss, JSF, ….)
6. Etude, conception, développement et gestion moderne de projets informatiques locaux et offshore en se basant surtout sur les méthodes agiles.3
7. Introduction Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Problématique Présentation de la société d’accueil Cadre du projet Idées avant projet Constats Très exigent en qualité et prix répondre plus rapidement aux besoins produire un code de qualité meilleure Client Fournisseur Change de besoins très rapidement être moins cher que les autres 4
8. Introduction Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Idées avant projet Constats Problématique Tout projet commence par des constats suivis par des idées « avant-projet » 5
9. Introduction Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Idées avant projet Constats Problématique Constat 1 : Code récurrent Application à développer Code métier spécifique X Homme/Mois développeurs Code recurrent Y Homme/Mois 6
10. Introduction Liste/detail création filtre Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Idées avant projet Constats Problématique Constat 2: « Styles » de Cas d’utilisation récurrents Gestion Clients GererClients AjouterClient « extends » AjouterAdresse « extends » GererAdresseClient GererAdresse « extends » Employé « extends» 7 FiltrerAdresse
11.
12. La création de nouveaux langages de modélisation n’était pas à la portée. Maintenant, il existe un cadre productif qui la facilite. 8
13. Introduction Générateur de code Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Idées avant projet Problématique Constats Constat 1 : Code récurrent Application à développer Code métier spécifique Code métier spécifique développeurs X Homme/Mois Code recurrent idée ? Code recurrent développeurs Y Homme/Mois Code métier spécifique Code recurrent 9 on gagne Y Homme/Mois
14. Introduction «create» «ListDetail» «create» «ListDetail» «create» Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Problématique Idées avant projet Constats Constat 2: « Styles » de Cas d’utilisation récurrents idée ? Gestion Clients GererClients AjouterClient « extends » 1°/ créer des patrons « patterns » de cas d’utilisation standards ou UCP (Use Case Pattern). AjouterAdresse « extends » « extends » Employé GererAdresseClient GererAdresse 2°/ générer le comportement selon l’architecture logicielle de référence choisie. « extends» 10 FiltrerAdresse «filter»
15. Introduction Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Problématique Idées avant projet Constats Constat 3: UML est un langage de modélisation ( ou Méta Modèle ) généraliste extensible par Stéréotypes idée ? Créer un langage de modélisation spécifique qui intègre un nouveau vocabulaire relatif à la définition des patterns et spécialement les « Use Case Pattern » ou Patrons de cas d’utilisation. Définir les modèles spécifiques en utilisant ce langage au lieu de UML. 11
16. Introduction Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Présentation de la société d’accueil Cadre du projet Idées avant projet Problématique Constats Atelier agile de génération de code suivant l’approche MDSD Méta-Modèle Editeur graphique Générateur de code 12
17. Analyse et spécification des besoins Méta-modèle DSL Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Approche MDSD Approche MDSD Analyse et spécification des besoins Avantages des UCPs Niveau de granularité des UCPs Architecture générale Mécanisme de génération de code MDSD La méthode de développement dirigée par les modèles DSM Générateur de code 13
18.
19. Analyse et spécification des besoins Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Approche MDSD Avantages des UCPs Niveau de granularité des UCPs Architecture générale Mécanisme de génération de code Atelier JDJR de JavaTech: Just Design Just Run Outillage / Atelier Générateur de code Outil de Modélisation du modèle DSM Outil de Modélisation du Méta-Model DSL Outil de Modélisation du modèle DSM Outil de Modélisation du Méta-Model DSL DSM / instance du DSL Code généré DSL / Méta-Model 15
20. Analyse et spécification des besoins Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Approche MDSD Avantages des UCPs Niveau de granularité des UCPs Architecture générale Mécanisme de génération de code Alistair Cockburn, parmi les initiateurs de l’idée des cas d’utilisation, décrits 5 niveaux de granularité Stratégique Stratégique Vente de livres en ligne Niveau 1 Niveau 1 Tactique Tactique Gérer les transactions Niveau 2 Niveau 2 Passer une commande Niveau 3 Objectif utilisateur Niveau 3 Objectif utilisateur Niveau 4 Sous-fonction Niveau 4 Sous-fonction Sélectionner un produit 16 requête requête Niveau 5 Niveau 5 Insérer une ligne de commande
21. Analyse et spécification des besoins Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Approche MDSD Avantages des UCPs Niveau de granularité des UCPs Architecture générale Mécanisme de génération de code Vente de livres en ligne Stratégique Niveau 1 Gérer les transactions Tactique Niveau 2 Passer une commande Niveau 3 Objectif utilisateur Use Case Pattern Sélectionner un produit Niveau 4 Sous-fonction 17 Insérer une ligne de commande requête Niveau 5
22. Analyse et spécification des besoins Avantages des UCPs Anal. et spéc. des besoins Implémentation Conclusion Conception Introduction Approche MDSD Avantages des UCPs Niveau de granularité des UCPs Architecture générale Mécanisme de génération de code Modélisé dés le début des projets Facile à mettre en place Indépendant de la technologie Répétable Base pour l’estimation des charges 18
23. Conception Create Manage ManageRole UCPs ………… Implémentation Conclusion Introduction Anal. et spéc. des besoins Conception Liste des UCPs dégagés Liste des UCPs dégagés View Editeur graphique Méta-modèle Architecture Générateur de code CreateRole Conception Search MasterDetailDetail Filter MasterDetail ListDetail 19
24. Conception Anal. et spéc. des besoins Implémentation Conclusion Introduction Conception Liste des UCPs dégagés Editeur graphique Méta-modèle Architecture Générateur de code Présentation du méta modèle DSL / Méta-Model JDJR4JavaE JavaE: Applications Java Enterprise JDJR4JavaE JavaE: Applications Java Enterprise Persistance Processus <<UCP>> <<Classe de persistance>> 20
25. Conception Anal. et spéc. des besoins Implémentation Conclusion Introduction Conception Liste des UCPs dégagés Editeur graphique Méta-modèle Architecture Générateur de code Présentation du méta modèle modèle de persistance <<Business Object>> <<Entity>> JDJR4JavaE JavaE: Applications Java Enterprise Attribut Attribut <<Entity>> <<Entity>> <<Entity>> ………. 1 Enumération <<Business Object>> Value Object Value Object ………. * <<Entity>> 21 <<Entity>>
46. Conception Anal. et spéc. des besoins Implémentation Conclusion Introduction Conception Liste des UCPs dégagés Méta-modèle Editeur graphique Architecture Générateur de code Template de génération 27
47. Conception Anal. et spéc. des besoins Implémentation Conclusion Introduction Conception Liste des UCPs dégagés Architecture Méta-modèle Editeur graphique Générateur de code Architecture générale Template Template Moteur de Template . . . Couche présentation Couche de persistance Couche métier Méta-modèle Modèle 28 Résultat Génération
48. Implémentation Implémentation Anal. et spéc. des besoins Conclusion Conception Introduction Editeur graphique Editeur graphique Exemples de l’application générée Framework utilisés Architecture de l’application Implémentation 29
49. Implémentation Implémentation Anal. et spéc. des besoins Conclusion Conception Introduction Architecture de l’application Editeur graphique Exemples de l’application générée Framework utilisés Architecture de l’application Page jsp Page jsp Page jsp Page jsp Bean managé Bean managé Service Service DAO DAO DAO DAO 30 Entité Entité Entité Entité
50. Implémentation Implémentation Anal. et spéc. des besoins Conclusion Conception Introduction Editeur graphique Framework utilisés Exemples de l’application générée Architecture de l’application Couche persistance Couche Métier Couche présentation Validation Authentification 31
51. Implémentation Implémentation Anal. et spéc. des besoins Conclusion Conception Introduction Editeur graphique Exemples de l’application générée Architecture de l’application Framework utilisés pays Adresse <<Enum>> Pays USA Canada UK Australia 32
52. Implémentation Implémentation Anal. et spéc. des besoins Conclusion Conception Introduction Editeur graphique Exemples de l’application générée Architecture de l’application Framework utilisés Categorie « ListDetail » GererCategories Employé « extends » 33 « Create » AjouterCategorie 33
53. Implémentation Implémentation Anal. et spéc. des besoins Conclusion Conception Introduction Editeur graphique Exemples de l’application générée Architecture de l’application Framework utilisés 1 * Categorie Produit « extends » « Create » AjouterProduit « MasterDetail » GererProduits Employé «Manage » GererProduit 34 « extends » 34
54.
55. Conclusion Anal. et spéc. des besoins Conception Introduction Conclusion Implémentation Perspectives SOA Cloud 4 4 JDJR 4 Application Java Entreprise Couche métier Couche présentation Persistance ZK 36 JSF Spring WebFlow Struts EJB3 JPA Hibernate Spring Icefaces Richfaces
Un Template de génération est un patron qui se doit de délimiter de façon claire le texte statique généré et les éléments variables. Avec Acceleo, cette limite est claire et facilite la lecture des scripts par une tierce personne. C’est en procédant à une transformation automatique Model To Text que Acceleo nous permet de générer du code en remplaçant les parties variables par leur valeurs à partir d’une instance de modèle.
Pour conclure Le travail réaliser est le développement d’un atelier pour la génération d’application web riche.Ce projet nous a donné beaucoup d’aspects bénéfiques :- Sur le plan pratique, il nous a permit d’enrichir nos connaissances en termes de programmation Java/J2EE, de concept Web et de découvrir de nouveaux Framework tel que Spring et JSF/RichFaces- Sur le plan personnel, l’apport de ce travail a été d’une importance considérable de la communication pour le bon déroulement d’un projet.- Et il nous a donnée une idée sur la vie professionnel
Cependant, notre atelier reste ouvert à plusieurs extensions qui peuvent être ajoutés. Notre atelier englobe pour le moment les applications Java d’entreprise, on pourra élargir notre atelier en ajoutant le support de nouveaux Framework comme …Ainsi, on pourra l’élargir pour englober de nouveaux domaines comme …