Domain Driven Design François Wauquier Agile Tour Lille 2009 - Sfeir
<ul><li>Il est difficile de capturer le besoin présent </li></ul><ul><li>Il est impossible de capturer le besoin futur </l...
Manifeste Agile <ul><li>Les individus et les interactions plutôt que les processus et les outils </li></ul><ul><li>Un logi...
Accepter le changement <ul><li>Accueillir l'évolution des besoins, même tard dans le développement </li></ul><ul><li>Les g...
Design (Conception) <ul><li>‘ Big Design Up Front’  ≠ Conception Emergeante </li></ul><ul><li>Processus incrémental? </li>...
Domain Driven Design <ul><li>Eric Evans </li></ul><ul><li>‘ Tackling Complexity in the Heart of Software’ </li></ul><ul><l...
Ubiquitous Language <ul><li>Langage commun </li></ul><ul><li>Monsieur le client, Est-ce que ‘A’ veut dire la même chose qu...
Test Driven Development <ul><li>Test avant implémentation </li></ul><ul><li>Toujours </li></ul><ul><li>‘ Intention Reveali...
Refactoring <ul><li>Améliorer la lisibilité et/ou la maintenabilité du code </li></ul><ul><li>Toujours </li></ul><ul><li>R...
Test Driven Requirement <ul><li>Spécifications exécutables </li></ul><ul><li>Une story est définie par son parcours utilis...
Intégration continue <ul><li>Tests de code (TDD) </li></ul><ul><li>Tests fonctionnels (TDR) </li></ul>
Programmation en couches <ul><li>Presentation </li></ul><ul><li>Services </li></ul><ul><li>Domain </li></ul><ul><li>Infras...
Domain <ul><li>Entities </li></ul><ul><li>Value Objects </li></ul><ul><li>Factories </li></ul><ul><li>Repositories </li></ul>
Pair Programming <ul><li>Pilote </li></ul><ul><li>CoPilote </li></ul><ul><li>Partage de connaissances </li></ul><ul><li>Fo...
Workshop <ul><li>Equipe et client </li></ul><ul><li>Salle toujours dispo </li></ul><ul><li>Intense </li></ul><ul><li>Orien...
Organisation d’équipes <ul><li>‘ Shared Kernel’ </li></ul><ul><li>‘ Customers /Supplier Teams’ </li></ul><ul><li>‘ Conform...
En couches ou objet? <ul><li>class FooServiceImpl implements FooService { </li></ul><ul><li>     FooDao fooDao; </li></ul>...
Merci <ul><li>François Wauquier </li></ul><ul><li>Sfeir  on agile  way </li></ul><ul><li>Agile France </li></ul><ul><li>ht...
Prochain SlideShare
Chargement dans…5
×

Domain Driven Design - Agile Tour Lille 2009

881 vues

Publié le

Domain Driven Design

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
881
Sur SlideShare
0
Issues des intégrations
0
Intégrations
15
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Domain Driven Design - Agile Tour Lille 2009

  1. 1. Domain Driven Design François Wauquier Agile Tour Lille 2009 - Sfeir
  2. 2. <ul><li>Il est difficile de capturer le besoin présent </li></ul><ul><li>Il est impossible de capturer le besoin futur </li></ul><ul><li>Les méthodes agile exploitent le changement comme avantage compétitif en livrant fréquemment </li></ul>
  3. 3. Manifeste Agile <ul><li>Les individus et les interactions plutôt que les processus et les outils </li></ul><ul><li>Un logiciel qui fonctionne plutôt que une documentation détaillée </li></ul><ul><li>La collaboration avec le client plutôt que la négociation de contrats </li></ul><ul><li>Accepter le changement plutôt que suivre le plan </li></ul>
  4. 4. Accepter le changement <ul><li>Accueillir l'évolution des besoins, même tard dans le développement </li></ul><ul><li>Les gens de l'art et les développeurs doivent travailler  ensemble quotidiennement tout au long du projet </li></ul>
  5. 5. Design (Conception) <ul><li>‘ Big Design Up Front’ ≠ Conception Emergeante </li></ul><ul><li>Processus incrémental? </li></ul>
  6. 6. Domain Driven Design <ul><li>Eric Evans </li></ul><ul><li>‘ Tackling Complexity in the Heart of Software’ </li></ul><ul><li>‘ Model Driven Design’ </li></ul><ul><li>‘ Ubiquitus Language’ </li></ul><ul><li>‘ Supple Design’ </li></ul>
  7. 7. Ubiquitous Language <ul><li>Langage commun </li></ul><ul><li>Monsieur le client, Est-ce que ‘A’ veut dire la même chose que ‘B’ ? </li></ul><ul><li>‘ Domain Specific Language’ </li></ul>
  8. 8. Test Driven Development <ul><li>Test avant implémentation </li></ul><ul><li>Toujours </li></ul><ul><li>‘ Intention Revealing Interfaces’ </li></ul><ul><li>‘ Side-Effect-Free Functions’ </li></ul><ul><li>Contrat de méthode </li></ul>
  9. 9. Refactoring <ul><li>Améliorer la lisibilité et/ou la maintenabilité du code </li></ul><ul><li>Toujours </li></ul><ul><li>Rendre visible les concepts cachés </li></ul>
  10. 10. Test Driven Requirement <ul><li>Spécifications exécutables </li></ul><ul><li>Une story est définie par son parcours utilisateur et ses tests d’ acceptance client </li></ul><ul><li>Le test d’ acceptance est écrit par le client pendant l’itération </li></ul>
  11. 11. Intégration continue <ul><li>Tests de code (TDD) </li></ul><ul><li>Tests fonctionnels (TDR) </li></ul>
  12. 12. Programmation en couches <ul><li>Presentation </li></ul><ul><li>Services </li></ul><ul><li>Domain </li></ul><ul><li>Infrastrucure </li></ul><ul><li>Mais programmation par story! </li></ul>
  13. 13. Domain <ul><li>Entities </li></ul><ul><li>Value Objects </li></ul><ul><li>Factories </li></ul><ul><li>Repositories </li></ul>
  14. 14. Pair Programming <ul><li>Pilote </li></ul><ul><li>CoPilote </li></ul><ul><li>Partage de connaissances </li></ul><ul><li>Formation </li></ul><ul><li>Nommage de classes, méthodes </li></ul><ul><li>Suppression erreurs de typo, syntaxe, inattention </li></ul><ul><li>On demande au client ? </li></ul><ul><li>On fait un workshop ? </li></ul>
  15. 15. Workshop <ul><li>Equipe et client </li></ul><ul><li>Salle toujours dispo </li></ul><ul><li>Intense </li></ul><ul><li>Orienté solution </li></ul><ul><li>UML </li></ul><ul><li>‘ Paper Prototyping’ </li></ul><ul><li>Métaphore </li></ul>
  16. 16. Organisation d’équipes <ul><li>‘ Shared Kernel’ </li></ul><ul><li>‘ Customers /Supplier Teams’ </li></ul><ul><li>‘ Conformist’ </li></ul><ul><li>‘ Anticorruption Layer’ </li></ul><ul><li>‘ Separate Ways’ </li></ul>
  17. 17. En couches ou objet? <ul><li>class FooServiceImpl implements FooService { </li></ul><ul><li>     FooDao fooDao; </li></ul><ul><li>     void  bar (Foo foo){ </li></ul><ul><li>         foo.bar(); </li></ul><ul><li>         fooDao.saveOrUpdate(foo); </li></ul><ul><li>     } </li></ul><ul><li>     void setFooDao(FooDao fooDao){ </li></ul><ul><li>         this.fooDao = fooDao; </li></ul><ul><li>     } </li></ul><ul><li>} </li></ul>
  18. 18. Merci <ul><li>François Wauquier </li></ul><ul><li>Sfeir on agile way </li></ul><ul><li>Agile France </li></ul><ul><li>http://francois.wauquier.fr </li></ul>

×