Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DDD, identifying the core domain

I am having difficulty in attempting to ascertain which domain within a given model can be considered the "core domain". It can be tricky especially if there are several domains which are core to the function of a business.

I would like someone to outline a systematic process to single out the core domain when dealing with a system that has multiple candidates.

like image 780
Rijndael Avatar asked Aug 12 '14 21:08

Rijndael


People also ask

What is core domain in DDD?

Core Domain: is the most important concept in DDD, it is directly related to the business. An example is an E-commerce Store, for instance, security is an important part, but it's not the most important part, the core domain is the customer experience.

What is a core domain?

A core domain is a structural region containing a hydrophobic core and the surrounding shell which folds and unfolds as a unit. Core domain 1 folds by itself and consists essentially of the right channel structure, found by R. E. Dickerson and colleagues, and a part of the heme.

What is domain logic DDD?

Domain-driven design (DDD) is a major software design approach, focusing on modelling software to match a domain according to input from that domain's experts. Under domain-driven design, the structure and language of software code (class names, class methods, class variables) should match the business domain.

How do you determine bounded context?

To identify bounded contexts, you can use a DDD pattern called the Context Mapping pattern. With Context Mapping, you identify the various contexts in the application and their boundaries. It's common to have a different context and boundary for each small subsystem, for instance.


2 Answers

  • Core domain - the most important subdomain, which is essential for the business. Without it the business would fail. If you ever need to pick the first solution to implement - start with the core domain.

  • Supporting subdomain - subdomain, which is less valuable for business than Core domain. Without it business may be can even survive for some time. But it still is quite important (supports core domain), it also is specific for the domain and has to be developed. In this case, for some reason, we can't buy an existing software or component to solve the problem.

  • Generic subdomain - subdomain which is less valuable for business than Core domain. It also is generic enough to allow buying it off the shelf (unlike supporting domain).

like image 118
code5 Avatar answered Oct 12 '22 22:10

code5


Do you exactly mean multiple core domain candidates or may be it is multiple bounded contexts in core domain?

"Can Core Domain span multiple Bounded Contexts?" - another SO question

Eric asks several questions to help us identity which parts are core to the domain:

  1. What makes the system worth writing?
  2. Why not buy it off the shelf?
  3. Why not outsource it?

The core domain is so critical and fundamental to the business that it gives you a competitive advantage and is a foundational concept behind the business.

Source

like image 40
Alex Avatar answered Oct 13 '22 00:10

Alex