ddd exchange 2010: gojko adzic on ddd, tdd, bdd

24
The three amigos @gojkoadzic

Upload: skills-matter

Post on 14-Dec-2014

2.949 views

Category:

Technology


1 download

DESCRIPTION

Domain Driven Design is often misunderstood as something that advocates a lot of upfront design and at odds with the evolutionary design principles of test driven development. In this presentation, Gojko Adzic will talk about reconciling the two approaches and getting the best of both worlds, and how DDD ideas play a crucial role in behaviour driven development.

TRANSCRIPT

Page 1: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

The three amigos@gojkoadzic

Page 2: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
Page 3: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
Page 4: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
Page 5: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
Page 6: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
Page 7: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Effective models require a bigger picture

… but KISS and YAGNI say don't... avoid BDUF

Page 8: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

… feature injection gives us right-size chunks

Page 9: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Things can blow up during modelling...

… but domain experts often can't decide on scope

Page 10: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

...collaborative specifications cause things

to blow up quicker

Page 11: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

DDD advocates a ubiquitous language...

… but it's very hard to ensure consistency

Page 12: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

… evolve with specification workshops,

enforce with tests

Page 13: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Domain experts don't really understand low level

stuff

.... but where do we stop working with them?

Page 14: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

...BDD outside in boundaries

...TDD emergent design to flesh out details

Page 15: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Emergent design leads to too much inconsistency

… especially on big teams and across boundaries

Page 16: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

… use DDD building block patterns as guidelines

Page 17: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Effective iterative design requires effective regression testing

… but unit tests are bound to a particular design

Page 18: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

… business oriented specifications do not

change

Page 19: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

We need to capture our models and what they

mean

… but code is too low level and UML gets old very quickly...

Page 20: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

… live specification can explain our models and

dynamics

Page 21: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Emergent design advocates constant

refactoring

… but in larger teams, refactoring cross cutting concerns can cause a ton of issues

Page 22: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

… bounded contexts help us coordinate changes

Page 23: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Recipe for success

Use strategic design to decide what to build Use feature injection to get the scope Evolve a ubiquitous language with specification

workshops Establish guidelines with collaborative high-

level domain design TDD design below, respecting DDD guidelines Use context mapping to facilitate cross team

collaboration

Page 24: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD

Questions?

http://gojko.net

@gojkoadzic

[email protected]