Domain-Driven Design – Vocabulary

Terms and Definitions

Domain, Model and Design

A domain is a sphere of knowledge, influence or activity.

Domain-driven design is an approach to system development that suggests that

the primary focus should be on the domain and domain logic

complex domain designs should be based on a model

A domain expert is a member whose field is the domain of the application rather than system development. Not just any user, the domain expert has deep knowledge of the subject matter.

A model is a system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.

Model-driven design is design in which some subset of system elements corresponds closely to elements of a model. Also, a process of co-developing a model and an implementation that stay aligned with each other.

A modeling paradigm is a particular style of carving out concepts in a domain, combined with tools to create system analogs of those concepts.

The core domain is the distinctive part of the model, central to the user’s goals, that differentiates the application and makes it valuable.

A design pattern is a description of communicating objects and classes that are customized to solve a general design problem in a particular context.

Categories, Functors and Natural Transformation

An aggregate (also category) is a cluster of associated objects that are treated as a whole. External references are restricted to one member, designated as root. A set of coherence rules applies within the boundaries.

A category is a cluster (Aggregate Ensemble Menge) of associated objects (representations) that are treated as a whole. External references are restricted to one member, designated as zero point, initial point or terminal point, depending on model and context. A set of coherence rules applies within the category, under natural transformation.

A bounded context (also representable functor) is the delimited applicability of a particular model, giving team members a clear and shared understanding of what has to be coherent and what can develop independently.

Context refers to the setting in which a concept or proposition appears that determines its utility.

A context map (adjunction) is a representation of a bounded context and the actual relationships between its models.

An entity (object in a category) is an object fundamentally defined not by its attributes (other than associativity and identity), but by a thread of continuity and identity.

A function (also morphism) is an operation that computes and returns a result without observable side effects.

Miscellaneous

An invariant is a some design element that must be valid at all times.

A layered architecture is a technique for separating the concerns of a system, isolating a domain layer, among other things.

A shared language is a language structured around the domain model and used by all team members to connect all the activities of the team with the system.

A value object is an object that describes some characteristic or attribute but carries no concept of identity.

A whole value is an object that models a single, complete concept.