Domain-driven Design (DDD)

The Domain-driven Design or DDD is defined as a software development approach for complex needs through connecting implementation to evolving model. The DDD’s premise includes the following:

  • Basing the complex designs on a domain’s model
  • Placing the primary focus of objects  domain logic and core domain
  • Initiating creative relationship between domain and technical experts in order to refine conceptual model iteratively. This conceptual model tends to address certain domain problems.

The term DDD was actually coined by Eric Evans exclusively on his book with similar title. When speaking about Domain Driven Design or DDD, there is also this so called strategic design. It would ideally be preferable to have one unified model. While this is a decent goal, the truth is, it commonly fragments to multiple models. This is helpful to recognize this given fact of life and be able to work with it. Strategic design is set of principles that maintain distillation of Domain model, model integrity and work with multiple models.

Why Doing It?

Software Development approach also known as Domain-driven Design or DDD is often executed for many reasons. DDD helps individuals become more prepared to succeed in achieving effective and top quality software model designs. When DDD is implemented properly, this will help individuals reach the extent where designs are exactly how the software functions or works. The DDD book is all about helping individuals learn the proper ways of implementing DDD.

You might be new to DDD but once you have tried this, you will surely achieve better results especially if done properly. Individuals like developers and domain experts are doing DDD because this put them on level playing  field that produces software which makes some perfect sense into business and not only to coders. This does not mean just tolerating the opposite team. This means becoming a tight-knit and cohesive team.

Individuals are doing DDD because this provides software development tactics addressing both tactical and strategic design. These strategic design help individuals understand the most vital software investment that they need to make, what software assets they need to leverage on to be able to get there safest and fastest and who should be involved. The tactical designs help individuals craft one elegant model of solution utilizing proven and time tested software building blocks.

How to do Domain-driven Design (DDD)

When doing or implementing DDD, questioning the designs is always expected. Individuals have the freedom to haggle over what’s the perfect model and then settle only upon the discovered Ubiquitous Language which is agreed upon.  Ubiquitous Language pertains to shared team language. This is actually shared by the developers and domain experts alike. This can in fact be shared by everyone included in a project team. Nevertheless, individuals have to keep in mind that when doing DDD, there are idea initial steps to coin a Ubiquitous Language that perfectly fits their specific domain.

— Slimane Zouggari