Continuity in software systems

Most engineering artifacts behave in a continuous fashion, and this property is generally believed to underlie their dependability. In contrast, software systems do not have continuous behavior, which is taken to be an underlying cause of their undependability. The theory of software reliability has been questioned because technically the sampling on which it is based applies only to continuous functions.This paper examines the role of continuity in engineering, particularly in testing and certifying artifacts, then considers the analogous software situations and the ways in which software is intrinsically unlike other engineered objects. Several definitions of software 'continuity' are proposed and related to ideas in software testing. It is shown how 'continuity' can be established in practice, and the consequences for testing and analysis of knowing that a program is 'continuous.Underlying any use of software 'continuity' is the continuity of its specification in the usual mathematical sense. However, many software applications are intrinsically discontinuous and one reason why software is so valuable is its natural ability to handle these applications, where it makes no sense to seek software 'continuity' or to blame poor dependability on its absence.

[1]  Manuel Blum,et al.  Designing programs that check their work , 1989, STOC '89.

[2]  Laurence Boxer,et al.  Digitally continuous functions , 1994, Pattern Recognit. Lett..

[3]  Richard G. Hamlet,et al.  Predicting dependability by testing , 1996, ISSTA '96.

[5]  Ricky W. Butler,et al.  The infeasibility of experimental quantification of life-critical software reliability , 1991 .

[6]  William Addis,et al.  Structural engineering : the nature of theory and design , 1990 .

[7]  Paul Ammann,et al.  Data Diversity: An Approach to Software Fault Tolerance , 1988, IEEE Trans. Computers.

[8]  Matthew M. Geller Test data as an aid in proving program correctness , 1978, CACM.

[9]  Martin L. Shooman,et al.  Software Engineering: Design, Reliability, and Management , 1983 .

[10]  William E. Howden,et al.  Reliability of the Path Analysis Testing Strategy , 1976, IEEE Transactions on Software Engineering.

[11]  Lori A. Clarke,et al.  Partition Analysis: A Method Combining Testing and Verification , 1985, IEEE Transactions on Software Engineering.

[12]  Azriel Rosenfeld,et al.  'Continuous' functions on digital pictures , 1986, Pattern Recognit. Lett..

[13]  Henry Petroski,et al.  To Engineer Is Human: The Role of Failure in Successful Design , 1986 .

[14]  G. B. Finelli,et al.  The Infeasibility of Quantifying the Reliability of Life-Critical Real-Time Software , 1993, IEEE Trans. Software Eng..

[15]  Martin L. Shooman,et al.  Software Engineering: Reliability, Development and Management , 1983 .