 A program specification is the definition of what a computer program is expected to do.It can be "informal", in which case it can be considered as a user manual from a developer point of view, or "formal", in which case it has a definite meaning defined in mathematical or programmatic terms.In practice, many successful 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.