SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
Domain Driven Design

Ou comment tacler la complexité au
       cœur du logiciel



                                     /53
A propos de nous
    Guillaume Collic                     JP Gouigoux
     Acteur de l’agilité               Architecte logiciel




         @gcollic
Blog : guillaumecollic.com   blogs.dotnet-france.com/jeanphilippeg




                                                              2 /53
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
INTRODUCTION


               4 /53
Origine
 2003




          5 /53
Objectif de la session




                                              6 /53
http://www.flickr.com/photos/jm3/385649149/
Domaine ?
• Sujet auquel un utilisateur applique un
  programme
   – =~ Métier / Business / Fonctionnel / Marché
• Focalisé
  – valeur ajoutée
  – avantage concurrentiel




                                                   7 /53
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
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 /53
1990 Rube Goldberg Machine Crown Royal Whisky Print Ad
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
Quels moyens ?
   • Aspects techniques

   • Techniques de
     modélisation
   • Stratégies d’entreprise
   • Principes et bonnes
     pratiques
   • Urbanisation Agile du SI


                                                    12 /53
http://www.flickr.com/photos/phploveme/2746295460
Quels acteurs ?
• Toute partie prenante
• Même la direction
  – Stratégie




                                  13 /53
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
Remanier le modèle vers une compréhension accrue

MODÉLISER LE DOMAINE


                                                   15 /53
Le modèle ?
• Représentation / vue
  – du domaine
  – dans un but particulier : contexte borné
• Sous-jacent
  – Pas « qu’ un » document UML




                                               16 /53
Le modèle est vivant
• Apprentissage permanent
  – Brainstorming
  – Expérimentation
  – Aggrégation de connaissances
• Collaboration avec les experts du domaine




                                              17 /53
Remodeler le modèle ?

 Valeur




                                Avancée
                                majeure

          Temps / refactoring


                                          18 /53
19 /53
http://www.flickr.com/photos/seannaber/3221154105/
http://www.flickr.com/photos/meemal/   20 /53
21 /53
http://www.flickr.com/photos/quattro_ftw/3375145764/
22 /53
http://www.flickr.com/photos/ykjc9/4143179870/
Expression purifiée de l’éléctromagnétisme
James Clerk Maxwell, A Treatise on Electricity and Magnetism, 1873




                                                                     23 /53
24 /53
Bruegel
Extraire l’essence du domaine

DISTILLATION DU DOMAINE


                                25 /53
Extraire et purifier le domaine
                          ( découpage en modules)




http://www.flickr.com/photos/nygard/360096766/
http://www.flickr.com/photos/matthiasr/516575241    26 /53
http://www.flickr.com/photos/helenaliu/3703425234
Cœur du domaine
• Quoi ?
  – Ce qui a le plus de valeur
     • Avantage concurrentiel
• Par qui ?
  – Développeurs
     • Talentueux
     • Pérennes


                                 27 /53
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
Maintenir l’intégrité du modèle

CARTOGRAPHIER LE SYSTÈME, SES
INTERACTIONS ET SES CONTEXTES

                                  29 /53
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
Patterns de cartographie des
                contextes




Interactions entre composant des systèmes
    – entre modules de l’application
    – entre applications


http://www.infoq.com/articles/ddd-contextmapping   31 /53
Alberto Brandolini
Noyau partagé



                                                       share d


                                      Translation
                                         Map




Eric Evans, DOMAIN-DRIVEN DESIGN, Addison-Wesley,  Eric Evans, 2004.
Creative Commons Deed: Attribution 2.0
                                                                        32 /53
http://www.flickr.com/photos/chilangoco/   33 /53
http://www.flickr.com/photos/mckaysavage/
                                            34 /53
http://www.flickr.com/photos/hansol/   35 /53
http://www.flickr.com/photos/57768426@N00/   36 /53
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
Exemple




• http://www.infoq.com/articles/ddd-contextmapping
• Alberto Brandolini
                                                     38 /53
DDD ET L’EXISTANT


                    39 /53
DDD & Orienté objet
• l’Orienté objet bien fait ?




                                40 /53
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
DDD & agilité
• Message fort sur la conception/modélisation




                                                42 /53
DDD & agilité
• Nombreuses pratiques induites
  – Refactoring
  – Intégration continue
  – Test first
  – Simplicité
  –…




                                  43 /53
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
Architectures avancées en DDD

DDDD (DISTRIBUTED DDD) & CQRS
(COMMAND AND QUERY RESPONSIBILITY
SEGREGATION)
                                    45 /53
