Read Chapter 1, 2, 3, 9 and 14 to get a overview before dig deep into DDD
Chapter 1: Crunching knowledge
- Ingrediant of effective modeling
- Model and implementation are consistance
- Construct a language base on model
- Model should be knowledge rich
- Contain the behavior of enforced rules
- Distilling model
- May need to add or remove concepts
- Execrise and test the model we design
- Knowledge crunching
- Organise and abstract knowledge
- Continuous learning
- Knowledge on a project is fragmented
- Outsourcing deliver code but not knowledge
- Knowledge-rich design
- Extract hidden concept (Finding nouns in conversations)
- Need the programmers and everyone understand the nature of business rule
- To get feedback from business experts, programmer need to show them tech artifacts
- Extract hidden concept (Finding nouns in conversations)
Chapter 2: Communication and the use of language
- Model base communication is not limited to UML
- People who can understand both business and technical jargon become bottleneck of information flow
- A common language to solve this problem
- Use the model in speech
- Model is backbone of language
- Jargon contains ambiguities and contradictions.
- Lack the more subtle and active feature the developer created in code
- So we need to distillate jargons
- One team, one language
- Behaviour and constraints on model are not so easily illustrated
- UML can help
- but it is too time consuming
- UML cannot convey two of the most important aspects of a model
- The meaning of the concepts it represents
- What the object are meant to do
- UML can help
- Code generated tool are counter productive
- UML have their own limitation
- Comprehensive diagram fail to communicate or explain
- There are too much details which will overwhelm readers
- Use diagram to help communication and explain model, not describe the model
- Written design documents
- Code as design documents will overwhelm user with detail
- Code supply detail, document should complement the code and the talking
- Terms explained by design docuent should be used in language
- Model should underlie implementation, design and team communication
- Having separate models of these separate purposes poses a hazard
- One exception is explanatory models
- For education only, not need to nor suppose to be accurate
- No UML, not use for software design