+ All Categories
Home > Design > Domain Driven Design - Agile France 2010

Domain Driven Design - Agile France 2010

Date post: 11-Jul-2015
Category:
Upload: francois-wauquier
View: 611 times
Download: 0 times
Share this document with a friend
Popular Tags:
35
Domain Driven Design & Agilité ... Comprendre, Communiquer, Coder François Wauquier Nicolas Martignole
Transcript
Page 1: Domain Driven Design - Agile France 2010

Domain Driven Design & Agilité

... Comprendre, Communiquer, Coder

François WauquierNicolas Martignole

Page 2: Domain Driven Design - Agile France 2010

Il est difficile de capturer le besoin présent

Page 3: Domain Driven Design - Agile France 2010

Il est impossible de capturer le besoin futur

Page 4: Domain Driven Design - Agile France 2010

Les méthodes Agiles exploitent le changement comme avantage compétitif

en livrant fréquemment

Page 5: Domain Driven Design - Agile France 2010

Il etait une fois un projet

J'ai un besoinJe réalise un logiciel

Page 6: Domain Driven Design - Agile France 2010

• "Il n'y a pas de classe SiègeAvion"• "Je pense que ça se passe comme ça..."• "Mince l'API a changé"• "J'ai écrit un super framework de log"

Vis ma vie de développeur

Page 7: Domain Driven Design - Agile France 2010

• Je ne comprends rien à vos noms de classes

• Je dois terminer ma spec fonctionnelle pour parler au développeur

• Ce n'est pas ce que j'avais demandé

Vis ma vie de client

Page 8: Domain Driven Design - Agile France 2010

Retour sur le Manifeste Agile

Page 9: Domain Driven Design - Agile France 2010

Retour sur le manifeste Agile

• Les individus et les interactions plutôt que les processus et les outils

• Un logiciel qui fonctionne plutôt que une documentation détaillée

• La collaboration avec le client plutôt que la négociation de contrats

• Accepter le changement plutôt que suivre le plan

Page 10: Domain Driven Design - Agile France 2010

Accepter le changement

• Accueillir l'évolution des besoins, même tard dans le développement

• Les gens de l'art et les développeurs doivent travailler ensemble quotidiennement tout au long du projet

Page 11: Domain Driven Design - Agile France 2010

Design = Conception

• Modéliser• Représenter• Faire des choix• Créer un logiciel

Page 12: Domain Driven Design - Agile France 2010

Design & design

• ‘Big Design Up Front’ ≠ Conception Emergeante

• Reloadus ≠ Oryzus• Processus incrémental?

Page 13: Domain Driven Design - Agile France 2010

Domain Driven Design

Page 14: Domain Driven Design - Agile France 2010

Ubiquitous Language

• Langage commun• Monsieur le client, est-ce que ‘A’ veut

dire la même chose que ‘B’ ?• ‘Domain Specific Language’• le franglais ?

Page 15: Domain Driven Design - Agile France 2010

Core Domain

• (Re)définir le coeur d'une application• Not Invented Here syndrom

Fonctionnalités• Core• Supporting• Generic

Page 16: Domain Driven Design - Agile France 2010

Programmation en couches

• Presentation• Services• Domain• Infrastrucure

• Mais programmation Objet!• Mais programmation par Story!

Story

Page 17: Domain Driven Design - Agile France 2010

Domain Building Blocks

• Entities• Value Objects• Factories• Repositories

Page 18: Domain Driven Design - Agile France 2010

Crédit photo : AxelRD licence Commons Creatives 2.0 http://www.flickr.com/photos/axelrd/

Les Strategics Patterns

DDD et l'écosystème de votre projet

Page 19: Domain Driven Design - Agile France 2010

Votre projet et les autres équipes

• ‘Shared Kernel’• ‘Customers /Supplier Teams’• ‘Conformist’• ‘Anticorruption Layer’• ‘Separate Ways’

Confiance

Page 20: Domain Driven Design - Agile France 2010

Contrôle en amont

Amont / Aval

Page 21: Domain Driven Design - Agile France 2010

Flux incontrolable

Amont / Aval

Page 22: Domain Driven Design - Agile France 2010

Communication entre 2 "Bounded context"

Amont / Aval

Page 23: Domain Driven Design - Agile France 2010

Pratiques Agiles et DDD ?

Page 24: Domain Driven Design - Agile France 2010

Test Driven Development

• ‘Intention Revealing Interfaces’• ‘Side-Effect-Free Functions’• Contrat de méthode

Page 25: Domain Driven Design - Agile France 2010

Refactoring

• Rendre visible les concepts cachés

• Tailler le code, prendre en compte les évolutions

• Pattern Spécification

Page 26: Domain Driven Design - Agile France 2010

Test Driven Requirement

• Une story est définie par ses tests d'acceptance,écrit par le client ET un developeur avant/pendant l’itération

• Échanger• Créer un langage commun

Page 27: Domain Driven Design - Agile France 2010

Pair Programming

• Pilote + CoPilote

• Partage de connaissances• Nommage de classes, méthodes

• On demande au client ?• On fait un workshop ?

Page 28: Domain Driven Design - Agile France 2010

Workshop

• Equipe et client/PO/Expert• Intense• Orienté solution

• UML• ‘Paper Prototyping’• Métaphore

Page 29: Domain Driven Design - Agile France 2010

Vers la source du besoin

Page 30: Domain Driven Design - Agile France 2010

Un peu de code ?

Crédit photo : ignWallah http://www.flickr.com/photos/designwallah/ Licences Commons Creatives 2.0

Page 31: Domain Driven Design - Agile France 2010

sans DDDclass ShipServiceImpl implements ShipService{ ShipDao shipDao; void navigate(Ship ship){ //navigation rules... shipDao.saveOrUpdate(ship); } void setShipDao(ShipDao shipDao){ this.shipDao = shipDao; }}

class Ship{ }

Page 32: Domain Driven Design - Agile France 2010

avec DDDclass ShipService{ void navigate(Ship ship){ ship.navigate(); } }

@Entityclass Ship { void navigate(){ //navigation rules... save(); }}

Page 33: Domain Driven Design - Agile France 2010

Conclusion

• Developpeurs, comprenez votre client• Client, comprenez votre équipe• Parlez le même langage!

Page 34: Domain Driven Design - Agile France 2010

Domain Driven Design Eric Evans™

• ‘Tackling Complexity in the Heart of Software’

Page 35: Domain Driven Design - Agile France 2010

Merci

• François Wauquierhttp://blog.onagileway.fr@wokier

• Nicolas Martignole http://touilleur-express.fr@nmartignole


Recommended