Software reliability via run-time result-checking
- 1 November 1997
- journal article
- Published by Association for Computing Machinery (ACM) in Journal of the ACM
- Vol. 44 (6) , 826-849
- https://doi.org/10.1145/268999.269003
Abstract
We review the field of result-checking, discussing simple checkers and self-correctors. We argue that such checkers could profitably be incorporated in software as an aid to efficient debugging and enhanced reliability. We consider how to modify traditional checking methodologies to make them more appropriate for use in real-time, real-number computer systems. In particular, we suggest that checkers should be allowed to use stored randomness: that is, that they should be allowed to generate, preprocess, and store random bits prior to run-time, and then to use this information repeatedly in a series of run-time checks. In a case study of checking a general real-number linear transformation (e.g., a Fourier Transform), we present a simple checker which uses stored randomness, and a self-corrector which is particularly efficient if stored randomness is employed.Keywords
This publication has 17 references indexed in Scilit:
- Reflections on the Pentium division bugIEEE Transactions on Computers, 1996
- Checking the correctness of memoriesAlgorithmica, 1994
- Self-testing/correcting with applications to numerical problemsJournal of Computer and System Sciences, 1993
- The infeasibility of quantifying the reliability of life-critical real-time softwareIEEE Transactions on Software Engineering, 1993
- Algebraic methods for interactive proof systemsJournal of the ACM, 1992
- On being incoherent without being very hardcomputational complexity, 1992
- Arithmetization: A new method in structural complexity theorycomputational complexity, 1991
- Non-deterministic exponential time has two-prover interactive protocolscomputational complexity, 1991
- Are there interactive protocols for co-NP languages?Information Processing Letters, 1988
- Programming pearlsCommunications of the ACM, 1986