This article focuses on the use of software in
safety-critical systems. Computers are used in safety- critical applications.
Software decisions are often based on economic rather than safety
considerations. It is sometimes assumed that software is totally reliable since
software does not wear out. Instead, the errors occur in a much more random and
unpredictable manner. Software is a digital rather than analog artifact. As
such, techniques like interpolation and extrapolation, used by many hardware
engineers in calculations, do not apply. Changing a single bit in a computer
program can have a very unpredictable effect on its operation or may be
completely benign in some circumstances. The complexity of most software is
such that it is extremely difficult to reason about its behavior with great
certainty. The highest quality of personnel should be employed in the
development of safety-critical applications. The engineers involved should be
capable of absorbing the required toolkit of knowledge and also accurately
comprehending the required operation of computer-based systems. No special
qualifications are currently required for personnel developing or maintaining
software for safety-critical systems. This contrasts with the more established
engineering professions where standards, regulations, certification, and
accreditation often apply much more strictly. INSETS: Formal Methods and Formal
Specification; Code of Practice for Engineers and Managers.