Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Differences between DDD & MDD

I would like to know if there is any difference between:

Domain Driven Design (DDD) Model Driven Design (MDD) I always find these two terms in many articles and public literature, but no one highlights the differences.

like image 559
V.S. Avatar asked Feb 01 '17 13:02

V.S.


1 Answers

I personally find MDA and DDD quite far away from each other.

MDA focuses on creating different kind of models that describe software systems on different levels. It encourages using UML for these models and there could be a lot of those models produced to describe quite complex systems from different perspectives. There were some solutions created, like Rational Rose, to generate software from models and keep them in sync with the code.

At the same time MDA says nothing about how you communicate to the business to understand their problem domain. All MDA focuses on is the solution domain.

DDD, at the other hand, is much more about the knowledge about the domain and about the language. In short, many describe DDD as "developing Ubiquitous Language inside Bounded Contexts". You are encouraged to talk to domain experts and understand what are they saying. You need to define contexts where these terms make sense, since the difference in terminology in different contexts can be tremendously different. Each context is then isolated into a highly cohesive component, and a composition of those components form a complete system.

There are many tactical patterns in DDD like aggregate root, entity, value object, repository and factory. But their main goal is to give developers some tools to create proper abstractions, which can encapsulate the domain knowledge without compromising the code readability.

The most important part of DDD is in strategic patterns like bounded contexts, context map and ubiquitous language. If you are not using this - you have no DDD. And it does not matter, which notation you use to draw diagrams (some just use sticky notes), this is completely secondary.

like image 191
Alexey Zimarev Avatar answered Oct 20 '22 13:10

Alexey Zimarev