0
Thursday, March 1, 2012
Domain Driven Design                                 short Refresher                             FLOW3 Usergroup @AOE     ...
Thursday, March 1, 2012
The problem that we want to                                    solveThursday, March 1, 2012
The problemThursday, March 1, 2012
The problem                 ‣        We need to write an application that solves                          buissiness probl...
The problem                 ‣        We need to write an application that solves                          buissiness probl...
The problem                 ‣        We need to write an application that solves                          buissiness probl...
The problem                 ‣        We need to write an application that solves                          buissiness probl...
The problem                 ‣        We need to write an application that solves                          buissiness probl...
The problem                 ‣        We need to write an application that solves                          buissiness probl...
Thursday, March 1, 2012
Domain Model ?Thursday, March 1, 2012
Domain Model ?Thursday, March 1, 2012
Domain Model                 ‣        The domain model offers a simplified, abstract view of                          the p...
Domain Model                 ‣        The domain model offers a simplified, abstract view of                          the p...
Domain Model                 ‣        The domain model offers a simplified, abstract view of                          the p...
Domain Model                 ‣        The domain model offers a simplified, abstract view of                          the p...
Domain Model                 ‣        The domain model offers a simplified, abstract view of                          the p...
Domain Model                 ‣        The domain model offers a simplified, abstract view of                          the p...
Domain Model                 ‣        a common language should be used to describe the                          problem   ...
Domain Model                 ‣        a common language should be used to describe the                          problem   ...
Domain Model                 ‣        The Domain Model can be represented as Text, Speech                          or Code...
Domain Model                 ‣        The Domain Model can be represented as Text, Speech                          or Code...
Domain Model                 ‣        The Domain Model can be represented as Text, Speech                          or Code...
Domain Model                 ‣        The Domain Model can be represented as Text, Speech                          or Code...
Thursday, March 1, 2012
UMLThursday, March 1, 2012
UML                 •UML is perfect to describe, scetch or discuss a domain                 model.                        ...
UML - Class DiagramThursday, March 1, 2012
UML - Class Diagram                 ‣        class diagram describes the attributes and operations of                     ...
UML - Class Diagram                 ‣        class diagram describes the attributes and operations of                     ...
UML - Class Diagram                 ‣        class diagram describes the attributes and operations of                     ...
UML - Class Diagram - Examples                 ‣         classes with:                           ‣ attributes (<name>:<typ...
UML - Object Diagram                 ‣         Depend on class diagrams                 ‣        „Snapshot“ of instances a...
UML - Sequence Diagram                 ‣         Depend on class diagrams                 ‣         Perfect to explain how...
Thursday, March 1, 2012
Domain Driven Design                                BasicsThursday, March 1, 2012
Domain Driven Design - Basics                          1. Layered Architecture                          2. Common Building...
DDD - Layered ArchitectureThursday, March 1, 2012
DDD - Layered Architecture                                                                Logging                         ...
DDD - Layered Architecture                                 Domain Model             Core Business Logic                   ...
DDD - Layered Architecture                              Application Layer (thin)   Controller / (Export/Import)           ...
DDD - Layered Architecture           User /             Application Layer (thin)   Controller / (Export/Import)         Ot...
DDD - Layered Architecture                                                         Templates / Presentation Objects       ...
Thursday, March 1, 2012
Building BlocksThursday, March 1, 2012
Building BlocksThursday, March 1, 2012
DDD - Building BlocksThursday, March 1, 2012
DDD - Building Blocks                          EntitiesThursday, March 1, 2012
DDD - Building Blocks                          Entities                          ValuesThursday, March 1, 2012
DDD - Building Blocks                          Entities                          Values                          ServicesT...
DDD - Building Blocks                          Entities      Repository                          Values                   ...
DDD - Building Blocks                          Entities      Repository                          Values         Factory   ...
DDD - Building BlocksThursday, March 1, 2012
DDD - Building Blocks                          EntitiesThursday, March 1, 2012
DDD - Building Blocks                               Entities                          Object which is primary defined by it...
DDD - Building Blocks                                Entities                          Object which is primary defined by i...
DDD - Building Blocks                                 Entities                          Object which is primary defined by ...
DDD - Building Blocks                                 Entities                          Object which is primary defined by ...
DDD - Building BlocksThursday, March 1, 2012
DDD - Building Blocks                          ValueThursday, March 1, 2012
DDD - Building Blocks                                 Value                          describe the characteristic of a thin...
DDD - Building Blocks                                 Value                          describe the characteristic of a thin...
DDD - Building Blocks                                 Value                          describe the characteristic of a thin...
DDD - Building Blocks                                 Value                          describe the characteristic of a thin...
DDD - Building Blocks                                 Value                          describe the characteristic of a thin...
DDD - Building BlocksThursday, March 1, 2012
DDD - Building Blocks                          ServiceThursday, March 1, 2012
DDD - Building Blocks                                Service                          “...if a single process or transform...
DDD - Building Blocks                                 Service                          “...if a single process or transfor...
DDD - Building Blocks                                Service                          “...if a single process or transform...
DDD - Building Blocks                                Service                          “...if a single process or transform...
DDD - Building Blocks                                Service                          “...if a single process or transform...
DDD - Building Blocks                                   Service                          “...if a single process or transf...
DDD - Building BlocksThursday, March 1, 2012
DDD - Building Blocks                          RepositoryThursday, March 1, 2012
DDD - Building Blocks                             Repository                          For each object where you need globa...
DDD - Building Blocks                             Repository                          For each object where you need globa...
DDD - Building Blocks                             Repository                          For each object where you need globa...
DDD - Building Blocks                              Repository                          For each object where you need glob...
DDD - Building BlocksThursday, March 1, 2012
DDD - Building Blocks                          FactoryThursday, March 1, 2012
DDD - Building Blocks                               Factory                          A factory hides logic for building ob...
DDD - Building Blocks                                Factory                          A factory hides logic for building o...
DDD - Building Blocks                               Factory                          A factory hides logic for building ob...
DDD - Building Blocks                               Factory                          A factory hides logic for building ob...
DDD - Building Blocks                               Factory                          A factory hides logic for building ob...
Thursday, March 1, 2012
Find a Supple DesignThursday, March 1, 2012
Find a Supple Design                               vs.Thursday, March 1, 2012
Supple Design „Speak in Domain Language“Thursday, March 1, 2012
Supple Design „Speak in Domain Language“                  ‣       Try to explain scenarios loud with the use of the model ...
Supple Design „Speak in Domain Language“                  ‣       Try to explain scenarios loud with the use of the model ...
Supple Design „Reduce Associations“Thursday, March 1, 2012
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design „Reduce Associations“                 ‣        Avoid many association and use only a minimum of             ...
Supple Design - AggregatesThursday, March 1, 2012
Supple Design - Aggregates                  ‣       An aggregate is a group of objects that belong together               ...
Supple Design - Aggregates                  ‣       An aggregate is a group of objects that belong together               ...
Supple Design - „Explicit constrains“Thursday, March 1, 2012
Supple Design - „Explicit constrains“                ‣         name and make constrains explicit. That gives it a name    ...
Supple Design - „Explicit constrains“                ‣         name and make constrains explicit. That gives it a name    ...
Supple Design - „Specifications“Thursday, March 1, 2012
Supple Design - „Specifications“                ‣         you can use „Specifications“ to explicit express rulesThursday, M...
Supple Design - „Specifications“                ‣         you can use „Specifications“ to explicit express rules           ...
Supple Design - „Specifications“                ‣         you can use „Specifications“ to explicit express rules           ...
Supple Design - „Specifications“                ‣         you can use „Specifications“ to explicit express rules           ...
Supple Design - Modules                          If your model tells a story a module is a chapterThursday, March 1, 2012
Supple Design - Modules                          Customer                              Order                            Cu...
Supple Design - Modules                          Customer                                     Order                       ...
Supple Design - Modules                          Customer                                     Order                       ...
Supple Design - What elseThursday, March 1, 2012
Supple Design - What else                 • Intention Revalving InterfacesThursday, March 1, 2012
Supple Design - What else                 • Intention Revalving Interfaces                 • standalone classes where poss...
Supple Design - What else                 • Intention Revalving Interfaces                 • standalone classes where poss...
Supple Design - What else                 • Intention Revalving Interfaces                 • standalone classes where poss...
Thank you for great year!Thursday, March 1, 2012
Thank you for great year!                                  ThanksThursday, March 1, 2012
Upcoming SlideShare
Loading in...5
×

Domain Driven Design

1,318

Published on

Short Domain Driven Design and UML Refresher

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,318
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
48
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Domain Driven Design"

  1. 1. Thursday, March 1, 2012
  2. 2. Domain Driven Design short Refresher FLOW3 Usergroup @AOE by Daniel PötzingerThursday, March 1, 2012
  3. 3. Thursday, March 1, 2012
  4. 4. The problem that we want to solveThursday, March 1, 2012
  5. 5. The problemThursday, March 1, 2012
  6. 6. The problem ‣ We need to write an application that solves buissiness problemsThursday, March 1, 2012
  7. 7. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOPThursday, March 1, 2012
  8. 8. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design:Thursday, March 1, 2012
  9. 9. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: ‣ understanding the problem and the buissinessThursday, March 1, 2012
  10. 10. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: ‣ understanding the problem and the buissiness ‣ find understandable class-structureThursday, March 1, 2012
  11. 11. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: ‣ understanding the problem and the buissiness ‣ find understandable class-structure ‣ build maintainable software, that can be adjusted easy when the buissiness changesThursday, March 1, 2012
  12. 12. Thursday, March 1, 2012
  13. 13. Domain Model ?Thursday, March 1, 2012
  14. 14. Domain Model ?Thursday, March 1, 2012
  15. 15. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain ModelThursday, March 1, 2012
  16. 16. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Domain ModelThursday, March 1, 2012
  17. 17. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Domain Model ImplementatorsThursday, March 1, 2012
  18. 18. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Domain Model ImplementatorsThursday, March 1, 2012
  19. 19. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Knowledge Crunching Domain Model & Analysis ImplementatorsThursday, March 1, 2012
  20. 20. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Knowledge Crunching Domain Model & Analysis ImplementatorsThursday, March 1, 2012
  21. 21. Domain Model ‣ a common language should be used to describe the problem Ubiquitous Domain Language Uses terms Domain Experts Both understand Domain Model ImplementatorsThursday, March 1, 2012
  22. 22. Domain Model ‣ a common language should be used to describe the problem Ubiquitous Domain Language Uses terms Domain Experts Both understand Domain Model ImplementatorsThursday, March 1, 2012
  23. 23. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... Domain ModelThursday, March 1, 2012
  24. 24. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... A customer can have multiple contracts. The customer gets monthly bills to his Text billing address. Domain ModelThursday, March 1, 2012
  25. 25. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... A customer can have multiple contracts. The customer gets monthly bills to his Text billing address. Domain Model UMLThursday, March 1, 2012
  26. 26. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... A customer can have multiple contracts. The customer gets monthly bills to his Text billing address. Domain Model UML CodeThursday, March 1, 2012
  27. 27. Thursday, March 1, 2012
  28. 28. UMLThursday, March 1, 2012
  29. 29. UML •UML is perfect to describe, scetch or discuss a domain model. UML Structural Diagrams Behavioral Diagrams Class Diagrams Object Diagrams ... Sequence Diagrams Use Case Diagram ...Thursday, March 1, 2012
  30. 30. UML - Class DiagramThursday, March 1, 2012
  31. 31. UML - Class Diagram ‣ class diagram describes the attributes and operations of a class and also the constraints imposed on the system.Thursday, March 1, 2012
  32. 32. UML - Class Diagram ‣ class diagram describes the attributes and operations of a class and also the constraints imposed on the system. ‣ Can be directly mapped to code (OOP)Thursday, March 1, 2012
  33. 33. UML - Class Diagram ‣ class diagram describes the attributes and operations of a class and also the constraints imposed on the system. ‣ Can be directly mapped to code (OOP) ‣ Popular use-case is to explain conceptual important parts => keep it simple („draw it on a paper“)Thursday, March 1, 2012
  34. 34. UML - Class Diagram - Examples ‣ classes with: ‣ attributes (<name>:<type> ) ‣ methods ‣ annotations and properties ‣ Associations ‣ Multiplicity, roles ‣ Traversal ‣ Aggregation, Composition ‣ Inheritance, Dependency ‣ Qualifier ‣ Association ClassThursday, March 1, 2012
  35. 35. UML - Object Diagram ‣ Depend on class diagrams ‣ „Snapshot“ of instances and theire relations ‣ Perfect to understand object behaviour and their relationship from practical perspectiveThursday, March 1, 2012
  36. 36. UML - Sequence Diagram ‣ Depend on class diagrams ‣ Perfect to explain how objects work together to „fulfill“ a use-case. ‣ useful to detect weakness and improvements in your designThursday, March 1, 2012
  37. 37. Thursday, March 1, 2012
  38. 38. Domain Driven Design BasicsThursday, March 1, 2012
  39. 39. Domain Driven Design - Basics 1. Layered Architecture 2. Common Building Blocks and Rules 3. Find a „supple design“ 4. See the big pictureThursday, March 1, 2012
  40. 40. DDD - Layered ArchitectureThursday, March 1, 2012
  41. 41. DDD - Layered Architecture Logging Persitence Infrastructure / System Speaking to Webservices File FormatsThursday, March 1, 2012
  42. 42. DDD - Layered Architecture Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File FormatsThursday, March 1, 2012
  43. 43. DDD - Layered Architecture Application Layer (thin) Controller / (Export/Import) Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File FormatsThursday, March 1, 2012
  44. 44. DDD - Layered Architecture User / Application Layer (thin) Controller / (Export/Import) Other Apps Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File FormatsThursday, March 1, 2012
  45. 45. DDD - Layered Architecture Templates / Presentation Objects View User / Application Layer (thin) Controller / (Export/Import) Other Apps Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File FormatsThursday, March 1, 2012
  46. 46. Thursday, March 1, 2012
  47. 47. Building BlocksThursday, March 1, 2012
  48. 48. Building BlocksThursday, March 1, 2012
  49. 49. DDD - Building BlocksThursday, March 1, 2012
  50. 50. DDD - Building Blocks EntitiesThursday, March 1, 2012
  51. 51. DDD - Building Blocks Entities ValuesThursday, March 1, 2012
  52. 52. DDD - Building Blocks Entities Values ServicesThursday, March 1, 2012
  53. 53. DDD - Building Blocks Entities Repository Values ServicesThursday, March 1, 2012
  54. 54. DDD - Building Blocks Entities Repository Values Factory ServicesThursday, March 1, 2012
  55. 55. DDD - Building BlocksThursday, March 1, 2012
  56. 56. DDD - Building Blocks EntitiesThursday, March 1, 2012
  57. 57. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction".Thursday, March 1, 2012
  58. 58. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". • often has some ID valueThursday, March 1, 2012
  59. 59. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". • often has some ID value • continuity through livecycleThursday, March 1, 2012
  60. 60. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". • often has some ID value • continuity through livecycle • keep class definition simple / focus on live cycleThursday, March 1, 2012
  61. 61. DDD - Building BlocksThursday, March 1, 2012
  62. 62. DDD - Building Blocks ValueThursday, March 1, 2012
  63. 63. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ...Thursday, March 1, 2012
  64. 64. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing )Thursday, March 1, 2012
  65. 65. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) • Often passed as argumentsThursday, March 1, 2012
  66. 66. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) • Often passed as arguments • No Identity gives freedomThursday, March 1, 2012
  67. 67. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) • Often passed as arguments • No Identity gives freedom • should be Immutable!Thursday, March 1, 2012
  68. 68. DDD - Building BlocksThursday, March 1, 2012
  69. 69. DDD - Building Blocks ServiceThursday, March 1, 2012
  70. 70. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface."Thursday, March 1, 2012
  71. 71. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • statelessThursday, March 1, 2012
  72. 72. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objectsThursday, March 1, 2012
  73. 73. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects • defined in common domain languageThursday, March 1, 2012
  74. 74. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects • defined in common domain language • do not mix with other layersThursday, March 1, 2012
  75. 75. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects • defined in common domain language • do not mix with other layers Examples: FundTransferService / PackageRoutingService / SimCardActivationServiceThursday, March 1, 2012
  76. 76. DDD - Building BlocksThursday, March 1, 2012
  77. 77. DDD - Building Blocks RepositoryThursday, March 1, 2012
  78. 78. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface.Thursday, March 1, 2012
  79. 79. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. • typicaly methods for add() remove() and find*()Thursday, March 1, 2012
  80. 80. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. • typicaly methods for add() remove() and find*() •find* methods communicate design decisions about how to access the dataThursday, March 1, 2012
  81. 81. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. • typicaly methods for add() remove() and find*() •find* methods communicate design decisions about how to access the data • ..reconstitution?Thursday, March 1, 2012
  82. 82. DDD - Building BlocksThursday, March 1, 2012
  83. 83. DDD - Building Blocks FactoryThursday, March 1, 2012
  84. 84. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates!Thursday, March 1, 2012
  85. 85. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters)Thursday, March 1, 2012
  86. 86. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) • not allowed to give wrong results (exceptions)Thursday, March 1, 2012
  87. 87. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) • not allowed to give wrong results (exceptions) • entity vs. value factoriesThursday, March 1, 2012
  88. 88. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) • not allowed to give wrong results (exceptions) • entity vs. value factories • (can also be used for reconstitution )Thursday, March 1, 2012
  89. 89. Thursday, March 1, 2012
  90. 90. Find a Supple DesignThursday, March 1, 2012
  91. 91. Find a Supple Design vs.Thursday, March 1, 2012
  92. 92. Supple Design „Speak in Domain Language“Thursday, March 1, 2012
  93. 93. Supple Design „Speak in Domain Language“ ‣ Try to explain scenarios loud with the use of the model and the ubiquitous languageThursday, March 1, 2012
  94. 94. Supple Design „Speak in Domain Language“ ‣ Try to explain scenarios loud with the use of the model and the ubiquitous language ‣ Try to explain scenarios more simple/better (find easier ways to say what you need to say). => That helps refining the model.Thursday, March 1, 2012
  95. 95. Supple Design „Reduce Associations“Thursday, March 1, 2012
  96. 96. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability!Thursday, March 1, 2012
  97. 97. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectionalThursday, March 1, 2012
  98. 98. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?)Thursday, March 1, 2012
  99. 99. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc.Thursday, March 1, 2012
  100. 100. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. ‣ find and use aggregatesThursday, March 1, 2012
  101. 101. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. ‣ find and use aggregates => Intuition and RefactoringThursday, March 1, 2012
  102. 102. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. ‣ find and use aggregates => Intuition and Refactoring ... country / president example ...Thursday, March 1, 2012
  103. 103. Supple Design - AggregatesThursday, March 1, 2012
  104. 104. Supple Design - Aggregates ‣ An aggregate is a group of objects that belong together (a group of individual objects that represents a unit)Thursday, March 1, 2012
  105. 105. Supple Design - Aggregates ‣ An aggregate is a group of objects that belong together (a group of individual objects that represents a unit) ‣ ...car example... (root, boundary, invariants )Thursday, March 1, 2012
  106. 106. Supple Design - „Explicit constrains“Thursday, March 1, 2012
  107. 107. Supple Design - „Explicit constrains“ ‣ name and make constrains explicit. That gives it a name you can talk about and the code is more understandableThursday, March 1, 2012
  108. 108. Supple Design - „Explicit constrains“ ‣ name and make constrains explicit. That gives it a name you can talk about and the code is more understandable Bucket exampleThursday, March 1, 2012
  109. 109. Supple Design - „Specifications“Thursday, March 1, 2012
  110. 110. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rulesThursday, March 1, 2012
  111. 111. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules examples:Thursday, March 1, 2012
  112. 112. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules examples: „InventoryDelinquentSpecification“->isSatisfied()Thursday, March 1, 2012
  113. 113. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules examples: „InventoryDelinquentSpecification“->isSatisfied() „GoldenCustomerSpecification“->isSatisfied($customer)Thursday, March 1, 2012
  114. 114. Supple Design - Modules If your model tells a story a module is a chapterThursday, March 1, 2012
  115. 115. Supple Design - Modules Customer Order Customer Contract Basket Order OrderItems Product AbstractProduct PrepaidThursday, March 1, 2012
  116. 116. Supple Design - Modules Customer Order Customer Contract Basket Order OrderItems Product AbstractProduct • group by meaning in the domain PrepaidThursday, March 1, 2012
  117. 117. Supple Design - Modules Customer Order Customer Contract Basket Order OrderItems Product AbstractProduct • group by meaning in the domain • loose coupling between modules PrepaidThursday, March 1, 2012
  118. 118. Supple Design - What elseThursday, March 1, 2012
  119. 119. Supple Design - What else • Intention Revalving InterfacesThursday, March 1, 2012
  120. 120. Supple Design - What else • Intention Revalving Interfaces • standalone classes where possibleThursday, March 1, 2012
  121. 121. Supple Design - What else • Intention Revalving Interfaces • standalone classes where possible • closure of operationsThursday, March 1, 2012
  122. 122. Supple Design - What else • Intention Revalving Interfaces • standalone classes where possible • closure of operations • side effect free functionsThursday, March 1, 2012
  123. 123. Thank you for great year!Thursday, March 1, 2012
  124. 124. Thank you for great year! ThanksThursday, March 1, 2012
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×