50

So I got this question from one of the developers in my team: What is domain driven design? I could of course point to the book from Evans but is that actually an answer?

How would you explain DDD in a few sentences to junior software engineers in your team?

jk.
  • 13,817
  • 5
  • 37
  • 50
Hace
  • 1,421
  • 12
  • 17
  • > Moderator note: Link may no longer be relevant Visit [http://dddcommunity.org](http://dddcommunity.org/)/ – cvs Sep 19 '08 at 10:53

7 Answers7

46

I would say this practice promotes concentrating your efforts on the 'problem space' rather than the 'solution space'. Driving an emergent solution (the design) by studying and really getting to know and understand the domain. One of the practices (taken from XP) would be the writing of stories that occur in the problem domain. From these you can identify your use cases and objects for your design. They 'emerge' and tell you what needs to be in the solution, and how they will need to interact with each other.

hollystyles
  • 4,979
  • 2
  • 36
  • 38
24

InfoQ have a free eBook:

Domain Driven Design Quickly

It is a good read with plenty of examples.

Oded
  • 489,969
  • 99
  • 883
  • 1,009
9

In the process of discovering the "domain" you form a common language, that both the developers and all the other stakeholders in the project understand.

The domain model and its "lingo" is quite observable in the source code for the finished product. That is at least my experience

Mats Wiklander
  • 401
  • 3
  • 10
4

An important part of DDD is the so called ubiquitous language; i.e. speak the same language as the business experts. And make your code / architecture so that it reflects this language to avoid impedance problems.

p3t0r
  • 1,980
  • 1
  • 16
  • 22
  • 3
    Aas far as I understand it, it's not programmers speaking domain experts language, but developing a common language. – sumek Sep 19 '08 at 10:52
  • 1
    @sumek trying to get people to agree on a *common language* is probably not worth the effort. It takes a lot of time to get a business to agree to **anything**. In my experience it's usually best to conform to the existing lingo, that is, if you want to ship on time... – MattDavey Jun 25 '13 at 11:54
4

Trying to understand what the software you're writing is about and reflecting that understanding in the model.

sumek
  • 26,495
  • 13
  • 56
  • 75
2

Domain Driven Design is about managing the complexity of an application in the domain model where it can most easily be distilled.

It's very difficult to describe in a few sentence, but I would recommend the InfoQ book as a good introduction. I have also heard of a lot of people doing a book club with Evans' DDD book which has helped a lot in understanding it.

Community
  • 1
  • 1
Stefan Moser
  • 6,663
  • 9
  • 35
  • 48
  • 1
    DDD has moved on a lot since the blue book was written 10 years ago. Back then a rich domain model was really the only way to capture the business complexity in a cohesive manner. These days we have a few more options like CQRS and event sourcing, so the old notion that `DDD == rich domain model` doesn't hold true. I appreciate that this answer itself was written 5 years ago. – MattDavey Jun 25 '13 at 11:59
2

To me is the next level of OOD/OOP where the encapsulation is all about the problem space, as described and understood by users, and not so much about the technical implementation.

webclimber
  • 2,630
  • 4
  • 26
  • 36