Modeling Session, 2018-03-15
Agenda
Est time | Purpose | Action | Note taker |
3mns | Effectiveness & efficiency | Review this proposed agenda. | Nimisha |
12mns | Context-switch into DDD mindset; | Read and discuss the following pages from DDD Reference:
| Gabe |
20mns | Identify Core Domains |
| Robert |
20mns | Identify Segregated Core |
|
|
5mn | Break | ||
40mns | Identify High-level Bounded Contexts |
| Dave |
20mns | Context Map |
|
|
5mn | Break | ||
30mns | Components in Bounded Contexts |
|
|
20mns | Assess Model |
|
|
Bounded Context Fitness Functions
References: https://vimeo.com/113515335, http://verraes.net/2014/02/domain-driven-design-basics/, https://www.youtube.com/watch?v=ez9GWESKG4I
Fitness Functions
Technical authority for a specific business capability; with all data and business rules within the context
Autonomous
Share contracts/schema, not class or type
Interactions controlled by policy
Boundaries
Explicit boundaries
Linguistic boundaries
Domain expert boundaries
Data
Flow
Ownership
Uniqueness
May consider, but may be wrong
Existing business process steps
Existing organizational boundaries
Non-Fitness Functions
If only functionality - then just a function
If only data - then just an entity or database
Notes
Identifying the Core
Refactoring to segregate the core feels very risky
Probably a lot of additional cost, without a clear cost savings
Isn't that true for the whole thing?
Hard to see and feel the value immediately
Hard to see the value until you have 100% identified the core
Abstract core
Didn't remember this part from the book, but like this
Having a clear set of base classes means we don't have to move the core classes
Domain model != data model
Can a single bounded context have both core and not core in it?
We don't think so...
There are certain generic implementation details that can be abstracted away from callers
In that case you have supporting things that are not "core"
Are data frames and matrices in our bounded context?
Can we think of a concrete example?
Course discovery is a domain
Search is a bounded context
What about the ORM for elastic search?
No - we wouldn't even talk about this
They seem to indicate that whole domains are either core, supporting or generic
Bounded Contexts
Core Domains:
Authoring learning component
Launch Course Run
Rich ecosystem of learning components
Revenue sharing
Learner consume content to achieve learning outcomes
Determining learning pathway
Supporting Domains
Course Administration