A domain model in problem solving and software engineering is a conceptual model of all the topics related to a specific problem. It describes the various entities, their attributes, roles, and relationships, plus the constraints that govern the problem domain.
The domain model is created in order to represent the vocabulary and key concepts of the problem domain. The domain model also identifies the relationships among all the entities within the scope of the problem domain, and commonly identifies their attributes. A domain model that encapsulates methods within the entities is more properly associated with object oriented models. The domain model provides a structural view of the domain that can be complemented by other dynamic views, such as use case models.
An important advantage of a domain model is that it describes and constrains the scope of the problem domain. The domain model can be effectively used to verify and validate the understanding of the problem domain among various stakeholders. It defines a vocabulary and is helpful as a communication tool. It can add precision and focus to discussion among the business team as well as between the technical and business teams.
A well thought-out domain model serves as a clear depiction of the conceptual fabric of the problem domain and therefore is invaluable to ensure all stakeholders agree on the scope and meaning of the concepts in the problem domain. An accurate domain model can also serve as an essential input to solution implementation within a software development cycle since the model elements comprising the problem domain can serve as key inputs to code construction, whether that construction is achieved manually or through automated code generation approaches. It is important, however, not to compromise the richness and clarity of the business meaning depicted in the domain model by expressing it directly in a form influenced by design or implementation concerns.
The domain model is one of the central artifacts in the project development approach called feature-driven development (FDD).
In domain-driven design, the Domain Model (domain entities and actors) covers all layers involved in modelling a business domain, including (but not limited to) Service Layer, Business Layer, and Data Access Layer thus ensuring effective communication at all levels of engineering. It is considered an effective tool for software development, especially when domain knowledge is iteratively provided by domain experts (such as Business Analysts, Subject Matter Experts and Product Owners.)
|This article does not cite any references or sources. (February 2009)|