📝Domain model

In software architecture, it is useful to describe a domain model. Domain model is what’s true about the domain regardless of your solution. (Solution is the subject of Design model.)

The following views/models can be used:

  • Information model—describes what types exist and what their relationship is. Either textual or very simple diagram with 1-to-many relationships. Fairbanks2010, pp. 131–133

    • Note that “types” here refer to real-world objects, not types in your programming language.
  • Invariants (what’s always true, constraints) can be added to information model.
  • Snapshot or instance diagram—a concrete instantiation of information model. Fairbanks2010, p. 134
  • Functionality scenarios—describe how one snapshot transforms into another. (Similar to use cases.) Fairbanks2010, pp. 135–136

    • (If a step does not show a transformation in snapshot, consider if the step is necessary.)
    • Again, it is important to mention that these scenarios are about real world and not the system.

See also: