18
Domain Driven Design François Wauquier Agile Tour Lille 2009 - Sfeir

Domain Driven Design - Agile Tour Lille 2009

Embed Size (px)

Citation preview

Page 1: Domain Driven Design - Agile Tour Lille 2009

Domain Driven Design

François Wauquier

Agile Tour Lille 2009 - Sfeir

Page 2: Domain Driven Design - Agile Tour Lille 2009

Il est difficile de capturer le besoin présent

Il est impossible de capturer le besoin futur

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

en livrant fréquemment

Page 3: Domain Driven Design - Agile Tour Lille 2009

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 4: Domain Driven Design - Agile Tour Lille 2009

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 5: Domain Driven Design - Agile Tour Lille 2009

Design (Conception)

‘Big Design Up Front’ ≠ Conception Emergeante

Processus incrémental?

Page 6: Domain Driven Design - Agile Tour Lille 2009

Domain Driven Design

Eric Evans

‘Tackling Complexity in the Heart of Software’

‘Model Driven Design’

‘Ubiquitus Language’

‘Supple Design’

Page 7: Domain Driven Design - Agile Tour Lille 2009

Ubiquitous Language

Langage commun

Monsieur le client, Est-ce que ‘A’ veut dire la même chose que ‘B’ ?

‘Domain Specific Language’

Page 8: Domain Driven Design - Agile Tour Lille 2009

Test Driven Development

Test avant implémentation

Toujours

‘Intention Revealing Interfaces’

‘Side-Effect-Free Functions’

Contrat de méthode

Page 9: Domain Driven Design - Agile Tour Lille 2009

Refactoring

Améliorer la lisibilité et/ou la maintenabilité du code

Toujours

Rendre visible les concepts cachés

Page 10: Domain Driven Design - Agile Tour Lille 2009

Test Driven Requirement

Spécifications exécutables

Une story est définie par son parcours utilisateur et ses tests d’ acceptance client

Le test d’ acceptance est écrit par le client pendant l’itération

Page 11: Domain Driven Design - Agile Tour Lille 2009

Intégration continue

Tests de code (TDD)

Tests fonctionnels (TDR)

Page 12: Domain Driven Design - Agile Tour Lille 2009

Programmation en couches

Presentation

Services

Domain

Infrastrucure

Mais programmation par story!

Page 13: Domain Driven Design - Agile Tour Lille 2009

Domain

Entities

Value Objects

Factories

Repositories

Page 14: Domain Driven Design - Agile Tour Lille 2009

Pair Programming

PiloteCoPilote

Partage de connaissancesFormationNommage de classes, méthodesSuppression erreurs de typo, syntaxe, inattention

On demande au client ?On fait un workshop ?

Page 15: Domain Driven Design - Agile Tour Lille 2009

Workshop

Equipe et clientSalle toujours dispoIntenseOrienté solution

UML‘Paper Prototyping’Métaphore

Page 16: Domain Driven Design - Agile Tour Lille 2009

Organisation d’équipes

‘Shared Kernel’

‘Customers /Supplier Teams’

‘Conformist’

‘Anticorruption Layer’

‘Separate Ways’

Page 17: Domain Driven Design - Agile Tour Lille 2009

En couches ou objet?

class FooServiceImpl implements FooService {    FooDao fooDao;    void bar(Foo foo){        foo.bar();        fooDao.saveOrUpdate(foo);    }    void setFooDao(FooDao fooDao){        this.fooDao = fooDao;    }}

Page 18: Domain Driven Design - Agile Tour Lille 2009

Merci

François Wauquier

Sfeir on agile way

Agile France

http://francois.wauquier.fr