Lost? An Introduction To Domain-Driven Design


Ten bucks says you’ve clicked on an article from Buzzly, Buzzfeed, or The Buzz at least once.

There’s something great about knowing what’s trending, popular, or breaking news. So what´s all the buzz about domain-driven design?
domain-driven design tutorialsDDD (domain driven design) is a totally different approach to solving real-world problems. DDD creates a system that reflects and describes the problematic domain.

For this, you need a domain expert who can describe how the real-world system works. Let’s say you are developing a system to handle bets on NASCAR races. In this case, your domain expert would be a bookmaker.
With DDD, the domain is always more complex than the software. So the software designer collaborates with a domain expert to simplify and explain the problem.

This conceptual description facilitates a common understanding of the solution. Your software becomes a model of the real-world system, helping you to better map out the problems you face.

Domain-Driven Design

To make the model, a software designer and a domain expert collaborate to create a ubiquitous language (UL) . This UL becomes the conceptual description of the reality you’re describing. The software designer articulates what the system does in such a way that the domain expert can read and confirm its accuracy.

In the case of our racing example, you’d need to have a ubiquitous language that included definitions of words like ‘bet’, ‘race,’ ‘probability,’ etc. The concepts you describe with the UL will help your organize your objects within the design. DDD will give you guidance on how your objects should interact and how to categorize them into:

  • Value objects (representing values that have sub-parts: like a date with month, day, and year)
  • Entities (objects with identity: i.e. each customer has a separate identity)
  • Aggregate roots (objects owning other objects: this concept says that some objects don’t make sense unless they have an owner).

We hope that our short domain driven design tutorial has been helpful to you as you explore this approach. While DDD can seem theoretical and is definitely esoteric, just remember its purpose: to understand (and thus be able to solve) real world problems.

Want to learn more? Call us at Farotech for a more in-depth conversation about DDD and how it could help your business.