Problem
To provide a software solution, we first have to understand the problem: what is the business domain that we are working in, what are the business goals, and what is the strategy for achieving them.
We used the ubiquitous language to gain a deep understanding of the business domain and its logic that we have to implement in software.
You learned to manage the complexity of the business problem by breaking it apart into bounded contexts. Each bounded context implements a single model of the busi‐ ness domain, aimed at solving a specific problem.
We discussed how to identify and categorize the building blocks of business domains: core, supporting, and generic subdomains. Table E-1 compares these three types of subdomains.
Table E-1. The three types of subdomains
Subdomain type | Competitive advantage | Complexity | Volatility | Implementation | Problem |
Core | Yes | High | High | In-house | Interesting |
Generic | No | High | Low | Buy/adopt | Solved |
Supporting | No | Low | Low | In-house/outsource | Obvious |