Domain Driven Design
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.
-
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.
-
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.
-
Protect that (zero-dependency) domain model from all the other technical intricacies involved in creating a web application (like databases, web servers, etc)
-
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.