SlideShare a Scribd company logo
1 of 35
DDD et XP
Quel est le but ?




Le but est de résoudre le problème du
                 client
Qu'est-ce qu'XP ?
Qu'est-ce que DDD ?




           Qu'est-ce que
              DDD ?
Qu'est-que DDD ?




On doit travailler dans un domaine
Qu'est-ce que DDD ?




Le code, c'est pas technique
Qu'est-ce que DDD ?




Volonté de créer une abstraction : le
              Modèle
Qu'est-ce qu'un modèle ?




            Qu'est-ce qu'un
              modèle ?
Qu'est-ce qu'un modèle ?
Qu'est-ce qu'un modèle ?




Un ensemble d'objets interconnectés
    qui portent des règles métier
Qu'est-ce qu'un modèle ?




Exprimé dans un langage omniprésent
Pourquoi un modèle ?




         Pourquoi un modèle
         est nécessaire pour
           une équipe qui
             utilise XP ?
Pourquoi un modèle ?




Pour accepter les changements
Pourquoi un modèle ?




Pour communiquer avec le client
Pourquoi un modèle ?




Parce que TDD ne suffit pas pour créer
        une bonne conception
Comment ?

Comment écrire du bon code ?
Comment ?
Comment ?




Faites chanter le code !
Comment ?




Un petit exemple
Un petit exemple

                                Avant
public void faireRelancesClients() {

    sql = "select * from clients
            where solde > 0
            and date_dernier_reglement < subtract(now, 3)"

    jeuDonnées = execute(sql)

    foreach (enregistrement in jeuDonnées) {
      envoyerWolf(jeuDonnées["adresse"],
                  jeuDonnées["code_postal"],
                  jeuDonnées["ville"])
    }
}
Un petit exemple

                             Après
public void faireRelancesClients() {

    clients = Entrepôts.clients().parSpécification(
                     new SpécificationClientMauvaisPayeur())

    foreach (mauvaisPayeur in clients) {
      envoyerWolf(mauvaisPayeur.getAdresse())
    }
}
Comment ?




Communication avec le client pour
   extraire la connaissance
Comment ?




TDD et refactoring sont indispensables
 pour obtenir une bonne conception
Comment ?




Pour que le refactoring soit efficace, il
       faut une cible, un but
Comment ?
Comment ?




Blocs de construction
Blocs de construction


Éléments qui expriment le modèle :
             • Entités
             • Objets valeur
             • Services
Blocs de construction




                                    Entrepôts



« Only try to realize the truth »
Entrepôts dans le modèle
Entrepôts en mémoire
Entrepôts hibernate
Conception souple




• Fonctions sans effet de bord
• Assertions
Questions
Autres questions




Quand adopter DDD ?
Pour aller plus loin




Domain Driven Design     Applying Domain-Driven
Eric Evans               Design and Patterns
                         Jimmy Nilsson

More Related Content

Similar to Fabien Bezagu : Présentation XP et DDD

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDDC CONSULTANTS
 
CompéTences Athome 080603
CompéTences Athome   080603CompéTences Athome   080603
CompéTences Athome 080603otbo
 
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
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...DC CONSULTANTS
 
Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009François Wauquier
 
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
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Le Rapid Prototyping, ça marche !
Le Rapid Prototyping, ça marche !Le Rapid Prototyping, ça marche !
Le Rapid Prototyping, ça marche !Catherine Verfaillie
 
Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010François Wauquier
 

Similar to Fabien Bezagu : Présentation XP et DDD (20)

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
Lmo02.ppt
 
CompéTences Athome 080603
CompéTences Athome   080603CompéTences Athome   080603
CompéTences Athome 080603
 
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
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
 
Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009Domain Driven Design - Agile Tour Lille 2009
Domain Driven Design - Agile Tour Lille 2009
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Projet+com02.ppt
Projet+com02.pptProjet+com02.ppt
Projet+com02.ppt
 
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
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Bref
BrefBref
Bref
 
Le Rapid Prototyping, ça marche !
Le Rapid Prototyping, ça marche !Le Rapid Prototyping, ça marche !
Le Rapid Prototyping, ça marche !
 
Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010
 

Fabien Bezagu : Présentation XP et DDD