# Domain-Driven Design

Record: `arch: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#arch-domain-driven-design

## 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/arch/ubiquitous-language.md)
- [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md)

## reinforces

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

## enables

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

## conflicts-with

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

## tensions-with

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

## tensions

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

## referenced-by

- [Domain Events](https://banes-lab.com/records/arch/domain-events.md)
- [Ubiquitous Language](https://banes-lab.com/records/arch/ubiquitous-language.md)
