Projet de fin d’études pour l’obtention d’un diplôme national d’ingénieurAtelier Agile de génération de code d’une application riche  Spring basé sur l’approche MDSDEncadré par :M. Adel ELJM. Hamda SAADRéalisé par :Amen Allah BHARSoutenu Le 15/07/2010
Plan2
IntroductionIntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionPrésentation de la société d’accueilPrésentation de la société d’accueilProblématiqueCadre du projetIdées avant projetConstatsIntroductionFondation : début 2007
Spécialité :
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, ….)
Etude, conception, développement et gestion moderne de projets informatiques locaux et offshore en se basant surtout sur les méthodes agiles.3
IntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionProblématiquePrésentation de la société d’accueilCadre du projetIdées avant projetConstatsTrès exigent en qualité et prixrépondre plus rapidement aux besoinsproduire un code de qualité meilleureClientFournisseurChange de besoins très rapidementêtre moins cher que les autres4
IntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueTout projet commence par des constatssuivis par des idées « avant-projet »5
IntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueConstat 1 : Code récurrentApplication à développerCode métier spécifiqueX Homme/MoisdéveloppeursCode recurrentY Homme/Mois6
IntroductionListe/detailcréationfiltreAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueConstat 2: « Styles » de Cas d’utilisation récurrentsGestion ClientsGererClientsAjouterClient« extends »AjouterAdresse« extends »GererAdresseClientGererAdresse« extends »Employé« extends»7FiltrerAdresse
IntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueConstat 3: UML est un langage de modélisation ( ou Méta Modèle ) généraliste extensible par Stéréotypes L’utilisation de langages de modélisation (ou méta-modèles) restreints au domaine d’application est plus productif.
 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
IntroductionGénérateur de codeAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetProblématiqueConstatsConstat 1 : Code récurrentApplication à développerCode métier spécifiqueCode métier spécifiquedéveloppeursX Homme/MoisCode recurrentidée ?Code recurrentdéveloppeursY Homme/MoisCode métier spécifiqueCode recurrent9	on gagne Y Homme/Mois
Introduction«create»«ListDetail»«create»«ListDetail»«create»Anal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetProblématiqueIdées avant projetConstatsConstat 2: « Styles » de Cas d’utilisation récurrentsidée ?Gestion ClientsGererClientsAjouterClient« extends »1°/ créer des patrons « patterns » de cas d’utilisation standards ou UCP (Use Case Pattern).AjouterAdresse« extends »« extends »EmployéGererAdresseClientGererAdresse2°/ générer le comportement selon l’architecture logicielle de référence choisie.« extends»10FiltrerAdresse«filter»
IntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetProblématiqueIdées avant projetConstatsConstat 3: UML est un langage de modélisation ( ou Méta Modèle ) généraliste extensible par Stéréotypesidé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
IntroductionAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetProblématiqueConstatsAtelier agile de génération de code suivant l’approche MDSD    Méta-ModèleEditeur graphiqueGénérateur de code12
Analyse et spécification des besoinsMéta-modèleDSLAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDApproche MDSDAnalyse et spécification des besoinsAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeMDSDLa méthode de développement dirigée par les modèlesDSMGénérateur de code13
Analyse et spécification des besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de code  Consiste à développer des templatesqui permettent de créer totalement ou partiellement une application à partir d’un modèle.Schéma  général de fonctionnement14GénérateurCode généréModèle
Analyse et spécification des besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeAtelier JDJR de JavaTech: Just Design Just RunOutillage / AtelierGénérateur de codeOutil de Modélisation du modèleDSMOutil de Modélisation du Méta-Model DSLOutil de Modélisation du modèleDSMOutil de Modélisation du Méta-Model DSLDSM / instance du DSLCode généréDSL / Méta-Model15
Analyse et spécification des besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeAlistair Cockburn, parmi les initiateurs de l’idée des cas d’utilisation, décrits 5 niveaux de granularité StratégiqueStratégiqueVente de livres en ligneNiveau 1Niveau 1TactiqueTactiqueGérer les transactionsNiveau 2Niveau 2Passer une commandeNiveau 3Objectif utilisateurNiveau 3Objectif utilisateurNiveau 4Sous-fonctionNiveau 4Sous-fonctionSélectionner un produit16requêterequêteNiveau 5Niveau 5Insérer une ligne de commande
Analyse et spécification des besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeVente de livres en ligneStratégiqueNiveau 1Gérer les transactionsTactiqueNiveau 2Passer une commandeNiveau 3Objectif utilisateurUse Case PatternSélectionner un produitNiveau 4Sous-fonction17Insérer une ligne de commanderequêteNiveau 5
Analyse et spécification des besoinsAvantages des UCPsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeModélisé dés le début des projetsFacile à mettre en placeIndépendant de la technologie RépétableBase pour l’estimation des charges18
ConceptionCreateManageManageRoleUCPs…………ImplémentationConclusionIntroductionAnal. et spéc. des besoinsConceptionListe des UCPs dégagésListe des UCPs dégagésViewEditeur graphiqueMéta-modèleArchitectureGénérateur de codeCreateRoleConceptionSearchMasterDetailDetailFilterMasterDetailListDetail19
ConceptionAnal. et spéc. des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèleDSL / Méta-ModelJDJR4JavaEJavaE: Applications Java EnterpriseJDJR4JavaEJavaE: Applications Java Enterprise Persistance Processus<<UCP>><<Classe de persistance>>20
ConceptionAnal. et spéc. des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèlemodèle de persistance<<Business Object>><<Entity>>JDJR4JavaEJavaE: Applications Java EnterpriseAttributAttribut<<Entity>><<Entity>><<Entity>>……….1Enumération<<Business Object>>Value ObjectValue Object……….*<<Entity>>21<<Entity>>
ConceptionAnal. et spéc. des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèlemodèle de persistanceGestionSocieteExempleDepartementEmployepaysJDJR4JavaEJavaE: Applications Java Enterprise  Tunis
numDepa
numCin
  France
  nom
  nom...  locale
