SlideShare una empresa de Scribd logo
1 de 13
Scaffolding          MDSD         par    l’exemple


   De la génération de code classique au scaffolding

                 Cédric Vidal, ProxiAD
                      Juin 2009


                                                       Version 1.0
Définition
• Dans le contexte de l’enseignement:
   – Le Scaffolding est une stratégie
     d’enseignement qui implique d’assister
     l’élève novice en limitant la complexité
      du contexte et en enlevant progressivement
      ces limites au fur et à mesure que l’élève
      gagne en connaissance, en compétences
      et en assurance dans l’appréhension de
      l’entièreté de la compléxité du contexte
      (Young, 1993).


• Voyons ce que cela                   donne
  appliqué au MDSD …
Application au MDSD
                expliquée par l’exemple
• Explication appliquée à    • Légende
  une architecture 3-Tiers               Entity ou DAO
  contenant les concepts
  suivants                               Fichier

   – Entity
                                         Service
   – DAO
                                         Génération
   – Service
                                         Référence
                                         Séparation de modèle
• Du code Java est généré    Code couleur
  à partir de ces concepts       Saisi      Généré       Scaffoldé
Génération de code classique
                                      • On modélise l’Entity et le DAO
Modèle                                • Le code source de l’Entity est
                                        généré à partir de L’Entity
                                DAO     modélisée
     Entity                           • Le code source du DAO est
                                        généré à partir du DAO
                                        modélisé
                                      • Les DAO qui ne sont pas
                                        modélisés n’ont pas de code
                  Texte                 source généré

                                      • Problème: Nécessite de
                          DAO.java
         Entity.java                    modéliser tous les DAO …
                                      • Même ceux qui ne font que du
                                        CRUD
Génération avec compensation
                                               • On génère toujours le code
      Entity
                        Modèle                   source des éléments modélisés
                                               • Pour les Entity qui n’ont pas de
       One                            DAO        DAO modélisé, on compense
               Entity                 One        cette absence en génèrant le
                Two                              code source CRUD du DAO à
                                                 partir de l’Entity

                                               • Avantage: Seuls les DAO
                                                 spécifiques sont modélisés
                                               • Problème: Duplication de la
One.java                                         logique de génération des DAO
                        TwoDAO.java
                                                   – Entity -> DAO.java
                                                   – DAO -> DAO.java
       Two.java

                                 OneDAO.java
               Texte
Génération Scaffolding « aveugle »
Modèle i       Entity                                  •   Chaque modèle représente une étape
                                     DAO                   de la chaîne MDSD
     Entity     Two
                                    TwoDao             •   Une étape intermédiaire est ajoutée
      One                                              •   Chaque modèle ne peut « voir » que
                                                           celui qui le précède

                          Modèle i-bis                 •   Les entités et DAOs existants sont
           Entity                         DAO              recopiés tels quels
            Two                          TwoDao        •   Un DAO est généré pour chaque
  Entity                                                   entité qui n’en a pas
   One                        DAO
                             OneDao                    •   Avantage: Une seule logique de
                                                           génération DAO
                                                       •   Problème: Comment référencer des
                                                           éléments scaffoldés ? (ici, ‘OneDao’)
                    Modèle i+1
 One.java
                                         TwoDAO.java
            Two.java
                             OneDAO.java
Référencer des éléments
                             scaffoldés: Problématique
Modèle i                                   • Problématique illustrée par
                         DAO                 l’introduction d’un service
                        TwoDao
         Entity                            • Le service ‘Alpha’ peut
          Two                                référencer le DAO modélisé
Entity
 One                             Service     ‘TwoDao’ mais pas le DAO
                                  Alpha      scaffoldé ‘OneDao’
                                           • Le DAO scaffoldé ‘OneDao’
                                             est situé dans un modèle
                                             que le service ‘Alpha’ ne
                                             peut référencer
              Modèle i-bis
     Entity                   DAO          • Problème: Il n’est pas
      One                    OneDao          possible de référencer des
                                             éléments « scaffoldés »
Scaffolding « sur place »

                         Modèle i                 • Le DAO ‘OneDao’ est
                                                    scaffoldé dans le même
                                                    modèle que l’entité ‘One’
