📝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 instance 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