SlideShare une entreprise Scribd logo
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

Contenu connexe

Similaire à 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 testable
Association 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 BDD
DC CONSULTANTS
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
Gregory Boissinot
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
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 ISIMA
Loic 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 2009
François Wauquier
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
Mehdi Mehni
 
Projet+com02.ppt
Projet+com02.pptProjet+com02.ppt
Projet+com02.ppt
Yann-Gaël Guéhéneuc
 
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
Cedric Vidal
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
Ptidej Team
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG 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 - TDD
Xavier 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 Virtualization
Denodo
 
Bref
BrefBref
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 2010
François Wauquier
 

Similaire à 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