Skip to content

Domain-Driven Design

The architecture-level answer to "how do we split this system?" — bounded contexts, ubiquitous language, and the strategic/tactical patterns that align software structure with the business domain rather than with technology layers.

Content under this section is being filled in. The structure below shows the planned coverage; pages marked coming soon link to themselves until written.


Planned sections

  • Strategic Design — bounded contexts, context maps, ubiquitous language, subdomain classification (core / supporting / generic).
  • Tactical Design — entities, value objects, aggregates, repositories, domain events, factories, services.
  • Anti-Corruption Layer — protecting a clean model from legacy or third-party concepts; translation layers between contexts.
  • Hexagonal Architecture — ports and adapters; isolating the domain model from delivery and persistence concerns.
  • Event Storming — collaborative modelling technique; discovering aggregates and bounded contexts from domain events with stakeholders in the room.

Why this lives in Architecture, not Programming-Languages

DDD is about how a system is sliced — the seams between services, modules, and teams. The actual code-level techniques (rich domain models, anemic vs. behaviour-rich entities, repository interfaces) build on top of these slices. When the bounded contexts are wrong, no amount of clean code rescues the architecture.


  • System Design — the catalog of architectural patterns; DDD provides the language for where to apply them.
  • Architecture Anti-Patterns — Big Ball of Mud, Stovepipe Enterprise, Distributed Monolith — the failure modes DDD's bounded contexts are designed to prevent.
  • Software Design & Architecture — the broader umbrella of design styles in which DDD lives.

References

  • Domain-Driven Design: Tackling Complexity in the Heart of Software — Eric Evans (2003) — the founding text ("the Blue Book").
  • Implementing Domain-Driven Design — Vaughn Vernon (2013) — the practical companion ("the Red Book").
  • Domain-Driven Design Distilled — Vaughn Vernon (2016) — short overview if the two above are too dense.
  • Patterns, Principles, and Practices of Domain-Driven Design — Scott Millett & Nick Tune (2015) — with concrete .NET examples.

Project Context

Part of the Senior Project — a personal effort to consolidate the essential knowledge of software engineering in one place.