Domain definitions can be applied to system modeling as well as
In both cases domain definitions can be used to
describe the key concepts of the problem area.
definitions are high-level means of communications, not only for the
developers but also for system analysts, system designers, users, and
Using domain definitions requires focusing on the key concepts
of the problem to be solved. They facilitate a top-down approach.
Domain definitions have a number of interesting properties:
Domain definitions are concise. They are easy to understand and to
derive. They are declarative in nature. Imperative programming steps
are excluded. The order of domain definitions is irrelevant. The
syntax is minimal. There is only one rule: every domain name used on
the right side of a definition should also be defined on the left
The translation of domain definitions to the skeleton output is
fast and error free, assuming that domain definitions are consistent
and complete. Both aspects are checked by the metaprocessor.
Discovering the relevant domain definitions begins with the
decomposition of top-level domain definitions. It has a number of
advantages. It starts top down with high-level problem oriented
concepts, decomposing them into smaller definitions until the predefined
domains are found. The decomposition process requires often choices
that have their impact in the implementation phase.
Alternative designs can easily be expressed by changing some
Domain definitions can be used to make run-time data visible.
The information provided by the domain definitions together
with information collected by the compiler and the run-time system
enables the system to output meaningful data structures related to the
domain definitions. These facilities provide high-level debugging and
verification support and are of great help in the testing and