Scaffolding          MDSD         par    l’exemple


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

               ...
Définition
• Dans le contexte de l’enseignement:
   – Le Scaffolding est une stratégie
     d’enseignement qui implique d’...
Application au MDSD
                expliquée par l’exemple
• Explication appliquée à    • Légende
  une architecture 3-Ti...
Génération de code classique
                                      • On modélise l’Entity et le DAO
Modèle                ...
Génération avec compensation
                                               • On génère toujours le code
      Entity
    ...
Génération Scaffolding « aveugle »
Modèle i       Entity                                  •   Chaque modèle représente une...
Référencer des éléments
                             scaffoldés: Problématique
Modèle i                                   ...
Scaffolding « sur place »

                         Modèle i                 • Le DAO ‘OneDao’ est
                       ...
Prise de contrôle 1/3: Vue
                                  d’ensemble
 Itération n                             • Il est ...
Prise de contrôle 2/3: Zoom

                  DAO     Itération n   • Après prise de contrôle
                 OneDao    ...
Prise de contrôle 3/3:
                               Customisation
Itération n+1    DAO                   • Ajout d’un fi...
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 »...
Prochain SlideShare
Chargement dans…5
×

Scaffolding MDSD par l’exemple - 1.0

1 201 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 201
Sur SlideShare
0
Issues des intégrations
0
Intégrations
164
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Scaffolding MDSD par l’exemple - 1.0

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  12. 12. Synthèse
  13. 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

×