É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
É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
http://elegantcode.com/2009/11/11/cqrs-la-greg-young/   48 /53
Teasing pour la session suivante

PRÉVALENCE OBJET


                                   49 /53
Il y a 20 ans…

                         RAM DE
                          VOTRE
                         SERVEUR
VOS DONNEES



                          VOS DONNEES

                           ROM DE VOTRE SERVEUR




                                                  /53
Les conséquences

                               RAM DE
Besoin de monter                VOTRE
                                     X
                               SERVEUR
efficacement de la donnée
nécessaire au traitement
depuis les disques durs vers
la RAM
                                VOS DONNEES

                                 ROM DE VOTRE SERVEUR




                                                        /53
Aujourd’hui



                        VOS DONNEES SERVEUR
                         RAM DE VOTRE



VOS DONNEES
                      ROM DE VOTRE SERVEUR




                                             14/10/10 /53
CONCLUSION


             53 /53
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
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
?
Questions / Discussions




                          56 /53

Weitere ähnliche Inhalte

Was ist angesagt?

Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfAhmed Misbah
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationOğuzhan Soykan
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroFabrício Rissetto
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledNicola Costantino
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsAraf Karsh Hamid
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREAraf Karsh Hamid
 
From capabilities to services modelling for business-it alignment v.2
From capabilities to services   modelling for business-it alignment v.2From capabilities to services   modelling for business-it alignment v.2
From capabilities to services modelling for business-it alignment v.2Trond Hjorteland
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesAraf Karsh Hamid
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Araf Karsh Hamid
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Alan Christensen
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignNader Albert
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Lucas Jellema
 
Modelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignModelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignNaeem Sarfraz
 

Was ist angesagt? (20)

Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdf
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) Distilled
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
From capabilities to services modelling for business-it alignment v.2
From capabilities to services   modelling for business-it alignment v.2From capabilities to services   modelling for business-it alignment v.2
From capabilities to services modelling for business-it alignment v.2
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing Strategies
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
AKS
AKSAKS
AKS
 
Scrum + bdd + ddd
Scrum + bdd + dddScrum + bdd + ddd
Scrum + bdd + ddd
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Modelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignModelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven Design
 

Andere mochten auch

En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?Guillaume Collic
 
Introduction aux méthodes agiles
Introduction aux méthodes agilesIntroduction aux méthodes agiles
Introduction aux méthodes agilesGuillaume Collic
 
Pratiquer DDD en un éclair (devoxx france 2012)
Pratiquer DDD en un éclair (devoxx france 2012)Pratiquer DDD en un éclair (devoxx france 2012)
Pratiquer DDD en un éclair (devoxx france 2012)Ulrich VACHON
 
ASFA - Méthodologie - Domain Driven Design
ASFA - Méthodologie - Domain Driven DesignASFA - Méthodologie - Domain Driven Design
ASFA - Méthodologie - Domain Driven DesignFrédéric Sagez
 
J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.fchardon
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Mario Fusco
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Tom Kocjan
 
Urba ea topo-puits-v4extrait
Urba ea topo-puits-v4extraitUrba ea topo-puits-v4extrait
Urba ea topo-puits-v4extraitRené MANDEL
 
Laboratorio De Circuitos
Laboratorio De CircuitosLaboratorio De Circuitos
Laboratorio De Circuitosguesta678d8
 
988 Feliz Ano Nuevo (Menudospeques Net)
988 Feliz Ano Nuevo (Menudospeques Net)988 Feliz Ano Nuevo (Menudospeques Net)
988 Feliz Ano Nuevo (Menudospeques Net)Alvaro
 
Presentacion Tarea
Presentacion TareaPresentacion Tarea
Presentacion Tareaguest367b690
 
Vale presentacion filo
Vale presentacion filoVale presentacion filo
Vale presentacion filoalejitam18
 

Andere mochten auch (20)

En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
 
Introduction aux méthodes agiles
Introduction aux méthodes agilesIntroduction aux méthodes agiles
Introduction aux méthodes agiles
 
Pratiquer DDD en un éclair (devoxx france 2012)
Pratiquer DDD en un éclair (devoxx france 2012)Pratiquer DDD en un éclair (devoxx france 2012)
Pratiquer DDD en un éclair (devoxx france 2012)
 
