- Domain: A sphere of knowledge (ontology), influence, or activity. The subject area to which the user applies a program is the domain of 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.
- 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.
- Context: The setting in which a word or statement appears that determines its meaning.
- The domain is not trivial
- The project team has experience and interest in Object Oriented Programming/Design
- The project has access to domain experts
- There is an iterative process in place