Segregated Core

Elements in the model may partially serve the core domain core domainand partially play supporting roles. Core domain elements may be tightly coupled to generic ones. The conceptual cohesion of the core domain may not be strong or visible. All this clutter and entanglement chokes the core domain. Designers can't clearly see the most important relationships, leading to a weak design.


Refactor the model to separate the core domain concepts from supporting players (including ill-defined ones) and strengthen the cohesion of the core domain while reducing its coupling to other code. Factor all generic or supporting elements into other objects and place them into other packages, even if this means refactoring the model in ways that separate highly coupled elements.