Entity         DAO                  Service
 One          OneDao                 Alpha        • Le DAO est « visible »
                                                    sans être matérialisé
                                                    dans le modèle source

                    Modèle i+1                    • Avantage: Le service
One.java                                            ‘Alpha’ peut ainsi
                                                    référencer le DAO
                              AlphaService.java     scaffoldé ‘OneDao’
           OneDao.java                            • Problème: Comment
                                                    customiser un élément
                                                    scaffoldé ?
Prise de contrôle 1/3: Vue
                                  d’ensemble
 Itération n                             • Il est possible de
                                           prendre le contrôle d’un
Entity             DAO         Service
 One              OneDao        Alpha      élément scaffoldé
                                         • Il est alors matérialisé
                                           dans le modèle source

         Itération n+1
                                         • Avantage: Le DAO peut
Entity            DAO          Service     être customisé
 One             OneDao         Alpha
Prise de contrôle 2/3: Zoom

                  DAO     Itération n   • Après prise de contrôle
                 OneDao                   du DAO, les méthodes
 Entity          create       Service     CRUD sont toujours
  One             read         Alpha
                 update                   scaffoldées
                 delete


                                        • Avantage: Pas besoin
Itération n+1    DAO                      de re-saisir les éléments
                OneDao
Entity                        Service
                                          précédemment
                create
 One             read          Alpha      scaffoldés de zéro
                update
                delete
Prise de contrôle 3/3:
                               Customisation
Itération n+1    DAO                   • Ajout d’un finder
                OneDao
   Entity        create      Service   • Les méthodes CRUD
    One           read        Alpha      sont toujours
                 update
                 delete                  scaffoldées

Itération n+2    DAO                   • Avantage: Seules les
                OneDao
                                         customisation sont
                create
   Entity        read        Service     saisies. Le reste est
    One         update        Alpha      scaffoldé
                delete

                myFinder
Synthèse
Conclusion sur le Scaffolding MDSD

• Accélère la saisie du modèle
• Permet d’avoir très vite un modèle « qui fonctionne »
• L’utilisateur commence dès le début avec un modèle
  complet
• Fournit un feedback à l’utilisateur plus rapidement
• Permet d’enrichir le modèle d’entrée tout en facilitant
  son usage pour l’utilisateur novice
• Le scaffolding peut être utilisé en complément de la
  génération de code et de la validation de modèle
• L’utilisateur peut à tout instant prendre le contrôle des
  éléments scaffoldés pour les customiser

Más contenido relacionado

Destacado

Integrating Skills Growing Talents
Integrating Skills   Growing TalentsIntegrating Skills   Growing Talents
Integrating Skills Growing TalentsAlex Duque
 
Integrating the language_ skills
Integrating  the  language_ skillsIntegrating  the  language_ skills
Integrating the language_ skillscarolzinhanep
 
Integrated skills
Integrated skillsIntegrated skills
Integrated skillsmrsyanez
 
Customer projects Dlubal RFEM RSTAB
Customer projects Dlubal RFEM RSTAB Customer projects Dlubal RFEM RSTAB
Customer projects Dlubal RFEM RSTAB Jo Gijbels
 
Integrating Skills
Integrating SkillsIntegrating Skills
Integrating Skillsidiomaspoli
 

Destacado (9)

Integrating Skills Growing Talents
Integrating Skills   Growing TalentsIntegrating Skills   Growing Talents
Integrating Skills Growing Talents
 
Scaffolding
ScaffoldingScaffolding
Scaffolding
 
SCAFFOLDING
SCAFFOLDINGSCAFFOLDING
SCAFFOLDING
 
Integrating the language_ skills
Integrating  the  language_ skillsIntegrating  the  language_ skills
Integrating the language_ skills
 
Integrated Skills
Integrated SkillsIntegrated Skills
Integrated Skills
 
Integrated skills
Integrated skillsIntegrated skills
Integrated skills
 
Scaffolding
ScaffoldingScaffolding
Scaffolding
 
Customer projects Dlubal RFEM RSTAB
Customer projects Dlubal RFEM RSTAB Customer projects Dlubal RFEM RSTAB
Customer projects Dlubal RFEM RSTAB
 
Integrating Skills
Integrating SkillsIntegrating Skills
Integrating Skills
 

