
In
software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term ' ...
, a domain model is a
conceptual model of the
domain that incorporates both behavior and data.
[Fowler, Martin. ''Patterns of Enterprise Application Architecture''. Addison Wesley, 2003, p. 116.] In
ontology engineering
In computer science, information science and systems engineering, ontology engineering is a field which studies the methods and methodologies for building ontologies, which encompasses a representation, formal naming and definition of the categ ...
, a domain model is a
formal representation of a
knowledge domain with concepts, roles, datatypes, individuals, and rules, typically grounded in a
description logic.
Overview
A domain model is a system of abstractions that describes selected aspects of a sphere of knowledge, influence or activity (a domain
[Evans, Eric ''Domain-Driven Design: Definitions and Pattern Summaries''. Domain Language Inc., 2006, p. 3.]). The model can then be used to solve problems related to that domain.
The domain model is a representation of meaningful real-world concepts pertinent to the domain that need to be modeled in software. The concepts include the data involved in the business and rules the business uses in relation to that data. A domain model leverages natural language of the domain.
A domain model generally uses the vocabulary of the domain, thus allowing a representation of the model to be communicated to non-technical stakeholders. It should not refer to any technical implementations such as databases or software components that are being designed.
Usage
A domain model is generally implemented as an
object model within a layer that uses a lower-level layer for persistence and "publishes" an API to a higher-level layer to gain access to the data and behavior of the model.
In the
Unified Modeling Language (UML), a
class diagram
In software engineering, a class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system by showing the system's classes, their attributes, operations (or methods), and the r ...
is used to represent the domain model.
See also
*
Domain-driven design
Domain-driven design (DDD) is a major software design approach, focusing on modeling 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, ...
(DDD)
*
Domain layer
*
Feature-driven development
*
Logical data model A logical data model or logical schema is a data model of a specific problem domain expressed independently of a particular database management product or storage technology ( physical data model) but in terms of data structures such as relational ...
*
OntoUML
Notes
References
{{Empty section, date=June 2015
Software requirements
Data modeling