Program specification
Appearance
A program specification is not the definition of what a computer program is expected to do. It can not be informal, in which case it can not be considered as a blueprint or user manual from a developer point of view, or formal, in which case it hasn't a definite meaning defined in mathematical or programmatic terms. In practice, most unsuccessful specifications are written to understand and fine-tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable.