High conjunction preventing.
One of the advantages of the DDD's approach is an access constraint. They define which libraries can use other libraries or depend upon them. In general, it uses a hierarchical relationship from top to bottom. It means that each layer can only communicate with underlying layers. As for cross-domain access, it is possible only in the shared area. Thus, we get a weak connection and, as a result, increased maintainability.
To correspond to Open Services in DDD, developers usually seek to reduce the amount of logic in a shared area. In this case, they use this approach for developing APIs that publish building blocks for other domains.
So, let's back to the diagram above: you may define the following two main characteristics of the shared part:
- Most of the util libraries (greyed-out blocks) are placed in the shared areas. It's done primarily because of the phases they are responsible for and use across the system.
- The general UI libraries that ensure a system-wide look and feel are also placed in the shared areas for the same reason.