Successfully reported this slideshow.
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...
Plan<br />2<br />
Introduction<br />Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Pr...
Spécialité :
la formation, l’assistance et l’accompagnement dans les nouvelles méthodes de développement, les architectures et les tech...
Etude, conception, développement et gestion moderne de projets informatiques locaux et offshore en se basant surtout sur l...
Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Pr...
Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Pr...
Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Pr...
Introduction<br />Liste/detail<br />création<br />filtre<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusi...
Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Pr...
 La création de nouveaux langages de modélisation n’était pas à la portée. Maintenant, il existe un cadre productif qui la...
Introduction<br />Générateur de code<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<b...
Introduction<br />«create»<br />«ListDetail»<br />«create»<br />«ListDetail»<br />«create»<br />Anal. et spéc. des besoins...
Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Pr...
Introduction<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<br />Introduction<br />Pr...
Analyse et spécification des besoins<br />Méta-modèle<br />DSL<br />Anal. et spéc. des besoins<br />Implémentation<br />Co...
Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<b...
Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<b...
Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<b...
Analyse et spécification des besoins<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Conception<b...
Analyse et spécification des besoins<br />Avantages des UCPs<br />Anal. et spéc. des besoins<br />Implémentation<br />Conc...
Conception<br />Create<br />Manage<br />ManageRole<br />UCPs<br />…………<br />Implémentation<br />Conclusion<br />Introducti...
Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />List...
Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />List...
Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />List...
numDepa
numCin
  France
  nom
  nom</li></ul>.<br />.<br />.<br /><ul><li>  locale
prenom</li></ul>1<br />*<br />22<br />
Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />List...
Conception<br />Anal. et spéc. des besoins<br />Implémentation<br />Conclusion<br />Introduction<br />Conception<br />List...
numCin
numCin</li></ul><<ListDetail>><br /><<Search>><br /><<create>><br /><ul><li>nom
nom
Prochain SlideShare
Chargement dans…5
×

Diapo PFE

39 314 vues

Publié le

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.

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 />

×