Browse over 20 million
homework answers & study documents

A Survey on Software Fault Tolerance Using Fault Injection Techniques

Type

Study Guide

Rating

Showing Page:
1/6
Software Fault Tolerance Using Fault Injection
Techniques
A survey
Zeshan Khan
Deptment of Computer Science.
Muhammad Ali Jinnah University Islamabad, Pakistan.
Zeeshan.khan@jinnah.edu.pk
Abstract—the Fault tolerance is very important for the quality
of the software. There are various techniques for providing fault
tolerance. The techniques in this survey are relevant to the fault
injection. Fault injection is the best technique for the software
where we have to check the fault tolerance of software. This
technique does not provide the exact number of faults, that may
occur, but a good and cost efficient estimation of the number and
type of faults that may occur, so that the fault could be removed
or tolerated. The papers that are being discussed are about fault
tolerance using fault injection technique and the comparison
shows the technique that’s best for which type of software.
I. INTRODUCTION
The Fault tolerance is very important for the quality of the
software. Software after development and testing must be
insured about fault tolerance.
1) Testing Fault Tolerance using Software Fault Insertion
Definition
The international Federation for Information Processing (IFIP)
Working Group 10.4 has defined:
FaultAdjudged or hypothesized cause of an error.
Error Part of system state that is liable to lead to
failure, Manifestation of a fault in a system.
Failure Deviation of the delivered service from
compliance with the specification. Transition from
correct service delivery to incorrect service.
Each fault may have the following associated attributes:
Type
Locality
Latency
Frequency
Severity
There are three types of faults.
Critical Fault
Major Fault
Minor Fault
There are several methods for state injection:
Process-based
Debugger-based
Message-based
Storage-based
Command-based
There are various techniques for providing fault tolerance. The
techniques in this survey are relevant to the fault injection.
The fault injection is to inject fault and then test how many
faults have been detected then on the basis of these detected
faults the quality of the technique is been insured.
Fault injection is the best technique for the software where we
have to check the fault tolerance of a software. This technique
does not provide the exact number of faults, that may occur,
but a good and cost efficient estimation of the number and type
of faults that may occur, so that the fault could be removed or
tolerated.
The papers that are being discussed are about fault tolerance
using fault injection technique and the comparison shows the
technique that’s best for which type of software.
II. METHODS
Several methods for this type of fault tolerance are being used
like GOOFI (Generic Object-Oriented Fault Injection Tool)
[1], Ferrari: A Flexible Software-based Fault & Error Injection
System [2], FIAT Fault Injection Based Automated Testing
Environment [3], SFIT: Software Fault Insertion Testing for
Fault Tolerance[4] and SFI (Symbolic Fault Injection) [5]. The
details are described below.
A. GOOFI (Generic Object-Oriented Fault Injection Tool)
GOOFI is a tool and it works in the different phases. The
phases of GOOFI are as:
Configuration Phase: This phase contains a GUI having
different fields like name, positions to be implemented in a
specific environment to perform its advance scan-chain logic
through Thor RD microprocessor and all information stored in
the “Target System Data” database table. Few locations in

Sign up to view the full document!

lock_open Sign Up
scan-chain are read only and use to observe microprocessor
state.
Setup Phase: In this phase user select target system, and then
possible fault location or fault model can be selected from the
given list. The selected fault model will be stored in Campaign
Data table in its database. The stored information can be
modifying by the user. Other specific options like name,
workload, fault model, I/O data etc can be selected here. A loop
will work to find the actual fault. All information stored in
database can be used by this phase.
Fault injection Phase: The SCIFI fault injection algorithm
starts reading all information stored in database table named
Campaign Data. After analyzing all information provided in
database the SCIFI algorithm steps followed by the system like
how many times system halted under which circumstances
until the termination occurred. System state information is
logged to the database table Logged System State. Then target
system reinitialized and a new tool implement for fault
detection.
Analysis Phase: When the required data collected by system
the analysis phase begins. This has different points to trace out
exact fault.
* SWIFI & Pin-level can only be used when system prototype
is available.
As some tools are available with custom designed user
interface but porting a technique for a new tool can be time
consuming-process.
NFTAPE; is a recent fault tool available that depends upon
lightweight fault injectors, triggers, monitors & other
components but customized as required.
GOOFI includes all the above mentioned characteristics
available in different tool and techniques also it can be
migrated by using custom design user interface according to
requirements. Current version of GOOFI supports pre-runtime
SWIFI & SCIFI where SCIFI is Scan-Chain Implemented
Fault Injection. GOOFI has three-layered architecture.
Top or application layer has application Graphical User
Interface (GUI) with different useful options available.
Middle layer has main java classes, which include Fault
Injection Algorithms” & “Framework”. Further “Target
System Interface” is another part of it. Finally the lowest layer
has database and interface to the database.
Two things are must to do, new window in GUI & a new fault
injection algorithm class must be implemented when adding a
new fault injection technique to GOOFI. As we know SCIFI,
SWIFI & Pin-level are abstract methods that can be obtained
during new implementation.
When support for new target system is added to GOOFI, a
new Target System Interface class must be created. For this
purpose, implement abstract methods used by the fault
injection algorithms.
In GOOFI database, Target System Data table stores all info
about the target system required for setting up new fault
injection campaigns & Campaign Data stores info needed to
conduct a campaign. Both data provided by user from GUI.
Third table logged System State stores the system state before
and after experiment.
Through SCIFI technique, a specific target system built
around the Thor RD microprocessor. Conducting fault
injection campaigns using GOOFI evolves four phases;
configuration, set-up, fault injection & analysis phase.
GOOFI Phases: There are four phases in GOOFI.
1) Effective errors
Detected errors: The errors detected by the error de-
tection mechanisms of the target system.
Escaped errors: The errors that escapes the error
detection mechanisms causing failures such as incor-
rect results & timeliness violations.
2) Non-effective errors
Latent errors: The difference between correct sys-
tem state logged and after implementing fault detec-
tion tool experiment.
Overwritten errors: No difference between correct
system states logged after the reference execution
and the system state logged after the fault injection
experiment terminated.
Some Details:
GOOFI is a tool
Various target systems & different fault injection
techniques can use it
It uses Java and SQL compatible database. Cur-
rent version supports pre-runtime software imple-
mented fault injection & Scan-chain implemented
fault injection
Identifies weakness in computer system design
It can be implemented in an “Analytical model”
to check availability & reliability
Previous Tools
For Simulation (Design Cycle)
1) MEFISTO
2) VERIFY
3) DEPEND
For Pin-level fault injection
1) RIFLE [6]
2) MESSALINE
For Physical Systems; By using Software
Implemented Fault Injection {SWIFI}
1) XCEPTION
2) FIAT
3) FERRARI
3) Conclusion: GOOFI (Generic Object-Oriented Fault
Injection) tool is implemented in Java language to support
portable client server environment and portable SQL-
database used to implement the tool.

Sign up to view the full document!

lock_open Sign Up

Sign up to view the full document!

lock_open Sign Up

Anonymous
Really great stuff, couldn't ask for more. The assignment was done with remarkable detail.

Anonymous
Solid work, thanks.

Anonymous
Goes above and beyond expectations !

Studypool
4.7
Trustpilot
4.5
Sitejabber
4.4