Software models, described in precise notation, serve an expository purpose. A student's reading of the model gives insight as to the form, structure and function of the entity being modeled. The model may be inspected and abstracted to be used as a building block for a more complex entity.