DocumentCode
1438058
Title
The use of self checks and voting in software error detection: an empirical study
Author
Leveson, Nancy G. ; Cha, Stephen S. ; Knight, John C. ; Shimeall, Timothy J.
Author_Institution
Dept. of Inf. & Comput. Sci., California Univ., Irvine, CA, USA
Volume
16
Issue
4
fYear
1990
fDate
4/1/1990 12:00:00 AM
Firstpage
432
Lastpage
443
Abstract
The results of an empirical study of software error detection using self checks and N -version voting are presented. Working independently, each of 24 programmers first prepared a set of self checks using just the requirements specification of an aerospace application, and then each added self checks to an existing implementation of that specification. The modified programs were executed to measure the error-detection performance of the checks and to compare this with error detection using simple voting among multiple versions. The analysis of the checks revealed that there are great differences in the ability of individual programmers to design effective checks. It was found that some checks that might have been effective failed to detect an error because they were badly placed, and there were numerous instances of checks signaling nonexistent errors. In general, specification-based checks alone were not as effective as specification-based checks combined with code-based checks. Self checks made it possible to identify faults that had not been detected previously by voting 28 versions of the program over a million randomly generated inputs. This appeared to result from the fact that the self checks could examine the internal state of the executing program, whereas voting examines only final results of computations. If internal states had to be identical in N -version voting systems, then there would be no reason to write multiple versions
Keywords
fault tolerant computing; software reliability; N-version voting; code-based checks; requirements specification; self checks; software error detection; voting; Application software; Computer errors; Computer science; Fault detection; Fault diagnosis; Fault tolerance; Hardware; Programming profession; Testing; Voting;
fLanguage
English
Journal_Title
Software Engineering, IEEE Transactions on
Publisher
ieee
ISSN
0098-5589
Type
jour
DOI
10.1109/32.54295
Filename
54295
Link To Document