Skip to main content

Domain Layer (DDD)

The Domain Layer is a layer in a Layered Architecture and holds all implementation related to the business of the software, such as rules and concepts, manifesting in Domain Models, expressed through a Ubiquitous Language and bounded by Contexts.

Figure 1 A domain with multiple Bounded Contexts

In Figure 1, a Domain Layer is depicted with multiple Bounded Contexts. Each Bounded Context is semantically defined through its Ubiquitous Language. The vocabulary of an Ubiquitous Language does not exclusively belong to one Bounded Context, words an meanings might be (re-)used across boundaries. Each Bounded Context has a Domain Model that in turn consists of Domain Objects, such as Aggregates (with Value Objects and Entities) and Repositories, amongst others.

"This layer is the heart of business software." [📖DDD, p. 70]