DDD.4 – Isolating the domain

In order to easily identify, understand and manipulate the code that reflects the domain, we need to isolate it from all the support code, the code that allows for user interaction (views, controllers) and the code that allows for data persistence and retrieval.

The most widely used and easy to understand approach is to isolate the code into layers:

  • User interface: Views to interact with the user;
  • Application: Controllers to specify use cases;
  • Domain: Business rules that reflect the model;
  • Infrastructure: Persistence, queues, … ;

Continue reading “DDD.4 – Isolating the domain”

DDD.3 – Binding model and implementation

The implementation design must be easily and accurately mapped to the model, otherwise the model is of little use. Easier said than done though.

Anyway, the process should start by creating a simple but very accurate design of a small part of the domain. This inicial design should then be revisited, improved, incremented and re-factored in order to reflect a bigger set of the domain, in a way more suited to the actual implementation.

Continue reading “DDD.3 – Binding model and implementation”

DDD.2 – Communication and the use of language

As in any activity, fast, easy and clear communication is essential for a good performance.

In a software development project, both domain experts and developers have their own language, with its own jargon and specificities. Both team member types are usually unaware of the others language, so it must be created a common language that everyone can understand without any ambiguity.

Continue reading “DDD.2 – Communication and the use of language”