So time again for some education. This time I took the Domain Driven Design Immersion course that is held by Patrik Fredriksson (@weakreference) from Citerus.
I try to make a summery of the course here in my blog on a day to day basis.
Day 1
The day started with the usual round robin presentation. Each participant was asked about the expectations of the course. The list that came up was the following:
- Orientation
- “Methodology”, Approach
- Vocabulary
- Swedish / English
- Implementation
- GUI
- DB
- …
- Strategic design
- Distillation
- Interaction with domain experts
- In-depth studies
So what is DDD?
DDD is a set of principals that focus on exploring and implementing the core domain. It gives you tools to explore the model in a creative collaboration of the domain product. It gives you an ubiquitous language that are valid inside the bounded context. So that every one working inside this bouned context uses the same language, regardless if it a developer, tester, product owner or domain expert.
The day continued with modelling and coding exercises in groups. The domain are the logistics of cargo transportation (See Evans book for more details).
Some terminology from this day:
- Domain
- Business area that we are working in
- Model
- Our representation of the domain. It’s not the only one, other companies in the same area can have a completely different model
- Domain Expert
- The person that knows the domain
- Ubiquitous Language
- The language that we and the domain experts uses to understand the domain.
- Assertions
- A pattern for validation. Assert, either by exception or unit-tests, that the pre and post conditions are valid.
- Implicit-Explicit
- Making implicit things explicit ease the understanding of the domain model.
- Lighten Cognitive Load
- Ease the thinking by abstracting away some concepts by making them explicit
Anaemic Domain Model- Strive away from this!
- Design Whirlpool
- Domain language model exploration process
- Reference Scenario
- A specification, that either we or the domain expert creates, that describes how things should be used.
References:
Anaemic Domain Model
DDD Terms
Design Whirlpool
Disclaimer: This is my notes and my interpretation of the information. I can really recommend going the course.