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.