When we shouldn't use Domain-Driven Design approach?

Masoud Sedghi

I've been reading about DDD that I faced with this paragraph

For data centric operations you would probably be better off using something like an Active Record pattern, or even a DAL over stored procedures. You may find some benefits in some of the more cursory aspects of DDD, and perhaps using some of the terminology, but trying to make DDD fit here will not be a pleasant experience.

as well as this one:

Probably 95% of all software applications fall into the “not so good for using DDD” categories. Most are fundamentally Data Centric – most websites are, most desktop applications are … fundamentally most data updating and reporting applications are data centric.

So,what do you think? Do you accept this opinion? According to these paragraphs we couldn't use DDD for a wide rang of IT projects,could we?

MikeSW

Take those numbers simply as some values based on the author experience (Evans' book was published more than 13 years ago, things have changed since then).

First of all, the thing that (sadly) few devs understand is that DDD is all about a mindset, a way of looking at things. That's it. So you can use DDD in every project, because we still need to understand the domain first, regardless of its implemention. If it turns out the domain is just a bunch of data structures, then you don't need to complicate your life. Especially if you are building a 'dumb' app i.e a UI for the database.

But if you're building an app which needs to understand business semantics (concepts and behaviour) in order to automate things, then it's a different story and all those DDD notions will help you build a more maintainable app.

So it very much depends on your app, and even in that app things can vary a lot. You should first understand the app's purpose, then the domain it tries to represent (if that's the case) and come up with a solution for each use case. In one app, you can have a lot of CRUD stuff and you can be very efficient leaving out many abstractions and you can have a couple of important concepts and use cases that will require a much better understanding and design. It also matters how much you think that the app will change over time. If there are signs it's something that will evolve over time,it might be better to abstract things a bit, but only from a design point of view. The implementation can still be CRUDy at this point.

If you treat a methodology as a group of mindset and concepts, you can use it everywhere because something like DDD is not a 'how to' coding recipe. While it has some specific tools, you, the app designer should decide if they are good for your app.

Simply put, you have to use DDD in order to decide if (the whole) DDD is usable for some parts of your app. But once again, DDD means the strategic approach, the mindset.

It's simply wrong to decide on a solution from the beginning for the whole app. Understand the problems the app tries to solve and use the proper solution for each problem. If in the end everything is just CRUD, then it's ok. It's equally ok if only some parts are implemented using DDD tactical tools, the point is to have the optimum solution for a problem.

In conclusion, learn and understand the DDD mindset (there's a a lot of explanations out there, focus on the design, not on the recipes as they are wrong), avoid considering it a coding recipe and just use it in order to determine the best approach for the app's needs.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Domain Driven Design - where should we put repositories?

From Dev

Domain Driven Design: Can Infrastructure or Repositories use Domain objects?

From Dev

Domain Driven Design: Can Infrastructure or Repositories use Domain objects?

From Dev

Why we shouldn't use == to compare strings?

From Dev

How to handle Domain Driven Design when domain is dynamic / changes

From Dev

How to handle Domain Driven Design when domain is dynamic / changes

From Dev

Layers in Domain Driven Design

From Dev

Domain Driven Design - Domain or Security

From Dev

DDD (Domain Driven Design) Can I use inheritance ?

From Dev

Where to put security when using DDD - domain driven design

From Dev

Domain Driven Design - When to seperate one bounded context into two

From Dev

Access Control in Domain Driven Design

From Dev

Domain Driven Design and batch processing

From Dev

Implementing Domain Driven Design Cost

From Dev

Implementing Domain Driven Design Cost

From Dev

Why shouldn't we use pointer arithmetic with gsl::not_null?

From Dev

Domain Driven Design Bounded Context Domain Objects

From Dev

Domain Driven Design: infrastructure concern or domain concern?

From Dev

Domain Driven Design: infrastructure concern or domain concern?

From Dev

Domain Driven Design. Entity type design

From Dev

When to use const before function and when you shouldn't

From Dev

Implementing Paging and Sorting with Domain Driven Design

From Dev

Implementing Domain-Driven Design and Transactions

From Dev

Domain driven design repository implementation in infrastructure layer

From Dev

Domain Driven Design in Node.js Application

From Dev

Fetching associated aggregates in Domain driven Design

From Dev

Domain Driven Design - CQRS + ES usage

From Dev

Where is the call to persistence in the domain driven design

From Dev

Implementing Domain Driven Design Book Confusion

Related Related

  1. 1

    Domain Driven Design - where should we put repositories?

  2. 2

    Domain Driven Design: Can Infrastructure or Repositories use Domain objects?

  3. 3

    Domain Driven Design: Can Infrastructure or Repositories use Domain objects?

  4. 4

    Why we shouldn't use == to compare strings?

  5. 5

    How to handle Domain Driven Design when domain is dynamic / changes

  6. 6

    How to handle Domain Driven Design when domain is dynamic / changes

  7. 7

    Layers in Domain Driven Design

  8. 8

    Domain Driven Design - Domain or Security

  9. 9

    DDD (Domain Driven Design) Can I use inheritance ?

  10. 10

    Where to put security when using DDD - domain driven design

  11. 11

    Domain Driven Design - When to seperate one bounded context into two

  12. 12

    Access Control in Domain Driven Design

  13. 13

    Domain Driven Design and batch processing

  14. 14

    Implementing Domain Driven Design Cost

  15. 15

    Implementing Domain Driven Design Cost

  16. 16

    Why shouldn't we use pointer arithmetic with gsl::not_null?

  17. 17

    Domain Driven Design Bounded Context Domain Objects

  18. 18

    Domain Driven Design: infrastructure concern or domain concern?

  19. 19

    Domain Driven Design: infrastructure concern or domain concern?

  20. 20

    Domain Driven Design. Entity type design

  21. 21

    When to use const before function and when you shouldn't

  22. 22

    Implementing Paging and Sorting with Domain Driven Design

  23. 23

    Implementing Domain-Driven Design and Transactions

  24. 24

    Domain driven design repository implementation in infrastructure layer

  25. 25

    Domain Driven Design in Node.js Application

  26. 26

    Fetching associated aggregates in Domain driven Design

  27. 27

    Domain Driven Design - CQRS + ES usage

  28. 28

    Where is the call to persistence in the domain driven design

  29. 29

    Implementing Domain Driven Design Book Confusion

HotTag

Archive