Similar a Scaffolding MDSD par l’exemple - 1.0

cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfSliimAmiri
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1ATHMAN HAJ-HAMOU
 
Seance_1_cours_introduction_java_Copie.pptx
Seance_1_cours_introduction_java_Copie.pptxSeance_1_cours_introduction_java_Copie.pptx
Seance_1_cours_introduction_java_Copie.pptxRihabBENLAMINE
 
Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011yassine kchiri
 
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation BootstrapTelecomValley
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
Dojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx FranceDojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx Francecjolif
 
Java Code to Java Heap - En Français
Java Code to Java Heap - En FrançaisJava Code to Java Heap - En Français
Java Code to Java Heap - En FrançaisChris Bailey
 

Similar a Scaffolding MDSD par l’exemple - 1.0 (12)

cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
4711538.pptx
4711538.pptx4711538.pptx
4711538.pptx
 
Cours dao
Cours daoCours dao
Cours dao
 
Cours jdbc
Cours jdbcCours jdbc
Cours jdbc
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Seance_1_cours_introduction_java_Copie.pptx
Seance_1_cours_introduction_java_Copie.pptxSeance_1_cours_introduction_java_Copie.pptx
Seance_1_cours_introduction_java_Copie.pptx
 
Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011
 
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Dojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx FranceDojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx France
 
Java Code to Java Heap - En Français
Java Code to Java Heap - En FrançaisJava Code to Java Heap - En Français
Java Code to Java Heap - En Français
 

Más de Cedric Vidal

Camunda Days 2018 Building a digital on-boarding microservices platform using...
Camunda Days 2018 Building a digital on-boarding microservices platform using...Camunda Days 2018 Building a digital on-boarding microservices platform using...
Camunda Days 2018 Building a digital on-boarding microservices platform using...Cedric Vidal
 
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018Cedric Vidal
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveCedric Vidal
 
BBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.comBBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.comCedric Vidal
 
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days ParisRethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days ParisCedric Vidal
 
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...Cedric Vidal
 
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0Cedric Vidal
 
MD Day 2009 - Cédric Vidal - 1.0
MD Day 2009 - Cédric Vidal - 1.0MD Day 2009 - Cédric Vidal - 1.0
MD Day 2009 - Cédric Vidal - 1.0Cedric Vidal
 
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1Cedric Vidal
 

Más de Cedric Vidal (11)

Camunda Days 2018 Building a digital on-boarding microservices platform using...
Camunda Days 2018 Building a digital on-boarding microservices platform using...Camunda Days 2018 Building a digital on-boarding microservices platform using...
Camunda Days 2018 Building a digital on-boarding microservices platform using...
 
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehave
 
BBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.comBBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.com
 
EMF Customizer
EMF CustomizerEMF Customizer
EMF Customizer
 
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days ParisRethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
 
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
 
EMF Scaffolding
EMF ScaffoldingEMF Scaffolding
EMF Scaffolding
 
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
 
MD Day 2009 - Cédric Vidal - 1.0
MD Day 2009 - Cédric Vidal - 1.0MD Day 2009 - Cédric Vidal - 1.0
MD Day 2009 - Cédric Vidal - 1.0
 
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
 

