Tracking the propagation of data errors in software

When developing software that functions in a nonharmful manner in the presence of faults and errors (as defined in Laprie [27]), one requires knowledge of the behavior of the software under these exceptional conditions. In particular, one needs to know how faults and errors propagate to affect the execution of software. Knowing propagation pathways may, for instance, be of great help when deciding where to effectively place error detection and recovery mechanisms. Learning about error propagation Characteristics of a software system requires not only the ability to inject errors and monitor the effect that these have on system output but also the ability to monitor how these errors are transported through the system. Thus, high observability is required for these activities. Ideally, one should be able to observe every individual variable and data structure in the software. Chapter 15 gives a detailed presentation of PROPANE, the Propagation Analysis Environment, and is an extension of the work by Hiller et al. [20]. PROPANE enables the injection of faults and errors into software running on a desktop computer (currently for Windows NT/2000). PROPANE supports varied ways of probing a system, i.e., tracing internal variables and events during system operation, as well as injection of software faults and data errors. FI has been used for various purposes for many years [1, 7, 22]. FI-tools may inject errors in a number of ways, e.g., physical fault injection, radiation, etc. PROPANE uses a technique called SWIFI (Software-Implemented Fault Injection). Fault injections are performed by instrumenting the source code with both the correct code and the defect that is to be injected. With every fault, there is a

[1]  Jacob A. Abraham,et al.  FERRARI: A Flexible Software-Based Fault and Error Injection System , 1995, IEEE Trans. Computers.

[2]  Neeraj Suri,et al.  Assessing inter-modular error propagation in distributed software , 2001, Proceedings 20th IEEE Symposium on Reliable Distributed Systems.

[3]  Jean Arlat,et al.  Fault Injection and Dependability Evaluation of Fault-Tolerant Systems , 1993, IEEE Trans. Computers.

[4]  Inderpal S. Bhandari,et al.  Orthogonal Defect Classification - A Concept for In-Process Measurements , 1992, IEEE Trans. Software Eng..

[5]  William H. Sanders,et al.  Loki: a state-driven fault injector for distributed systems , 2000, Proceeding International Conference on Dependable Systems and Networks. DSN 2000.

[6]  D. P. Siewiorek,et al.  Evaluation and comparison of fault-tolerant software techniques , 1993 .

[7]  Kang G. Shin,et al.  DOCTOR: an integrated software fault injection environment for distributed real-time systems , 1995, Proceedings of 1995 IEEE International Computer Performance and Dependability Symposium.

[8]  Martin Hiller,et al.  An experimental comparison of fault and error injection , 1998, Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257).

[9]  Neeraj Suri,et al.  An approach for analysing the propagation of data errors in software , 2001, 2001 International Conference on Dependable Systems and Networks.

[10]  Henrique Madeira,et al.  Xception: A Technique for the Experimental Evaluation of Dependability in Modern Computers , 1998, IEEE Trans. Software Eng..

[11]  Daniel P. Siewiorek,et al.  Fault Injection Experiments Using FIAT , 1990, IEEE Trans. Computers.

[12]  Ram Chillarege,et al.  Understanding large system failures-a fault injection experiment , 1989, [1989] The Nineteenth International Symposium on Fault-Tolerant Computing. Digest of Papers.

[13]  Henrique Madeira,et al.  Xception: Software Fault Injection and Monitoring in Processor Functional Units1 , 1995 .

[14]  Ravishankar K. Iyer,et al.  DEPEND: A Simulation-Based Environment for System Level Dependability Analysis , 1997, IEEE Trans. Computers.

[15]  Ravishankar K. Iyer,et al.  NFTAPE: a framework for assessing dependability in distributed systems with lightweight fault injectors , 2000, Proceedings IEEE International Computer Performance and Dependability Symposium. IPDS 2000.

[16]  Ravishankar K. Iyer,et al.  Experimental evaluation , 1995 .

[17]  J. Arlat,et al.  Assessment of COTS microkernels by fault injection , 1999, Dependable Computing for Critical Applications 7.

[18]  William H. Sanders,et al.  Fault injection based on a partial view of the global state of a distributed system , 1999, Proceedings of the 18th IEEE Symposium on Reliable Distributed Systems.

[19]  Jean Arlat,et al.  Fault Injection for Dependability Validation: A Methodology and Some Applications , 1990, IEEE Trans. Software Eng..

[20]  Neeraj Suri,et al.  PROPANE: an environment for examining the propagation of errors in software , 2002, ISSTA '02.

[21]  Hermann Kopetz,et al.  Dependability: Basic Concepts and Terminology , 1992 .

[22]  Neeraj Suri,et al.  On the placement of software mechanisms for detection of data errors , 2002, Proceedings International Conference on Dependable Systems and Networks.

[23]  Ravishankar K. Iyer,et al.  An approach towards benchmarking of fault-tolerant commercial systems , 1996, Proceedings of Annual Symposium on Fault Tolerant Computing.

[24]  Daniel P. Siewiorek,et al.  FIAT-fault injection based automated testing environment , 1988, [1988] The Eighteenth International Symposium on Fault-Tolerant Computing. Digest of Papers.

[25]  Wei-Lun Kao,et al.  Experimental study of software dependability , 1995 .

[26]  Ravishankar K. Iyer,et al.  DEFINE: a distributed fault injection and monitoring environment , 1994, Proceedings of IEEE Workshop on Fault-Tolerant Parallel and Distributed Systems.