Like any subject of study, there is a specialized language associated with fault tolerance. This chapter introduces these terms.
The focus of this book is on 'Fault Tolerance' in general and in particular on things that can be done during the design of software to support fault tolerant operation. A system of software or hardware and software that is fault tolerant is able to operate even though some part is no longer performing correctly. Thus the focus of this book is on the software structures and mechanisms that can be designed into a system to enable its continued operation, even though a different part isn't working correctly. This book describes practices to improve the reliability and availability of software systems. These practices are currently in use in a variety of software application domains.
The next few sections define the vocabulary needed to discuss fault tolerance.
The terms fault, error and failure have very specific meanings.
A system failure occurs when the delivered service no longer complies with the specification, the latter being an agreed description of the system's expected function and/or service. An error is that part of the system state that is liable to lead to subsequent failure; an error affecting the service is an indication that a failure occurs or has occurred. The adjudged or hypothesized cause of an error is a fault. [Lap91, p. 4]
Every fault tolerant system composed of software ...