back home

Domain Driven Design

[architectural-patterns]

Domain Driven Design is an approach to software development, and one of our architectural patterns meant to apply against projects with lots of business logic complexity.

  1. Discover the domain model by interacting with domain experts and agreeing upon a common language to refer to processes, actors and any other important phenomenon (like events and side-effects to events) that occur in your problem domain.

  2. Take those newly discovered terms and embed them in the code, creating a rich domain model that reflects the actual living, breathing business and its rules.

  3. Protect that (zero-dependency) domain model from all the other technical intricacies involved in creating a web application (like databases, web servers, etc)

  4. Continuously crunch domain knowledge into a software implementation of that knowledge.

Domain model: A domain model is a declarative layer of code (without dependencies to any upper-layer concerns) that encapsulates the business rules of a particular problem domain.