Domain Driven Design (DDD)

1 226 vues

Publié le

Introduction au Domain Driven Design, un livre rempli de bonnes idées pour concevoir avec agilité ses applications (conception et modélisation émergente, adéquation de la solution au problème adressé, stratégie du découpage en module et des interactions inter-équipes, alignement entre le métier et les développeurs ...)

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

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

Aucune remarque pour cette diapositive

Domain Driven Design (DDD)

  1. 1. Domain Driven DesignOu comment tacler la complexité au cœur du logiciel /53
  2. 2. A propos de nous Guillaume Collic JP Gouigoux Acteur de l’agilité Architecte logiciel @gcollicBlog : guillaumecollic.com blogs.dotnet-france.com/jeanphilippeg 2 /53
  3. 3. Plan• Introduction• DDD – Modéliser le domaine – Distiller le domaine – Cartographier le Système, ses interactions et ses contextes• DDD et l’existant• CQRS• Conclusion 3 /53
  4. 4. INTRODUCTION 4 /53
  5. 5. Origine 2003 5 /53
  6. 6. Objectif de la session 6 /53http://www.flickr.com/photos/jm3/385649149/
  7. 7. Domaine ?• Sujet auquel un utilisateur applique un programme – =~ Métier / Business / Fonctionnel / Marché• Focalisé – valeur ajoutée – avantage concurrentiel 7 /53
  8. 8. Exemple de domaine• Application de fret de marchandise – Avantage concurrentiel • Rapidité de livraison ? – Optimisation du fret ! • Suivi en direct des marchandises ? – Traçabilité ! 8 /53
  9. 9. Complexité s d’un système logiciel• Complexité inhérente• Complexité réelle• Delta – incapacité à faire correspondre la solution au problème 9 /53
  10. 10. 10 /531990 Rube Goldberg Machine Crown Royal Whisky Print Ad
  11. 11. DDD : Quels objectifs ?• Minimiser cette différence – Tacler la complexité réelle – Clarifier la complexité inhérente• Focaliser – Le logiciel sur l’avantage concurrentiel – L’entreprise sur sa stratégie 11 /53
  12. 12. Quels moyens ? • Aspects techniques • Techniques de modélisation • Stratégies d’entreprise • Principes et bonnes pratiques • Urbanisation Agile du SI 12 /53http://www.flickr.com/photos/phploveme/2746295460
  13. 13. Quels acteurs ?• Toute partie prenante• Même la direction – Stratégie 13 /53
  14. 14. Pré-requis• Processus incrémental• Accès aux experts du domaine“You just have to have them. And if you don’t, you just can’t do DDD.” Eric Evans => Agilité ? 14 /53
  15. 15. Remanier le modèle vers une compréhension accrueMODÉLISER LE DOMAINE 15 /53
  16. 16. Le modèle ?• Représentation / vue – du domaine – dans un but particulier : contexte borné• Sous-jacent – Pas « qu’ un » document UML 16 /53
  17. 17. Le modèle est vivant• Apprentissage permanent – Brainstorming – Expérimentation – Aggrégation de connaissances• Collaboration avec les experts du domaine 17 /53
  18. 18. Remodeler le modèle ? Valeur Avancée majeure Temps / refactoring 18 /53
  19. 19. 19 /53http://www.flickr.com/photos/seannaber/3221154105/
  20. 20. http://www.flickr.com/photos/meemal/ 20 /53
  21. 21. 21 /53http://www.flickr.com/photos/quattro_ftw/3375145764/
  22. 22. 22 /53http://www.flickr.com/photos/ykjc9/4143179870/
  23. 23. Expression purifiée de l’éléctromagnétismeJames Clerk Maxwell, A Treatise on Electricity and Magnetism, 1873 23 /53
  24. 24. 24 /53Bruegel
  25. 25. Extraire l’essence du domaineDISTILLATION DU DOMAINE 25 /53
  26. 26. Extraire et purifier le domaine ( découpage en modules)http://www.flickr.com/photos/nygard/360096766/http://www.flickr.com/photos/matthiasr/516575241 26 /53http://www.flickr.com/photos/helenaliu/3703425234
  27. 27. Cœur du domaine• Quoi ? – Ce qui a le plus de valeur • Avantage concurrentiel• Par qui ? – Développeurs • Talentueux • Pérennes 27 /53
  28. 28. Sous-domaines génériques• Quoi ? – Ensembles cohérents – Pas la motivation propre du projet : en support• Par qui ? – moins expérimentés – moins pérennes – Sur étagère / externalisés• Exemple : Gestion de fuseaux horaires• Pas forcément réutilisable ! 28 /53
  29. 29. Maintenir l’intégrité du modèleCARTOGRAPHIER LE SYSTÈME, SESINTERACTIONS ET SES CONTEXTES 29 /53
  30. 30. Contextes• Service logistique • Service commercial – Fournies par palette – 0,30 € la bouteille de • 720 bouteilles 75cl • Iso1 : 800 × 1200 mm – 6 pour le prix de 5 30 /53
  31. 31. Patterns de cartographie des contextesInteractions entre composant des systèmes – entre modules de l’application – entre applicationshttp://www.infoq.com/articles/ddd-contextmapping 31 /53Alberto Brandolini
  32. 32. Noyau partagé share d Translation MapEric Evans, DOMAIN-DRIVEN DESIGN, Addison-Wesley,  Eric Evans, 2004.Creative Commons Deed: Attribution 2.0 32 /53
  33. 33. http://www.flickr.com/photos/chilangoco/ 33 /53
  34. 34. http://www.flickr.com/photos/mckaysavage/ 34 /53
  35. 35. http://www.flickr.com/photos/hansol/ 35 /53
  36. 36. http://www.flickr.com/photos/57768426@N00/ 36 /53
  37. 37. Couche anti-corruption Notre sous système• Exposer les services … … … Classe Classe souhaités élégante expressive – Langage ubiquitaire Service A Service B• Traduire Adaptateur 1 Adaptateur 2 – Patterns adaptateurs Traducteur 1 Couche• Simplifier l’interface anti-corruption Façade externe … … Classe pas – Pattern façade avec le … … très propre strict nécessaire … … Interface Autre sous système compliquée 423XB 37 /53
  38. 38. Exemple• http://www.infoq.com/articles/ddd-contextmapping• Alberto Brandolini 38 /53
  39. 39. DDD ET L’EXISTANT 39 /53
  40. 40. DDD & Orienté objet• l’Orienté objet bien fait ? 40 /53
  41. 41. DDD & Orienté objet• Ça dépend du domaine ! – Différents problèmes, différents paradigmes • Orienté objet • Fonctionnel (sens mathématique) • DSL – Domain Specific Language • Workflow • Etc. – A combiner • Avec beaucoup de modération 41 /53
  42. 42. DDD & agilité• Message fort sur la conception/modélisation 42 /53
  43. 43. DDD & agilité• Nombreuses pratiques induites – Refactoring – Intégration continue – Test first – Simplicité –… 43 /53
  44. 44. Apports• Langage ubiquitaire – User stories, code, tests, Definition of Done, …• Workshop avec les experts – Place du PO ?• Cartographie des contextes – Un outil pour les relations entre équipes et ainsi passer l’agilité à l’échelle ? 44 /53
  45. 45. Architectures avancées en DDDDDDD (DISTRIBUTED DDD) & CQRS(COMMAND AND QUERY RESPONSIBILITYSEGREGATION) 45 /53
  46. 46. Évènements du domaine• Objet décrivant un évènement métier – Décrit l’intention – Découple producteurs et consommateurs • Bus – Permet éventuellement de reconstruire l’état • Log d’évènements 46 /53
  47. 47. Évènement != commande != DTO IHM• Commande – Achat : panier {4213}, adresse {1} – Nécessite un traitement métier• Évènement – A acheté : Produit XXX, prix HT X, TVA Y, prix TTC Z, livraison adresse ZZ – Résultat autosuffisant : plus de traitements• DTO IHM – Achats , leurs statuts, … 47 /53
  48. 48. http://elegantcode.com/2009/11/11/cqrs-la-greg-young/ 48 /53
  49. 49. Teasing pour la session suivantePRÉVALENCE OBJET 49 /53
  50. 50. Il y a 20 ans… RAM DE VOTRE SERVEURVOS DONNEES VOS DONNEES ROM DE VOTRE SERVEUR /53
  51. 51. Les conséquences RAM DEBesoin de monter VOTRE X SERVEURefficacement de la donnéenécessaire au traitementdepuis les disques durs versla RAM VOS DONNEES ROM DE VOTRE SERVEUR /53
  52. 52. Aujourd’hui VOS DONNEES SERVEUR RAM DE VOTREVOS DONNEES ROM DE VOTRE SERVEUR 14/10/10 /53
  53. 53. CONCLUSION 53 /53
  54. 54. L’essentiel• Collaboration créative entre experts du domaine et experts du logiciel• Exploration et expérimentation• Modèles émergents formant et reformant le langage ubiquitaire• Frontières des contextes explicites• Se concentrer sur le cœur du domaine“ If I had to give up everything else, these would be the things I would focus on ” Eric Evans, 2009 54 /53
  55. 55. Pointeurs• Eric Evans • DOMAIN-DRIVEN DESIGN, Addison-Wesley • http://domaindrivendesign.org/• Alberto Brandolini - Context mapping – http://skillsmatter.com/podcast/design- architecture/context-mapping-in-action• CQRS – http://cqrsinfo.com 55 /53
  56. 56. ?Questions / Discussions 56 /53

×