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.
Original language | English (US) |
---|---|
Pages (from-to) | 141-156 |
Number of pages | 16 |
Journal | CEUR Workshop Proceedings |
Volume | 1689 |
State | Published - 2016 |
Event | 10th Workshop on Verification and Evaluation of Computer and Communication System, VECoS 2016 - Tunis, Tunisia Duration: Oct 6 2016 → Oct 7 2016 |
All Science Journal Classification (ASJC) codes
- General Computer Science
Keywords
- Absolute correctness
- Debugging without testing
- Program proving
- Program testing
- Programming without refining
- Relative correctness
- Testing for relative correctness