Agile development is getting every year more popular around the world while a less known methodology is the Domain Driven Design (DDD) which defines a few rules to be followed to empower the agile team to raise communication effectiveness. Agile methods and DDD are perfectly matching and used together can solve many problems we are all too sadly used to.
2. Ego sliding
Jacopo Romei
PHP since 1999
IT CEO in the past
Freelance agile coach
http://www.sviluppoagile.it/
Jacopo Romei, http://www.sviluppoagile.it/
3. Agile development
A family of empirical methodologies
Jacopo Romei, http://www.sviluppoagile.it/
4. Agile Manifesto
Individuals over tools
Working software over documentation
Customer collaboration over contract deals
Accept change over following plans
Jacopo Romei, http://www.sviluppoagile.it/
5. Domain
What does inspire our solutions?
Jacopo Romei, http://www.sviluppoagile.it/
6. Driven
Where do we find our solutions?
Jacopo Romei, http://www.sviluppoagile.it/
7. Design
What does provide us with solutions?
Jacopo Romei, http://www.sviluppoagile.it/
8. Design vs. Process
Design principles
Messy reality
DDD is a way to cope with the mess
Agile Dev is a way to cope with the mess
Jacopo Romei, http://www.sviluppoagile.it/
9. Manouvrability
Agility means manouvrability
Jacopo Romei, http://www.sviluppoagile.it/
11. Shared values
Courage Simplicity is the art of
maximizing the amount
Respect
of work not done
Simplicity
Jacopo Romei, http://www.sviluppoagile.it/
13. Shared values
Courage Who
Respect Which
Simplicity How
Why
Communication
Feedback
Jacopo Romei, http://www.sviluppoagile.it/
14. XP and good design
Refactoring tries to avoid overengineering
Refactoring can develop underengineering
XP works best with good designers
DDD helps developers being good designers
Jacopo Romei, http://www.sviluppoagile.it/
17. Shared required practices
Iterative and incremental development
Close relationship with domain experts
Refactoring
Jacopo Romei, http://www.sviluppoagile.it/
18. UX & Agile
Methodology to write user stories
Jacopo Romei, http://www.sviluppoagile.it/
22. Ubiquitous language
Refactor
Classes
Methods
Modules
Reflect
Real world entities
Confusion resolution in conversations
Changes in language as changes in model
Jacopo Romei, http://www.sviluppoagile.it/
23. Example
Jacopo Romei, http://www.sviluppoagile.it/
24. Short example
“If we give the Routing Service an origin,
destination and arrival time, it can look up the
stops the cargo will have to make and well... stick
them in the database”
“The origin, destination and so on... it all feeds into
Routing Service and we get back an Itinerary
that has everything we need it”
“A Routing Service finds an Itinerary that satisfies
a Route Specification”
Jacopo Romei, http://www.sviluppoagile.it/
26. UML is not enough
UML doesn't convoy the concepts behind a model
UML doesn't convoy what objects are meant to do
Jacopo Romei, http://www.sviluppoagile.it/
32. Deadly divide
Model can be absent (brrr...)
Model can be overdesigned
Model can be detached from the domain
Suspect correctness
Hard to maintain
Difficult to understand
Jacopo Romei, http://www.sviluppoagile.it/
33. Reflection
Software must reflect domain model
Jacopo Romei, http://www.sviluppoagile.it/