# Domain-Driven Design

> A convention of modeling software on the business domain's own language, split into bounded contexts with a domain model in each.

Record: `architecture:domain-driven-design`
Kind: style
Layer: [Domain Modeling](https://banes-lab.com/records/layer/domain-modeling.md)
Severity: contextual
Scope: domain, bounded context, system
Aliases: DDD
Canonical: https://banes-lab.com/ontology#architecture-domain-driven-design

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Model Version Ambiguity](https://banes-lab.com/records/architecture/model-version-ambiguity.md) and before [Domain Model](https://banes-lab.com/records/architecture/domain-model.md).

## Repair

- Refactored by: Extract Domain Model, Add Aggregate, Split Context
- Detected by: anemic models, scattered business rules
- Violated by: domain logic in infrastructure/controllers
- Measured by: domain logic locality
- Enforced by: layer rules, domain tests

## Requires

- [Ubiquitous Language](https://banes-lab.com/records/architecture/ubiquitous-language.md)
- [Bounded Context](https://banes-lab.com/records/architecture/bounded-context.md)

## Reinforces

- [Domain Model](https://banes-lab.com/records/architecture/domain-model.md)
- [Semantic Consistency](https://banes-lab.com/records/architecture/semantic-consistency.md)

## Enables

- [Domain Alignment](https://banes-lab.com/records/lexicon/domain-alignment.md)

## Conflicts with

- [Anemic Transaction Script](https://banes-lab.com/records/lexicon/anemic-transaction-script.md)

## In tension with

- [Simple CRUD](https://banes-lab.com/records/lexicon/simple-crud.md)

## Tensions

- [Domain-Driven Design (DDD) / Simple CRUD](https://banes-lab.com/records/tension/domain-driven-design-ddd-simple-crud.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Domain Architecture](https://banes-lab.com/records/architecture-category/domain-architecture.md)

## Reinforced by

- [Domain Events](https://banes-lab.com/records/architecture/domain-events.md)

## Linked from

- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/ontology/principles/architecture-category-event-messaging-asynchronous-architecture.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Domain Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-domain-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
