DDD - Domain Driven Design - Strategic Design

What is Strategic Design ?

Reading Time: 4 minutes

Also called strategic modeling, it is a pillar of the DDD whose main objective is to define the Bounded contexts, the Ubiquitous Language and the Context Maps together with the entire project team, which are the domain experts and the technical team.

To clearly understand what the strategic project is, you need to master each of these concepts I have spoken about.

Bounded context

Bounded context is one of the most important concepts of DDD, we can say that is a conceptual limit where a domain model is applicable.
As you try to model a large domain, you will have great difficulties, because different groups of people will use subtly different terms and sentences. That means that any use of that vocabulary outside of that limit will probably mean something different.

We can say then that a Bounded context is mainly a linguistic delimitation, as [Vaughn Vernon] speaks in his book.
It is important to understand that each Bounded context will have its own Ubiquitous Language.

Bounded Context

As your model evolves, you will feel the need to create a relationship between the Bounded contexts, for this purpose we will use the Context Maps.

Ubiquitous Language

The Ubiquitous Language is modeled within a Bounded context, where the terms and concepts of the business domain are identified, where there should be no ambiguity. In order for you to develop an efficient Ubiquitous Language you need to understand the business.

One of the great advantages of the Ubiquitous Language is to bring together the domain experts, the technical team, and the others involved in the project. Ubiquitous Language should never be a set of terms and technical jargons imposed by domain experts, on the contrary, Ubiquitous Language is developed in agreement of the whole team. The Ubiquitous Language must be spoken at all times between the team members and expressed in the software model.

Ubiquitous Language

Context Maps

Context Maps help in understanding the whole project, being able to show the relationships between the different Bounded Contexts.
It is extremely important to understand the relationship between Bounded Contexts so that you can build a domain model correctly.

Context Maps

There are several ways to relate Bounded Contexts:

Shared Kernel

A shared context between two or more teams, which reduces duplication of code, however, any changes must be combined and notified between teams.

Customer / Supplier

It is a relationship between client (downstream) and server (upstream), where the teams are in continuous integration.

Conformist

It is the scenario that involves the upstream and downstream teams, but in this model the upstream team has no motivation to meet the needs of the downstream team.

Partner

It is the scenario where teams are dependent and need to have a cooperative relationship so that they can meet the development needs of both systems.

Anti Corruption Layer

It is the scenario where the client (downstream) creates an intermediate layer that communicates with the upstream context, to meet its own domain model.

There are also other integration models such as Open-host Service, Published Language, Separate Ways and Big Ball of mud (never do that).


In future articles, my intention is to further detail this subject and make practical examples.

See you soon!

Buy Me A Coffee


Leave a Comment

Your email address will not be published. Required fields are marked *