Title :
Design, verification, and validation of self-checking software components
Author :
Geoghegan, J. ; Avresky, Dimiter
Author_Institution :
Dept. of Comput. Sci., Texas A&M Univ., College Station, TX, USA
Abstract :
We propose a formal approach for adding fault detection to software. An assertion-based formalism is used to represent specifications and verify completeness and consistency. This specification is used to generate a flow graph, which is used to construct an exemplar-path tree. This representation is then used to generate an input set to exercise and verify the implementation. Previous software fault-tolerance (SFT) techniques emphasized algorithm-based fault tolerance (ABFT) which focused on detecting hardware faults that corrupted data structure contents. We propose a method that also detects hardware faults, which cause program flow errors. Our technique embeds two types of software checks. The first is based on the ABFT techniques described in the literature. The second type of check is used to detect faults that cause program flow errors. The exemplar-path tree provides information that can be used to predict a future program location, given the current location. During execution, program locations are recorded, along with expected locations, as determined from the exemplar-path tree. This information then is used to verify, that the future location is executed as expected. Hardware fault coverage has been estimated through experiments with the fault injection tool, SOFIT. Faults of differing durations were injected into memory, address bus, data bus, and CPU registers. The data presented, demonstrate the effectiveness of the method for detecting hardware faults
Keywords :
fault tolerant computing; formal specification; program verification; software fault tolerance; system buses; tree data structures; CPU registers; SOFIT fault injection tool; address bus; assertion-based formalism; completeness verification; consistency verification; data bus; data structure content corruption; exemplar-path tree; fault detection; flow graph; formal approach; future program location prediction; hardware fault coverage; hardware fault detection; input set; program flow errors; self-checking software component design; self-checking software component validation; self-checking software component verification; software fault-tolerance techniques; specifications; Computer errors; Data structures; Embedded software; Fault detection; Fault tolerance; Flow graphs; Hardware; Registers; Software algorithms; Tree graphs;
Conference_Titel :
Computers and Communications, 1996., Conference Proceedings of the 1996 IEEE Fifteenth Annual International Phoenix Conference on
Conference_Location :
Scottsdale, AZ
Print_ISBN :
0-7803-3255-5
DOI :
10.1109/PCCC.1996.493666