← Concepts

阅读中文版本

Conceptual Model Design

A conceptual model captures the essential entities and relationships of a domain in a form the domain experts validate, serving as the bridge between their language and the implementation model.

architecture

Definition

Conceptual model design is the practice of building a representation of the domain — entities, relationships, rules — that domain experts can read and validate, and that guides the implementation model without being identical to it, so that the software is anchored in a shared understanding rather than developer assumptions.

Context and scope

Applied in domain-driven design, requirements analysis, and any project where the cost of building the wrong thing exceeds the cost of modeling the right thing first.

Common misconceptions

  • The conceptual model is the implementation model — the conceptual model is for understanding; the implementation model is for execution, and they differ for good reasons
  • A conceptual model is a class diagram — it can be, but a diagram that experts cannot read defeats the purpose; the model is in the shared language, the diagram is a view

Anti-patterns

  • Building a detailed UML model the experts never see, then building a different implementation model the experts also never see
  • Treating the conceptual model as a contract and refusing to change it when the domain understanding evolves

Related concepts

Authoritative source

https://www.domainlanguage.com/ddd/

What it is

Conceptual model design is the practice of building a representation of the domain — entities, relationships, rules — that domain experts can read and validate, and that guides the implementation model without being identical to it, so that the software is anchored in a shared understanding rather than developer assumptions. Applied in domain-driven design, requirements analysis, and any project where the cost of building the wrong thing exceeds the cost of modeling the right thing first. The organizing principle is which decisions are hard to reverse and should be made once, versus which are easy to reverse and should be deferred.

How it works

Boundaries are drawn along axes of change: things that change together are colocated, things that change independently are separated by interfaces whose contracts are explicit and versioned. Dependencies point toward stability — domain logic depends on abstractions, infrastructure depends on domain, never the reverse. The structure makes the system’s intent legible without reading every module.

When to choose and pitfalls

Choose this structure when the system will outlive its first deployment and face requirements you cannot now predict. The pitfall is premature abstraction — adding indirection for a flexibility that never materializes, paying its complexity cost forever. The opposite pitfall is entangling concerns that later need to separate, forcing a rewrite instead of a refactor.