prenom1*22
ConceptionAnal. et spéc. des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèlemodèle de processusSous-processusJDJR4JavaEJavaE: Applications Java Enterprise<<UCP>><<include>><<UCP>><<extends>><<UCP>>23
ConceptionAnal. et spéc. des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèleGestionSocietemodèle de processusGestionSocieteExempleGestionSocieteDepartementEmployeeEmployeeJDJR4JavaEJavaE: Applications Java EnterprisenumDepa
numCin
numCin<<ListDetail>><<Search>><<create>>nom
nom

Diapo PFE

  • 1.
    Projet de find’études pour l’obtention d’un diplôme national d’ingénieurAtelier Agile de génération de code d’une application riche Spring basé sur l’approche MDSDEncadré par :M. Adel ELJM. Hamda SAADRéalisé par :Amen Allah BHARSoutenu Le 15/07/2010
  • 2.
  • 3.
    IntroductionIntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionPrésentation de la société d’accueilPrésentation de la société d’accueilProblématiqueCadre du projetIdées avant projetConstatsIntroductionFondation : début 2007
  • 4.
  • 5.
    la formation, l’assistanceet 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éveloppementet gestion moderne de projets informatiques locaux et offshore en se basant surtout sur les méthodes agiles.3
  • 7.
    IntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionProblématiquePrésentation de la société d’accueilCadre du projetIdées avant projetConstatsTrès exigent en qualité et prixrépondre plus rapidement aux besoinsproduire un code de qualité meilleureClientFournisseurChange de besoins très rapidementêtre moins cher que les autres4
  • 8.
    IntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueTout projet commence par des constatssuivis par des idées « avant-projet »5
  • 9.
    IntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueConstat 1 : Code récurrentApplication à développerCode métier spécifiqueX Homme/MoisdéveloppeursCode recurrentY Homme/Mois6
  • 10.
    IntroductionListe/detailcréationfiltreAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueConstat 2: « Styles » de Cas d’utilisation récurrentsGestion ClientsGererClientsAjouterClient« extends »AjouterAdresse« extends »GererAdresseClientGererAdresse« extends »Employé« extends»7FiltrerAdresse
  • 11.
    IntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetConstatsProblématiqueConstat 3: UML est un langage de modélisation ( ou Méta Modèle ) généraliste extensible par Stéréotypes L’utilisation de langages de modélisation (ou méta-modèles) restreints au domaine d’application est plus productif.
  • 12.
    La créationde nouveaux langages de modélisation n’était pas à la portée. Maintenant, il existe un cadre productif qui la facilite. 8
  • 13.
    IntroductionGénérateur de codeAnal.et spéc. des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetProblématiqueConstatsConstat 1 : Code récurrentApplication à développerCode métier spécifiqueCode métier spécifiquedéveloppeursX Homme/MoisCode recurrentidée ?Code recurrentdéveloppeursY Homme/MoisCode métier spécifiqueCode recurrent9 on gagne Y Homme/Mois
  • 14.
    Introduction«create»«ListDetail»«create»«ListDetail»«create»Anal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetProblématiqueIdées avant projetConstatsConstat 2: « Styles » de Cas d’utilisation récurrentsidée ?Gestion ClientsGererClientsAjouterClient« extends »1°/ créer des patrons « patterns » de cas d’utilisation standards ou UCP (Use Case Pattern).AjouterAdresse« extends »« extends »EmployéGererAdresseClientGererAdresse2°/ générer le comportement selon l’architecture logicielle de référence choisie.« extends»10FiltrerAdresse«filter»
  • 15.
    IntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetProblématiqueIdées avant projetConstatsConstat 3: UML est un langage de modélisation ( ou Méta Modèle ) généraliste extensible par Stéréotypesidé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.
    IntroductionAnal. et spéc.des besoinsImplémentationConclusionConceptionIntroductionPrésentation de la société d’accueilCadre du projetIdées avant projetProblématiqueConstatsAtelier agile de génération de code suivant l’approche MDSD Méta-ModèleEditeur graphiqueGénérateur de code12
  • 17.
    Analyse et spécificationdes besoinsMéta-modèleDSLAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDApproche MDSDAnalyse et spécification des besoinsAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeMDSDLa méthode de développement dirigée par les modèlesDSMGénérateur de code13
  • 18.
    Analyse et spécificationdes besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de code Consiste à développer des templatesqui permettent de créer totalement ou partiellement une application à partir d’un modèle.Schéma général de fonctionnement14GénérateurCode généréModèle
  • 19.
    Analyse et spécificationdes besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeAtelier JDJR de JavaTech: Just Design Just RunOutillage / AtelierGénérateur de codeOutil de Modélisation du modèleDSMOutil de Modélisation du Méta-Model DSLOutil de Modélisation du modèleDSMOutil de Modélisation du Méta-Model DSLDSM / instance du DSLCode généréDSL / Méta-Model15
  • 20.
    Analyse et spécificationdes besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeAlistair Cockburn, parmi les initiateurs de l’idée des cas d’utilisation, décrits 5 niveaux de granularité StratégiqueStratégiqueVente de livres en ligneNiveau 1Niveau 1TactiqueTactiqueGérer les transactionsNiveau 2Niveau 2Passer une commandeNiveau 3Objectif utilisateurNiveau 3Objectif utilisateurNiveau 4Sous-fonctionNiveau 4Sous-fonctionSélectionner un produit16requêterequêteNiveau 5Niveau 5Insérer une ligne de commande
  • 21.
    Analyse et spécificationdes besoinsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeVente de livres en ligneStratégiqueNiveau 1Gérer les transactionsTactiqueNiveau 2Passer une commandeNiveau 3Objectif utilisateurUse Case PatternSélectionner un produitNiveau 4Sous-fonction17Insérer une ligne de commanderequêteNiveau 5
  • 22.
    Analyse et spécificationdes besoinsAvantages des UCPsAnal. et spéc. des besoinsImplémentationConclusionConceptionIntroductionApproche MDSDAvantages des UCPsNiveau de granularité des UCPsArchitecture généraleMécanisme de génération de codeModélisé dés le début des projetsFacile à mettre en placeIndépendant de la technologie RépétableBase pour l’estimation des charges18
  • 23.
    ConceptionCreateManageManageRoleUCPs…………ImplémentationConclusionIntroductionAnal. et spéc.des besoinsConceptionListe des UCPs dégagésListe des UCPs dégagésViewEditeur graphiqueMéta-modèleArchitectureGénérateur de codeCreateRoleConceptionSearchMasterDetailDetailFilterMasterDetailListDetail19
  • 24.
    ConceptionAnal. et spéc.des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèleDSL / Méta-ModelJDJR4JavaEJavaE: Applications Java EnterpriseJDJR4JavaEJavaE: Applications Java Enterprise Persistance Processus<<UCP>><<Classe de persistance>>20
  • 25.
    ConceptionAnal. et spéc.des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèlemodèle de persistance<<Business Object>><<Entity>>JDJR4JavaEJavaE: Applications Java EnterpriseAttributAttribut<<Entity>><<Entity>><<Entity>>……….1Enumération<<Business Object>>Value ObjectValue Object……….*<<Entity>>21<<Entity>>
  • 26.
    ConceptionAnal. et spéc.des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèlemodèle de persistanceGestionSocieteExempleDepartementEmployepaysJDJR4JavaEJavaE: Applications Java Enterprise Tunis
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
    nom... locale
  • 32.
  • 33.
    ConceptionAnal. et spéc.des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèlemodèle de processusSous-processusJDJR4JavaEJavaE: Applications Java Enterprise<<UCP>><<include>><<UCP>><<extends>><<UCP>>23
  • 34.
    ConceptionAnal. et spéc.des besoinsImplémentationConclusionIntroductionConceptionListe des UCPs dégagésEditeur graphiqueMéta-modèleArchitectureGénérateur de codePrésentation du méta modèleGestionSocietemodèle de processusGestionSocieteExempleGestionSocieteDepartementEmployeeEmployeeJDJR4JavaEJavaE: Applications Java EnterprisenumDepa
  • 35.
  • 36.
  • 37.

Notes de l'éditeur

  • #28 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.
  • #36 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
  • #37 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 …