Abstract
The notion of specification plays a key role in the developing science of computing. It is typically considered to be the keystone in the software development process. However, there is no single, generally agreed meaning of specification that bears close scrutiny. Instead there is a variety of different, although partially interlocking and overlapping interpretations of the term.We catalogue this varietal profusion and attempt to lay bare both the sources and consequences of each major alternative. We attempt to present the full range of possibilities, and the biases inherent in each style of interpretation.