ASFA - Méthodologie - Domain Driven Design
ASFA - Méthodologie - Domain Driven DesignASFA - Méthodologie - Domain Driven Design
ASFA - Méthodologie - Domain Driven Design
 
J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Urba ea topo-puits-v4extrait
Urba ea topo-puits-v4extraitUrba ea topo-puits-v4extrait
Urba ea topo-puits-v4extrait
 
Collaborer - Atelier Planning Poker
Collaborer - Atelier Planning PokerCollaborer - Atelier Planning Poker
Collaborer - Atelier Planning Poker
 
Agilité pour les nuls
Agilité pour les nulsAgilité pour les nuls
Agilité pour les nuls
 
Laboratorio De Circuitos
Laboratorio De CircuitosLaboratorio De Circuitos
Laboratorio De Circuitos
 
Lol Ah!
Lol Ah!Lol Ah!
Lol Ah!
 
Tango
TangoTango
Tango
 
988 Feliz Ano Nuevo (Menudospeques Net)
988 Feliz Ano Nuevo (Menudospeques Net)988 Feliz Ano Nuevo (Menudospeques Net)
988 Feliz Ano Nuevo (Menudospeques Net)
 
telemedicina
telemedicinatelemedicina
telemedicina
 
Tema 10
Tema 10Tema 10
Tema 10
 
Blogs
BlogsBlogs
Blogs
 
Presentacion Tarea
Presentacion TareaPresentacion Tarea
Presentacion Tarea
 
Curs fce oct13
Curs fce oct13Curs fce oct13
Curs fce oct13
 
Vale presentacion filo
Vale presentacion filoVale presentacion filo
Vale presentacion filo
 

Ähnlich wie Domain Driven Design (DDD)

Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011OSInet
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeo[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeoCamptocamp
 
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...Alphorm
 
Responsive web design new14
Responsive web design new14Responsive web design new14
Responsive web design new14FullSIX Group
 
Master Class SeriousGame - Christophe Michoux - Simlinx
Master Class SeriousGame - Christophe Michoux - SimlinxMaster Class SeriousGame - Christophe Michoux - Simlinx
Master Class SeriousGame - Christophe Michoux - SimlinxXavier Van Dieren
 
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7OSInet
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxssuserec8501
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)Cyrille Martraire
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveCedric Vidal
 
2012 cyril-wolfangel-responsive design-typo3
2012 cyril-wolfangel-responsive design-typo32012 cyril-wolfangel-responsive design-typo3
2012 cyril-wolfangel-responsive design-typo3Talan
 
Soutenance mémoire : Implémentation d'un DSL en entreprise
Soutenance mémoire : Implémentation d'un DSL en entrepriseSoutenance mémoire : Implémentation d'un DSL en entreprise
Soutenance mémoire : Implémentation d'un DSL en entrepriseBrice Argenson
 
Iafactory formation-univ-conception-02 outils
Iafactory formation-univ-conception-02 outilsIafactory formation-univ-conception-02 outils
Iafactory formation-univ-conception-02 outilsiafactory
 
Babylon.js WebGL Paris
Babylon.js  WebGL ParisBabylon.js  WebGL Paris
Babylon.js WebGL Parisdavrous
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Thierry Régagnon
 
OpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleOpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleChady Dimachkie
 

Ähnlich wie Domain Driven Design (DDD) (20)

DDD FOR POs.pdf
DDD FOR POs.pdfDDD FOR POs.pdf
DDD FOR POs.pdf
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeo[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeo
 
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
 
Responsive web design new14
Responsive web design new14Responsive web design new14
Responsive web design new14
 
Master Class SeriousGame - Christophe Michoux - Simlinx
Master Class SeriousGame - Christophe Michoux - SimlinxMaster Class SeriousGame - Christophe Michoux - Simlinx
Master Class SeriousGame - Christophe Michoux - Simlinx
 
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
 
4 Etude De Faisabilite
4 Etude De Faisabilite4 Etude De Faisabilite
4 Etude De Faisabilite
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehave
 
2012 cyril-wolfangel-responsive design-typo3
2012 cyril-wolfangel-responsive design-typo32012 cyril-wolfangel-responsive design-typo3
2012 cyril-wolfangel-responsive design-typo3
 
Soutenance mémoire : Implémentation d'un DSL en entreprise
Soutenance mémoire : Implémentation d'un DSL en entrepriseSoutenance mémoire : Implémentation d'un DSL en entreprise
Soutenance mémoire : Implémentation d'un DSL en entreprise
 
Iafactory formation-univ-conception-02 outils
Iafactory formation-univ-conception-02 outilsIafactory formation-univ-conception-02 outils
Iafactory formation-univ-conception-02 outils
 
Babylon.js WebGL Paris
Babylon.js  WebGL ParisBabylon.js  WebGL Paris
Babylon.js WebGL Paris
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)
 
OpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleOpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_Finale
 
Agile pour l'echafaud ATT2020.pptx
Agile pour l'echafaud ATT2020.pptxAgile pour l'echafaud ATT2020.pptx
Agile pour l'echafaud ATT2020.pptx
 
Genielogiciel
GenielogicielGenielogiciel
Genielogiciel
 

Domain Driven Design (DDD)

  • 1. Domain Driven Design Ou comment tacler la complexité au cœur du logiciel /53
  • 2. A propos de nous Guillaume Collic JP Gouigoux Acteur de l’agilité Architecte logiciel @gcollic Blog : guillaumecollic.com blogs.dotnet-france.com/jeanphilippeg 2 /53
  • 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. INTRODUCTION 4 /53
  • 5. Origine 2003 5 /53
  • 6. Objectif de la session 6 /53 http://www.flickr.com/photos/jm3/385649149/
  • 7. Domaine ? • Sujet auquel un utilisateur applique un programme – =~ Métier / Business / Fonctionnel / Marché • Focalisé – valeur ajoutée – avantage concurrentiel 7 /53
  • 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. 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 /53 1990 Rube Goldberg Machine Crown Royal Whisky Print Ad
  • 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. Quels moyens ? • Aspects techniques • Techniques de modélisation • Stratégies d’entreprise • Principes et bonnes pratiques • Urbanisation Agile du SI 12 /53 http://www.flickr.com/photos/phploveme/2746295460
  • 13. Quels acteurs ? • Toute partie prenante • Même la direction – Stratégie 13 /53
  • 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. Remanier le modèle vers une compréhension accrue MODÉLISER LE DOMAINE 15 /53
  • 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. Le modèle est vivant • Apprentissage permanent – Brainstorming – Expérimentation – Aggrégation de connaissances • Collaboration avec les experts du domaine 17 /53
  • 18. Remodeler le modèle ? Valeur Avancée majeure Temps / refactoring 18 /53
  • 23. Expression purifiée de l’éléctromagnétisme James Clerk Maxwell, A Treatise on Electricity and Magnetism, 1873 23 /53
  • 25. Extraire l’essence du domaine DISTILLATION DU DOMAINE 25 /53
  • 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 /53 http://www.flickr.com/photos/helenaliu/3703425234
  • 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. 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. Maintenir l’intégrité du modèle CARTOGRAPHIER LE SYSTÈME, SES INTERACTIONS ET SES CONTEXTES 29 /53
  • 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. Patterns de cartographie des contextes Interactions entre composant des systèmes – entre modules de l’application – entre applications http://www.infoq.com/articles/ddd-contextmapping 31 /53 Alberto Brandolini
  • 32. Noyau partagé share d Translation Map Eric Evans, DOMAIN-DRIVEN DESIGN, Addison-Wesley,  Eric Evans, 2004. Creative Commons Deed: Attribution 2.0 32 /53
  • 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
  • 40. DDD & Orienté objet • l’Orienté objet bien fait ? 40 /53
  • 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. DDD & agilité • Message fort sur la conception/modélisation 42 /53
  • 43. DDD & agilité • Nombreuses pratiques induites – Refactoring – Intégration continue – Test first – Simplicité –… 43 /53
  • 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. Architectures avancées en DDD DDDD (DISTRIBUTED DDD) & CQRS (COMMAND AND QUERY RESPONSIBILITY SEGREGATION) 45 /53
  • 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. É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
  • 49. Teasing pour la session suivante PRÉVALENCE OBJET 49 /53
  • 50. Il y a 20 ans… RAM DE VOTRE SERVEUR VOS DONNEES VOS DONNEES ROM DE VOTRE SERVEUR /53
  • 51. Les conséquences RAM DE Besoin de monter VOTRE X SERVEUR efficacement de la donnée nécessaire au traitement depuis les disques durs vers la RAM VOS DONNEES ROM DE VOTRE SERVEUR /53
  • 52. Aujourd’hui VOS DONNEES SERVEUR RAM DE VOTRE VOS DONNEES ROM DE VOTRE SERVEUR 14/10/10 /53
  • 53. CONCLUSION 53 /53
  • 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. 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