Model

A model, in the general sense used across software architecture, is a simplified representation of some aspect of a system, built to make that aspect easier to reason about, communicate, or analyze than the real thing would be. ISO/IEC/IEEE 42010 makes this precise for architecture work. An architecture model is one or more models, each governed by a model kind, which means the conventions and notation that a particular type of modeling follows.

A model kind fixes the vocabulary and rules a model is expressed in, so that anyone familiar with the kind can read the model without the author re-explaining its notation each time. Examples include data-flow diagrams, class diagrams, Petri nets, balance sheets, organization charts, and state-transition models. Each is suited to a different kind of concern, from data movement to financial structure to behavioral state.

Choosing an appropriate model kind for a given concern is part of modeling practice. A sequence diagram and an entity-relationship diagram are both model kinds in this sense, each fit for a different purpose – interaction over time versus data structure – and neither substitutes for the other.