With the recent growing of software complexity, software faults (i.e., bugs) represent a major cause of failures in computer systems. In spite of good software engineering practices, it is unfeasible to develop bug-free software. Therefore, business- and mission-critical systems are in need of fault tolerance algorithms and mechanisms to cope with residual software faults that escape the development process. The injection of software faults consists in the deliberate insertion of bugs in a software component for the following purposes:
The SAFE tool enables the injection of representative software faults in C/C++ programs for dependability assessment purposes. Faults injected by the tool encompass the most common types of faults that affect software systems, including assignment, checking, algorithm and interface faults. First, the tool statically analyzes the target program, and builds an internal representation (i.e., an Abstract Syntax Tree) of the source code. Then, it automatically locates fault locations in the source code that are best suited to emulate real software faults. Finally, the tool creates a set of ".patch" files, each containing a faulty version of the code.
The fault injection process with SAFE
The tool has been successfully used with complex C and C++ programs, such as the Apache Web Server, the MySQL DBMS, and the Linux and RTEMS operating systems. The tool currently runs on Linux. The faulty code generated by the tool is platform-independent (it can be compiled wherever the original, non-faulty code can).
The tool is freely available for educational and research purposes. To obtain the current version of the tool, please send me an e-mail (see contact info on the home page), indicating your affiliation, your research interests, and the reason for your interest on the SAFE tool. For commercial use and support, please contact Critiware s.r.l..