Scaffolding MDSD par l’exemple - 1.0

  • 1. Scaffolding MDSD par l’exemple De la génération de code classique au scaffolding Cédric Vidal, ProxiAD Juin 2009 Version 1.0
  • 2. Définition • Dans le contexte de l’enseignement: – Le Scaffolding est une stratégie d’enseignement qui implique d’assister l’élève novice en limitant la complexité du contexte et en enlevant progressivement ces limites au fur et à mesure que l’élève gagne en connaissance, en compétences et en assurance dans l’appréhension de l’entièreté de la compléxité du contexte (Young, 1993). • Voyons ce que cela donne appliqué au MDSD …
  • 3. Application au MDSD expliquée par l’exemple • Explication appliquée à • Légende une architecture 3-Tiers Entity ou DAO contenant les concepts suivants Fichier – Entity Service – DAO Génération – Service Référence Séparation de modèle • Du code Java est généré Code couleur à partir de ces concepts Saisi Généré Scaffoldé
  • 4. Génération de code classique • On modélise l’Entity et le DAO Modèle • Le code source de l’Entity est généré à partir de L’Entity DAO modélisée Entity • Le code source du DAO est généré à partir du DAO modélisé • Les DAO qui ne sont pas modélisés n’ont pas de code Texte source généré • Problème: Nécessite de DAO.java Entity.java modéliser tous les DAO … • Même ceux qui ne font que du CRUD
  • 5. Génération avec compensation • On génère toujours le code Entity Modèle source des éléments modélisés • Pour les Entity qui n’ont pas de One DAO DAO modélisé, on compense Entity One cette absence en génèrant le Two code source CRUD du DAO à partir de l’Entity • Avantage: Seuls les DAO spécifiques sont modélisés • Problème: Duplication de la One.java logique de génération des DAO TwoDAO.java – Entity -> DAO.java – DAO -> DAO.java Two.java OneDAO.java Texte
  • 6. Génération Scaffolding « aveugle » Modèle i Entity • Chaque modèle représente une étape DAO de la chaîne MDSD Entity Two TwoDao • Une étape intermédiaire est ajoutée One • Chaque modèle ne peut « voir » que celui qui le précède Modèle i-bis • Les entités et DAOs existants sont Entity DAO recopiés tels quels Two TwoDao • Un DAO est généré pour chaque Entity entité qui n’en a pas One DAO OneDao • Avantage: Une seule logique de génération DAO • Problème: Comment référencer des éléments scaffoldés ? (ici, ‘OneDao’) Modèle i+1 One.java TwoDAO.java Two.java OneDAO.java
  • 7. Référencer des éléments scaffoldés: Problématique Modèle i • Problématique illustrée par DAO l’introduction d’un service TwoDao Entity • Le service ‘Alpha’ peut Two référencer le DAO modélisé Entity One Service ‘TwoDao’ mais pas le DAO Alpha scaffoldé ‘OneDao’ • Le DAO scaffoldé ‘OneDao’ est situé dans un modèle que le service ‘Alpha’ ne peut référencer Modèle i-bis Entity DAO • Problème: Il n’est pas One OneDao possible de référencer des éléments « scaffoldés »
  • 8. Scaffolding « sur place » Modèle i • Le DAO ‘OneDao’ est scaffoldé dans le même modèle que l’entité ‘One’ Entity DAO Service One OneDao Alpha • Le DAO est « visible » sans être matérialisé dans le modèle source Modèle i+1 • Avantage: Le service One.java ‘Alpha’ peut ainsi référencer le DAO AlphaService.java scaffoldé ‘OneDao’ OneDao.java • Problème: Comment customiser un élément scaffoldé ?
  • 9. Prise de contrôle 1/3: Vue d’ensemble Itération n • Il est possible de prendre le contrôle d’un Entity DAO Service One OneDao Alpha élément scaffoldé • Il est alors matérialisé dans le modèle source Itération n+1 • Avantage: Le DAO peut Entity DAO Service être customisé One OneDao Alpha
  • 10. Prise de contrôle 2/3: Zoom DAO Itération n • Après prise de contrôle OneDao du DAO, les méthodes Entity create Service CRUD sont toujours One read Alpha update scaffoldées delete • Avantage: Pas besoin Itération n+1 DAO de re-saisir les éléments OneDao Entity Service précédemment create One read Alpha scaffoldés de zéro update delete
  • 11. Prise de contrôle 3/3: Customisation Itération n+1 DAO • Ajout d’un finder OneDao Entity create Service • Les méthodes CRUD One read Alpha sont toujours update delete scaffoldées Itération n+2 DAO • Avantage: Seules les OneDao customisation sont create Entity read Service saisies. Le reste est One update Alpha scaffoldé delete myFinder
  • 13. Conclusion sur le Scaffolding MDSD • Accélère la saisie du modèle • Permet d’avoir très vite un modèle « qui fonctionne » • L’utilisateur commence dès le début avec un modèle complet • Fournit un feedback à l’utilisateur plus rapidement • Permet d’enrichir le modèle d’entrée tout en facilitant son usage pour l’utilisateur novice • Le scaffolding peut être utilisé en complément de la génération de code et de la validation de modèle • L’utilisateur peut à tout instant prendre le contrôle des éléments scaffoldés pour les customiser