DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
-
Upload
skills-matter -
Category
Technology
-
view
2.947 -
download
1
description
Transcript of DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
![Page 1: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/1.jpg)
The three amigos@gojkoadzic
![Page 2: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/2.jpg)
![Page 3: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/3.jpg)
![Page 4: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/4.jpg)
![Page 5: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/5.jpg)
![Page 6: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/6.jpg)
![Page 7: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/8.jpg)
… feature injection gives us right-size chunks
![Page 9: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/10.jpg)
...collaborative specifications cause things
to blow up quicker
![Page 11: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/11.jpg)
DDD advocates a ubiquitous language...
… but it's very hard to ensure consistency
![Page 12: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/12.jpg)
… evolve with specification workshops,
enforce with tests
![Page 13: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/14.jpg)
...BDD outside in boundaries
...TDD emergent design to flesh out details
![Page 15: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/16.jpg)
… use DDD building block patterns as guidelines
![Page 17: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/18.jpg)
… business oriented specifications do not
change
![Page 19: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/20.jpg)
… live specification can explain our models and
dynamics
![Page 21: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/22.jpg)
… bounded contexts help us coordinate changes
![Page 23: DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD](https://reader033.fdocuments.us/reader033/viewer/2022061209/548d959db4795956138b47d1/html5/thumbnails/23.jpg)
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