ABSTRACT

A hazard is something passive that exists in the environment and which may be the cause of risks. To take an example more pertinent to embedded software, the memory used by the processor may be a hazard. When a software subsystem is invoked, it may fail in one of two ways: It may fail to give a timely answer at all, or it may respond, but with the wrong answer. The failure to provide an answer within the time that makes it useful is termed an availability problem; the timely presentation of the wrong answer is a reliability problem. Increasing availability generally reduces reliability and vice versa. It is relatively easy to think of systems where reliability is essential to safety, even at the expense of availability. Much of program testing is really testing reliability, only checking availability in passing. A programmer may introduce a fault into a program by typing something unintended into an editor.