Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Agile development and domain driven design


Published on

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.

Published in: Technology

Agile development and domain driven design

  1. 1. Agile development and Domain Driven Design Jacopo Romei
  2. 2. Ego sliding  Jacopo Romei  PHP since 1999  IT CEO in the past  Freelance agile coach  Jacopo Romei,
  3. 3. Agile development A family of empirical methodologies Jacopo Romei,
  4. 4. Agile Manifesto  Individuals over tools  Working software over documentation  Customer collaboration over contract deals  Accept change over following plans Jacopo Romei,
  5. 5. Domain What does inspire our solutions? Jacopo Romei,
  6. 6. Driven Where do we find our solutions? Jacopo Romei,
  7. 7. Design What does provide us with solutions? Jacopo Romei,
  8. 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,
  9. 9. Manouvrability Agility means manouvrability Jacopo Romei,
  10. 10. Shared values  Courage  Respect Jacopo Romei,
  11. 11. Shared values  Courage  Simplicity is the art of  maximizing the amount   Respect of work not done  Simplicity Jacopo Romei,
  12. 12. Shared values  Courage  Respect  Simplicity  Communication  Feedback Jacopo Romei,
  13. 13. Shared values  Courage  Who  Respect  Which  Simplicity  How  Why  Communication  Feedback Jacopo Romei,
  14. 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,
  15. 15. Don't ossify, please Supple, knowledge­rich design Jacopo Romei,
  16. 16. Orthogonality •Orthogonality is a system design property facilitating  feasibility and compactness of complex designs. • Orthogonality guarantees that modifying the technical  effect produced by a component of a system neither  creates nor propagates side effects to other components of  the system.  •Emergent behavior of a system should be controlled strictly  by formal definitions of its logic and not by side effects  resulting from poor integratio •Orthogonality reduces testing and development time Jacopo Romei,
  17. 17. Shared required practices  Iterative and incremental development  Close relationship with domain experts  Refactoring Jacopo Romei,
  18. 18. UX & Agile Methodology to write user stories Jacopo Romei,
  19. 19. DDD & Agile Methodology to (let emerge) design Jacopo Romei,
  20. 20. Ubiquitous language One jargon to rule them all Jacopo Romei,
  21. 21. Ubiquitous language  Model as backbone of language in  Code  Diagrams  Writings  Speech Jacopo Romei,
  22. 22. Ubiquitous language  Refactor  Classes  Methods  Modules  Reflect  Real world entities  Confusion resolution in conversations  Changes in language as changes in model Jacopo Romei,
  23. 23. Example Jacopo Romei,
  24. 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,
  25. 25. Documentation Agile methodologies value working software over  comprehensive documentation Jacopo Romei,
  26. 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,
  27. 27. Ubiquitous documentation UML provides some documentation Code provides some documentation Ubiquitous language provides some documentation Jacopo Romei,
  28. 28. Hands-on modelers Everyone who writes code must feel responsible for  the model. Jacopo Romei,
  29. 29. Hands-on modelers Everyone who writes code must feel responsible for  the model. Everyone contributing to the model must touch the  code. Jacopo Romei,
  30. 30. Hands-on modelers Everyone who writes code must feel responsible for  the model. Everyone contributing to the model must touch the  code.  That's a DDD team. That's an agile team. Jacopo Romei,
  31. 31. Modeling paradigm Object oriented programming is good to model the  way we think about things. OO community  developed lots of critically meaningful concepts. PHP community: WAKE UP! Jacopo Romei,
  32. 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,
  33. 33. Reflection Software must reflect domain model Jacopo Romei,
  34. 34. Ubiquity Software must reflect ubiquitous language Jacopo Romei,
  35. 35. Building blocks  Layered architecture  Services  Entities  Value Objects  Factories  Aggregates  Repositories Jacopo Romei,
  36. 36. Layers  User interface  Smart UI vs. Model Driven Design Jacopo Romei,
  37. 37. Layers  User interface  Smart UI vs. Model Driven Design  Application  a.k.a. Controller Jacopo Romei,
  38. 38. Layers  User interface  Smart UI vs. Model Driven Design  Application  a.k.a. Controller  Domain/Model layer Jacopo Romei,
  39. 39. Layers  User interface  Smart UI vs. Model Driven Design  Application  a.k.a. Controller  Domain/Model layer  Infrastructure Jacopo Romei,
  40. 40. Frameworks Free choice, but domain layer must be preserved. Jacopo Romei,
  41. 41. The end, the beginning No one said agile was easy. No one said it was a standalone concept. Jacopo Romei,
  42. 42. What's next Agile Day 2009 Jacopo Romei,
  43. 43. Jacopo Romei jacopo [at] skype: jacoporomei Jacopo Romei,