Relative correctness: A bridge between testing and proving
Document Type
Conference Proceeding
Publication Date
1-1-2016
Abstract
Relative correctness is the property of a program to be more- correct than another with respect to a specification. Whereas tradition-Ally we distinguish between two categories of candidate programs, namely correct programs and incorrect programs, relative correctness arranges candidate programs on a partial ordering structure, whose maximal elements are the correct programs. Also, whereas traditionally we deploy proof methods on correct programs to prove their correctness and we de- ploy testing methods on incorrect programs to detect and remove their faults, relative correctness enables us to bridge this gap by showing that we can deploy static analytical methods to an incorrect program to prove that while it may be incorrect, it is still more-correct than another. We are evolving a technique, called debugging without testing, in which we can remove a fault from a program and prove that the new program is more-correct than the original, all without any testing (and its associated uncertainties/ imperfections). Given that there are orders of magnitude more incorrect programs than correct programs in use nowadays, this has the potential to expand the scope of proving methods significantly. Also, relative correctness has other broad implications for testing and proving, which we briefly explore in this paper.
Identifier
84992758968 (Scopus)
Publication Title
Ceur Workshop Proceedings
ISSN
16130073
First Page
141
Last Page
156
Volume
1689
Recommended Citation
Diallo, Nafi; Ghardallou, Wided; and Mili, Ali, "Relative correctness: A bridge between testing and proving" (2016). Faculty Publications. 10810.
https://digitalcommons.njit.edu/fac_pubs/10810
