A measure of the extent to which a software system can be expected to deliver usable services when those services are demanded. Software reliability differs considerably from program ‘correctness’ (see program correctness proof). Correctness is the static property that a program is consistent with its specification, while reliability is related to the dynamic demands that are made upon the system and the ability to produce a satisfactory response to those demands.
A program that is ‘correct’ may be regarded as unreliable if, for example, the specification against which the program is shown to be correct does not capture all of the users’ expectations of the program. Conversely, a program that is not completely correct may be regarded as reliable if the errors are insignificant, occur infrequently at noncritical times, or can simply be avoided by the users.