Diapo PFE

36,474 views

Published on

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.

6 Comments
16 Likes
Statistics
Notes
No Downloads
Views
Total views
36,474
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
2,047
Comments
6
Likes
16
Embeds 0
No embeds

No notes for slide
  • 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 …
  • Diapo PFE

    1. 1. Projet de fin d’études pour l’obtention d’un diplôme national d’ingénieur<br />Atelier Agile de génération <br />de code d’une application riche Spring basé sur l’approche MDSD<br />Encadré par :<br />M. Adel ELJ<br />M. Hamda SAAD<br />Réalisé par :<br />Amen Allah BHAR<br />Soutenu Le 15/07/2010<br />
    2. 2. Plan<br />2<br />
    3. 3. Introduction<br />Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Présentation de la société d’accueil<br />Présentation de la société d’accueil<br />Problématique<br />Cadre du projet<br />Idées avant projet<br />Constats<br />Introduction<br /><ul><li>Fondation : début 2007
    4. 4. Spécialité :
    5. 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. 6. Etude, conception, développement et gestion moderne de projets informatiques locaux et offshore en se basant surtout sur les méthodes agiles.</li></ul>3<br />
    7. 7. Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Problématique<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Constats<br />Très exigent en qualité et prix<br />répondre plus rapidement aux besoins<br />produire un code de qualité meilleure<br />Client<br />Fournisseur<br />Change de besoins très rapidement<br />être moins cher que les autres<br />4<br />
    8. 8. Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Constats<br />Problématique<br />Tout projet commence <br />par des constats<br />suivis par des idées <br />« avant-projet »<br />5<br />
    9. 9. Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Constats<br />Problématique<br />Constat 1 : Code récurrent<br />Application à développer<br />Code métier <br />spécifique<br />X Homme/Mois<br />développeurs<br />Code recurrent<br />Y Homme/Mois<br />6<br />
    10. 10. Introduction<br />Liste/detail<br />création<br />filtre<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Constats<br />Problématique<br />Constat 2: « Styles » de Cas d’utilisation récurrents<br />Gestion Clients<br />GererClients<br />AjouterClient<br />« extends »<br />AjouterAdresse<br />« extends »<br />GererAdresseClient<br />GererAdresse<br />« extends »<br />Employé<br />« extends»<br />7<br />FiltrerAdresse<br />
    11. 11. Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Constats<br />Problématique<br />Constat 3: UML est un langage de modélisation <br />( ou Méta Modèle ) généraliste extensible par Stéréotypes<br /><ul><li> L’utilisation de langages de modélisation (ou méta-modèles) restreints au domaine d’application est plus productif.
    12. 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. </li></ul>8<br />
    13. 13. Introduction<br />Générateur de code<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Problématique<br />Constats<br />Constat 1 : Code récurrent<br />Application à développer<br />Code métier <br />spécifique<br />Code métier <br />spécifique<br />développeurs<br />X Homme/Mois<br />Code recurrent<br />idée ?<br />Code recurrent<br />développeurs<br />Y Homme/Mois<br />Code métier <br />spécifique<br />Code recurrent<br />9<br /> on gagne Y Homme/Mois<br />
    14. 14. Introduction<br />«create»<br />«ListDetail»<br />«create»<br />«ListDetail»<br />«create»<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Problématique<br />Idées avant projet<br />Constats<br />Constat 2: « Styles » de Cas d’utilisation récurrents<br />idée ?<br />Gestion Clients<br />GererClients<br />AjouterClient<br />« extends »<br />1°/ créer des patrons « patterns » de cas d’utilisation standards ou UCP (Use Case Pattern).<br />AjouterAdresse<br />« extends »<br />« extends »<br />Employé<br />GererAdresseClient<br />GererAdresse<br />2°/ générer le comportement selon l’architecture logicielle de référence choisie.<br />« extends»<br />10<br />FiltrerAdresse<br />«filter»<br />
    15. 15. Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Problématique<br />Idées avant projet<br />Constats<br />Constat 3: UML est un langage de modélisation ( ou Méta Modèle ) généraliste extensible par Stéréotypes<br />idée ?<br />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.<br />Définir les modèles spécifiques en utilisant ce langage au lieu de UML.<br />11<br />
    16. 16. Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Présentation de la société d’accueil<br />Cadre du projet<br />Idées avant projet<br />Problématique<br />Constats<br />Atelier agile de génération de code<br /> suivant l’approche MDSD <br />Méta-Modèle<br />Editeur graphique<br />Générateur de code<br />12<br />
    17. 17. Analyse et spécification des besoins<br />Méta-modèle<br />DSL<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Approche MDSD<br />Approche MDSD<br />Analyse et spécification des besoins<br />Avantages des UCPs<br />Niveau de granularité des UCPs<br />Architecture générale<br />Mécanisme de génération de code<br />MDSD<br />La méthode de développement dirigée par les modèles<br />DSM<br />Générateur de code<br />13<br />
    18. 18. Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Approche MDSD<br />Avantages des UCPs<br />Niveau de granularité des UCPs<br />Architecture générale<br />Mécanisme de génération de code<br /><ul><li> Consiste à développer des templatesqui permettent de créer totalement ou partiellement une application à partir d’un modèle.</li></ul>Schéma général de fonctionnement<br />14<br />Générateur<br />Code généré<br />Modèle<br />
    19. 19. Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Approche MDSD<br />Avantages des UCPs<br />Niveau de granularité des UCPs<br />Architecture générale<br />Mécanisme de génération de code<br />Atelier JDJR de JavaTech: Just Design Just Run<br />Outillage / Atelier<br />Générateur de code<br />Outil de <br />Modélisation du modèle<br />DSM<br />Outil de <br />Modélisation du <br />Méta-Model DSL<br />Outil de <br />Modélisation du modèle<br />DSM<br />Outil de <br />Modélisation du <br />Méta-Model DSL<br />DSM / instance du DSL<br />Code généré<br />DSL / <br />Méta-Model<br />15<br />
    20. 20. Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Approche MDSD<br />Avantages des UCPs<br />Niveau de granularité des UCPs<br />Architecture générale<br />Mécanisme de génération de code<br />Alistair Cockburn, parmi les initiateurs de l’idée des cas d’utilisation, décrits 5 niveaux de granularité <br />Stratégique<br />Stratégique<br />Vente de livres en ligne<br />Niveau 1<br />Niveau 1<br />Tactique<br />Tactique<br />Gérer les transactions<br />Niveau 2<br />Niveau 2<br />Passer une commande<br />Niveau 3<br />Objectif utilisateur<br />Niveau 3<br />Objectif utilisateur<br />Niveau 4<br />Sous-fonction<br />Niveau 4<br />Sous-fonction<br />Sélectionner un produit<br />16<br />requête<br />requête<br />Niveau 5<br />Niveau 5<br />Insérer une ligne de commande<br />
    21. 21. Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Approche MDSD<br />Avantages des UCPs<br />Niveau de granularité des UCPs<br />Architecture générale<br />Mécanisme de génération de code<br />Vente de livres en ligne<br />Stratégique<br />Niveau 1<br />Gérer les transactions<br />Tactique<br />Niveau 2<br />Passer une commande<br />Niveau 3<br />Objectif utilisateur<br />Use Case Pattern<br />Sélectionner un produit<br />Niveau 4<br />Sous-fonction<br />17<br />Insérer une ligne de commande<br />requête<br />Niveau 5<br />
    22. 22. Analyse et spécification des besoins<br />Avantages des UCPs<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Approche MDSD<br />Avantages des UCPs<br />Niveau de granularité des UCPs<br />Architecture générale<br />Mécanisme de génération de code<br />Modélisé dés le début des projets<br />Facile à mettre en place<br />Indépendant de la technologie<br /> Répétable<br />Base pour l’estimation des charges<br />18<br />
    23. 23. Conception<br />Create<br />Manage<br />ManageRole<br />UCPs<br />…………<br />Implémentation<br />Conclusion<br />Introduction<br />Anal. et spéc. des besoins<br />Conception<br />Liste des UCPs dégagés<br />Liste des UCPs dégagés<br />View<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />CreateRole<br />Conception<br />Search<br />MasterDetailDetail<br />Filter<br />MasterDetail<br />ListDetail<br />19<br />
    24. 24. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />Présentation du méta modèle<br />DSL / <br />Méta-Model<br />JDJR4JavaE<br />JavaE: Applications Java Enterprise<br />JDJR4JavaE<br />JavaE: Applications Java Enterprise<br /> Persistance <br />Processus<br /><<UCP>><br /><<Classe de persistance>><br />20<br />
    25. 25. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />Présentation du méta modèle<br />modèle de persistance<br /><<Business Object>><br /><<Entity>><br />JDJR4JavaE<br />JavaE: Applications Java Enterprise<br />Attribut<br />Attribut<br /><<Entity>><br /><<Entity>><br /><<Entity>><br />……….<br />1<br />Enumération<br /><<Business Object>><br />Value Object<br />Value Object<br />……….<br />*<br /><<Entity>><br />21<br /><<Entity>><br />
    26. 26. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />Présentation du méta modèle<br />modèle de persistance<br />GestionSociete<br />Exemple<br />Departement<br />Employe<br />pays<br />JDJR4JavaE<br />JavaE: Applications Java Enterprise<br /><ul><li> Tunis
    27. 27. numDepa
    28. 28. numCin
    29. 29. France
    30. 30. nom
    31. 31. nom</li></ul>.<br />.<br />.<br /><ul><li> locale
    32. 32. prenom</li></ul>1<br />*<br />22<br />
    33. 33. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />Présentation du méta modèle<br />modèle de processus<br />Sous-processus<br />JDJR4JavaE<br />JavaE: Applications Java Enterprise<br /><<UCP>><br /><<include>><br /><<UCP>><br /><<extends>><br /><<UCP>><br />23<br />
    34. 34. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />Présentation du méta modèle<br />GestionSociete<br />modèle de processus<br />GestionSociete<br />Exemple<br />GestionSociete<br />Departement<br />Employee<br />Employee<br />JDJR4JavaE<br />JavaE: Applications Java Enterprise<br /><ul><li>numDepa
    35. 35. numCin
    36. 36. numCin</li></ul><<ListDetail>><br /><<Search>><br /><<create>><br /><ul><li>nom
    37. 37. nom
    38. 38. nom</li></ul><<include>><br /><ul><li> locale
    39. 39. prenom
    40. 40. prenom</li></ul><<ListEmployee>><br /><<SearchEmployee>><br /><<CreateEmployee>><br /><<extend>><br />24<br />
    41. 41. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Editeur graphique<br />Méta-modèle<br />Architecture<br />Générateur de code<br />Graphic Modeling Framework<br />Modèle graphique<br />Modèle de génération graphique<br />Méta-modèle<br />Modèle de mappage<br />Editeur graphique<br />25<br />Modèle des outils<br />
    42. 42. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Méta-modèle<br />Editeur graphique<br />Architecture<br />Générateur de code<br />Générateur de code: basé sur Acceleo<br /><ul><li> Intégré à Eclipse, compatible EMF
    43. 43. Possède un éditeur de template de génération
    44. 44. Génération de code avec des chaines de génération configurables
    45. 45. La génération est incrémentale</li></ul>26<br />
    46. 46. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Méta-modèle<br />Editeur graphique<br />Architecture<br />Générateur de code<br />Template de génération<br />27<br />
    47. 47. Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />Liste des UCPs dégagés<br />Architecture<br />Méta-modèle<br />Editeur graphique<br />Générateur de code<br />Architecture générale<br /> Template<br />Template<br />Moteur de Template<br />. . . <br />Couche présentation<br />Couche de persistance<br />Couche métier <br />Méta-modèle<br />Modèle<br />28<br />Résultat<br />Génération<br />
    48. 48. Implémentation<br />Implémentation<br />Anal. et spéc. des besoins<br />Conclusion<br />Conception<br />Introduction<br />Editeur graphique<br />Editeur graphique<br />Exemples de l’application générée<br />Framework utilisés<br />Architecture de l’application<br />Implémentation<br />29<br />
    49. 49. Implémentation<br />Implémentation<br />Anal. et spéc. des besoins<br />Conclusion<br />Conception<br />Introduction<br />Architecture de l’application<br />Editeur graphique<br />Exemples de l’application générée<br />Framework utilisés<br />Architecture de l’application<br />Page jsp<br />Page jsp<br />Page jsp<br />Page jsp<br />Bean managé<br />Bean managé<br />Service<br />Service<br />DAO<br />DAO<br />DAO<br />DAO<br />30<br />Entité<br />Entité<br />Entité<br />Entité<br />
    50. 50. Implémentation<br />Implémentation<br />Anal. et spéc. des besoins<br />Conclusion<br />Conception<br />Introduction<br />Editeur graphique<br />Framework utilisés<br />Exemples de l’application générée<br />Architecture de l’application<br />Couche persistance<br />Couche Métier<br />Couche présentation<br />Validation<br />Authentification<br />31<br />
    51. 51. Implémentation<br />Implémentation<br />Anal. et spéc. des besoins<br />Conclusion<br />Conception<br />Introduction<br />Editeur graphique<br />Exemples de l’application générée<br />Architecture de l’application<br />Framework utilisés<br />pays<br />Adresse<br /><<Enum>><br />Pays<br />USA<br />Canada<br />UK<br />Australia<br />32<br />
    52. 52. Implémentation<br />Implémentation<br />Anal. et spéc. des besoins<br />Conclusion<br />Conception<br />Introduction<br />Editeur graphique<br />Exemples de l’application générée<br />Architecture de l’application<br />Framework utilisés<br />Categorie<br />« ListDetail »<br />GererCategories<br />Employé<br />« extends »<br />33<br />« Create »<br />AjouterCategorie<br />33<br />
    53. 53. Implémentation<br />Implémentation<br />Anal. et spéc. des besoins<br />Conclusion<br />Conception<br />Introduction<br />Editeur graphique<br />Exemples de l’application générée<br />Architecture de l’application<br />Framework utilisés<br />1<br />*<br />Categorie<br />Produit<br />« extends »<br />« Create »<br />AjouterProduit<br />« MasterDetail »<br />GererProduits<br />Employé<br />«Manage »<br />GererProduit<br />34<br />« extends »<br />34<br />
    54. 54. Conclusion<br />Conclusion<br />Introduction<br />Problématique<br />Réalisation<br />Solution<br />Conception<br />Travail réalisé : <br /> Développement d’un atelier de génération d’application web riche<br />Conclusion<br />Aspects bénéfiques :<br /><ul><li> Sur le plan pratique</li></ul> Découvrir des nouveaux Framework<br /><ul><li> Sur le plan personnel</li></ul> Importance de la communication<br /> Intégration dans la vie professionnel<br />35<br />
    55. 55. Conclusion<br />Anal. et spéc. des besoins<br />Conception<br />Introduction<br />Conclusion<br />Implémentation<br />Perspectives <br />SOA<br />Cloud<br />4<br />4<br />JDJR<br />4<br />Application Java Entreprise<br />Couche métier<br />Couche présentation<br />Persistance<br />ZK<br />36<br />JSF<br />Spring<br />WebFlow<br />Struts<br />EJB3<br />JPA<br />Hibernate<br />Spring<br />Icefaces<br />Richfaces<br />
    56. 56. Conclusion<br />Anal. et spéc. des besoins<br />Conception<br />Introduction<br />Conclusion<br />Implémentation<br /><ul><li> Diminution de charge de travaille.</li></ul>Merci pour votre attention<br /><ul><li> Ce générateur est destiné aux sociétés de développement.
    57. 57. Extensible.</li></ul>37<br />

    ×