Model

Noun - An abstract representation of physical reality.

Verb - To create or evolve a model.


A model is one of the most powerful engineering concepts available. Most of the time engineers are unable to work directly with the physical things they are concerned with. Models let us substitute an approximation for the real thing, and proceed with dealing directly with the approximation. Most models are visual. They may be 2D, such as on paper, or 3D, such as as with clay.

For example when Crick and Watson were hot on the trail of discovering the structure of DNA, they built numerous models. In the final five weeks all their work centered around building a metal model several feet tall. A machine shop built the custom parts needed. On March 7, 1953 how did they announce their discovery? By proudly unveiling the model, which conclusively showed DNA to be a double helix.

Models have several large advantages:

  1. Only the important aspects need be represented, allowing focus on what matters most.
  2. Their scale can be more suitable than the real thing. A 12" model can represent a molecule or solar system.
  3. They can be faster and cheaper to build than the real thing.
  4. They can be more persistent, such as a model of a nuclear chain reaction.
  5. They can be varied far more easily than the real thing, allowing more economical experimentation.
  6. They can be transported and shared more easily.
  7. They can help us think at a higher level of abstraction.
  8. They are much better than text for showing structure and relationships.

In software "model" refers to a diagram representing programs or systems. Software models have these characteristics:

  1. The basic building block is encapsulated elements, such as classes, partitions, tables, documents or people.
  2. Relationships between elements are shown.
  3. Element responsibilities are often shown, such as their methods or fields.
  4. Flow of control can be shown.

The extreme advantages of software models are better planning and better later decisionmaking, because the model serves as the roadmap to the code.

Use a model if the real thing won't sit on the tip of your finger.