Library
Domain-Driven Design Distilled · 3 of 10
Domain-Driven Design Distilled
AI Software Development CRITICAL

Bounded Contexts and Ubiquitous Language

bounded-context ubiquitous-language semantic-boundary core-domain

Key Principle

A Bounded Context is a semantic boundary within which each software model component has a specific meaning. The Ubiquitous Language is the rigorous shared language developed collaboratively within that boundary, spoken by every team member and implemented in code.

"A Bounded Context is a semantic contextual boundary. This means that within the boundary each component of the software model has a specific meaning and does specific things." (Chapter 2)

The mechanism is enforced precision, not mere exclusion: "The boundary emphasizes the rigor inside." (Chapter 2)

Why This Matters

Without explicit boundaries, teams pile concepts into one model until meanings blur. The same term (e.g., "policy" in insurance, "flight" in airlines) means different things in different business contexts. This is not a problem to solve through abstraction — it is a reality to embrace by giving each context its own definition. When a team cannot articulate what is core to their Bounded Context, they build monoliths that try to do everything and excel at nothing.

Good Examples

The "What is core?" filter: Only concepts adhering to the core strategic initiative's language remain inside; everything else is pushed out. In the Scrum example, the team challenges each concept: Tenant, User, Permission are pushed out (they are identity concerns, not Scrum concerns). User becomes ProductOwner and TeamMember — names from the Ubiquitous Language. (Chapter 2)

Scenario-driven language development: The team writes concrete scenarios describing how model components behave (not human procedures), then challenges with "who," "what constraints," and "who needs to know" questions. Each round surfaces a concept (quorum, uncommitment, notification) that would otherwise be discovered in production. (Chapter 2)

Domain Expert distinction: A Domain Expert is not a job title but a description — those primarily focused on the business whose mental model forms the foundation of the language. A Scrum Product Owner manages backlogs; a Domain Expert possesses deep knowledge of the core business competency. Substituting one for the other severs the language from its source of truth. (Chapter 2)

Counterpoints

Big Ball of Mud: A system with multiple tangled models without explicit boundaries. It is the default outcome when no one chooses explicit boundaries — not a deliberate architecture but the absence of architecture. (Chapter 2)

Microservices granularity trap: Microservices are "essentially equivalent to DDD Bounded Contexts," but if defined at finer granularity (one concept per service), multiple microservices may belong to the same logical Bounded Context. The semantic boundary matters more than the deployment boundary. (Chapter 2)

Key Quotes

"It is necessary that the Ubiquitous Language be rigorous — strict, exact, stringent, and tight." — Vaughn Vernon, Chapter 2

"In the end the code is the model and the model is the code." — Vaughn Vernon, Chapter 2

Rules of Thumb

  • One team per Bounded Context, one repository per Bounded Context; a team may own multiple contexts but multiple teams must never share one
  • Develop language through concrete scenarios, not noun lists or data dictionaries
  • If a concept doesn't belong in the Ubiquitous Language, it doesn't belong in the model
  • The Ubiquitous Language is the design artifact — everything else (diagrams, docs) is secondary

Related References