

Yet breaking down the system into ever-smaller contexts eventually loses a valuable level of integration and coherency. The bigger the team, the bigger the problem, but as few as three or four people can encounter serious problems. When a number of people are working in the same bounded context, there is a strong tendency for the model to fragment. Keep the model strictly consistent within these bounds, but don’t be distracted or confused by issues outside. Explicitly set boundaries in terms of team organization, usage within specific parts of the application, and physical manifestations such as code bases and database schemas. Therefore: Explicitly define the context within which a model applies. It is often unclear in what context a model should not be applied. Communication among team members becomes confused.

Yet when code based on distinct models is combined, software becomes buggy, unreliable, and difficult to understand. Multiple models are in play on any large project. The following image demonstrates the patterns in Strategic Domain-Driven Design and the relationships between them. Strategic Design is a set of principles for maintaining model integrity, distillation of the Domain Model and working with multiple models. It is more useful to recognize this fact of life and work with it. While this is a noble goal, in reality it always fragments into multiple models. Ideally, we would prefer to have a single, unified model.

The project team has experience and interest in OOP/OOD.Prerequisites for the successful application of DDD Context: The setting in which a word or statement appears that determines its meaning.Ubiquitous Language: A language structured around the domain model and used by all team members to connect all the activities of the team with the software.Model: A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.The subject area to which the user applies a program is the domain of the software.

Domain: A sphere of knowledge, influence, or activity.6 Software tools to support domain-driven design.2 Prerequisites for the successful application of DDD.
