Understanding Domains, Subdomains, and Core Domains in Domain-Driven Design
This article explains the distinction between technical and business domains, defines domains and subdomains, describes how to identify core, generic, and supporting subdomains, and outlines practical methods such as domain vision statements and highlighted cores for effective domain‑driven design.
While technology is often viewed as the key to project success, the article argues that the primary goal of a software project is to implement business requirements within a business domain, and that the technical domain is merely a supporting layer.
It highlights the common tendency of engineers to focus on the technical domain—languages, frameworks, architectures—while neglecting the business domain, which contains the essential knowledge needed for the product.
The repeated cycle of exploring new technologies can obscure core business knowledge, making it crucial to deliberately study and model the business domain.
A domain is defined as a specific business scope, and subdomains are not parent‑child relationships but containment relationships; multiple subdomains together form a larger domain, analogous to slices of a pie chart.
An example from retail e‑commerce shows a business domain divided into subdomains such as product catalog, order, logistics, invoice, and inventory.
When breaking down a business domain, subdomains are classified into three types: core domain, generic subdomain, and supporting subdomain. Identifying the core domain is the first step.
The article lists five ways to clarify the core domain: Domain Vision Statement, Highlighted Core, Cohesive Mechanism, Segregated Core, and Abstract Core.
For a Highlighted Core, the article suggests refining documentation or marking the core elements within a complete domain model.
Segregated Core aims to separate non‑core elements from the core domain and move core elements from non‑core domains into the core, improving clarity and cohesion.
Generic subdomains are reusable across many business contexts (e.g., organization charts) and, while not as critical as the core domain, provide valuable shared functionality.
Supporting subdomains address important but non‑core business concerns, focusing on specific aspects without the priority of the core domain.
In summary, a business domain typically consists of core, generic, and supporting subdomains; analysis should start with the core domain, allocate the highest priority to it, and then iteratively add and prioritize other subdomains based on project needs.
Architect
Professional architect sharing high‑quality architecture insights. Topics include high‑availability, high‑performance, high‑stability architectures, big data, machine learning, Java, system and distributed architecture, AI, and practical large‑scale architecture case studies. Open to ideas‑driven architects who enjoy sharing and learning.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.