On the Effectiveness of Run-Time Checks

Run-time checks are often assumed to be a cost-effective way of improving the dependability of software components, by checking required properties of their outputs and flagging an output as incorrect if it fails the check. However, evaluating how effective they are going to be in a future application is difficult, since the effectiveness of a check depends on the unknown faults of the program to which it is applied. A programming contest, providing thousands of programs written to the same specifications, gives us the opportunity to systematically test run-time checks to observe statistics of their effects on actual programs. In these examples, run-time checks turn out to be most effective for unreliable programs. For more reliable programs, the benefit is relatively low as compared to the gain that can be achieved by other (more expensive) measures, most notably multiple-version diversity.

[1]  Henrique Madeira,et al.  Experimental evaluation of the fail-silent behaviour in programs with consistency checks , 1996, Proceedings of Annual Symposium on Fault Tolerant Computing.

[2]  Johan Karlsson,et al.  Reducing critical failures for control algorithms using executable assertions and best effort recovery , 2001, 2001 International Conference on Dependable Systems and Networks.

[3]  Neeraj Suri,et al.  On Systematic Design of Fast and Perfect Detectors , 2002 .

[4]  Hermann Kopetz,et al.  Fault tolerance, principles and practice , 1990 .

[5]  Nancy G. Leveson,et al.  The Use of Self Checks and Voting in Software Error Detection: An Empirical Study , 1990, IEEE Trans. Software Eng..

[6]  Andrea Bondavalli,et al.  Dependable Computing EDCC-4 , 2002, Lecture Notes in Computer Science.

[7]  Steven Skiena,et al.  Programming Challenges , 2003, Texts in Computer Science.

[8]  Lorenzo Strigini,et al.  The reliability of diverse systems: a contribution using modelling of the fault creation process , 2001, 2001 International Conference on Dependable Systems and Networks.

[9]  Jean-Marc Jézéquel,et al.  Design by Contract: The Lessons of Ariane , 1997, Computer.

[10]  Peter G. Bishop,et al.  An exploration of software faults and failure behaviour in a large population of programs , 2004, 15th International Symposium on Software Reliability Engineering.

[11]  Meine van der Meulen,et al.  The Effectiveness of Choice of Programming Language as a Diversity Seeking Decision , 2005, EDCC.

[12]  Manuel Blum,et al.  Software reliability via run-time result-checking , 1997, JACM.

[13]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.