|
ABSTRACT
The earlier errors are found, the less costly they are to fix. This also holds true of errors in specifications. While research into Static Program Verification (SPV) in general, and Extended Static Checking (ESC) in particular, has made great strides in recent years, there is little support for detecting errors in specifications beyond ordinary type checking. This paper reports on recent enhancements that we have made to ESC/Java2, enabling it to report errors in JML specifications due to (method or Java operator) precondition violations and this, at a level of diagnostics that is on par with its ability to report such errors in program code. The enhancements also now make it possible for ESC/Java2 to report errors in specifications for which no corresponding source is available. Applying this new feature to, e.g., the JML specifications of classes in java.*, reveals over 50 errors, including inconsistencies. We describe the adjustment to the assertion semantics necessary to make this possible, and we provide an account of the (rather small) design changes needed to realize the enhancements.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
L. Burdy, A. Requet, and J.-L. Lanet, "Java Applet Correctness: A Developer-Oriented Approach". Proceedings of the International Symposium of Formal Methods Europe, vol. 2805 of LNCS. Springer, 2003.
|
| |
3
|
|
| |
4
|
P. Chalin, "Reassessing JML's Logical Foundation". Proceedings of the 7th Workshop on Formal Techniques for Java-like Programs (FTfJP'05), Glasgow, Scotland, July, 2005.
|
| |
5
|
P. Chalin, "De-risking the Verifying Compiler Project: Recovering Soundness", Dependable Software Research Group, Department of Computer Science and Software Engineering, Concordia University, ENCS-CSE-TR 2005--009, 2006.
|
| |
6
|
P. Chalin, J. Kiniry, G. T. Leavens, and E. Poll, "Beyond Assertions: Advanced Specification and Verification with JML and ESC/Java2". Fourth International Symposium on Formal Methods for Components and Objects (FMCO'05), 2005.
|
| |
7
|
D. R. Cok and J. R. Kiniry, "ESC/Java2: Uniting ESC/Java and JML". In G. Barthe, L. Burdy, M. Huisman, J.-L. Lanet, and T. Muntean editors, Proceedings of the International Workshop on the Construction and Analysis of Safe, Secure, and Interoperable Smart Devices (CASSIS'04), Marseille, France, March 10--14, vol. 3362 of LNCS, pp. 108--128. Springer, 2004.
|
| |
8
|
R. DeLine and K. R. M. Leino, "BoogiePL: A Typed Procedural Language for Checking Object-Oriented Programs", Microsoft Research, Technical Report, 2005.
|
| |
9
|
D. L. Detlefs, G. Nelson, and J. B. Saxe, "A Theorem Prover For Program Checking", Compaq SRC, Research Report 159, 2002.
|
 |
10
|
Robert Bruce Findler , Matthias Felleisen, Contract Soundness for object-oriented languages, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.1-15, October 14-18, 2001, Tampa Bay, FL, USA
|
 |
11
|
Cormac Flanagan , K. Rustan M. Leino , Mark Lillibridge , Greg Nelson , James B. Saxe , Raymie Stata, Extended static checking for Java, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
| |
12
|
D. Gries and F. B. Schneider, "Avoiding the Undefined by Underspecification", in Computer Science Today: Recent Trends and Developments, vol. 1000, J. v. Leeuwen, Ed.: Springer-Verlag, 1995, pp. 366--373.
|
| |
13
|
|
| |
14
|
C. A. R. Hoare and J. He, Unifying Theories of Programming. Prentice Hall, 1998.
|
| |
15
|
|
| |
16
|
C. B. Jones and C. A. Middelburg, "A Typed Logic of Partial Functions Reconstructed Classically", Acta Informatica, 31(5):399--430, 1994.
|
| |
17
|
J. R. Kiniry, P. Chalin, and C. Hurlin, "Integrating Static Checking and Interactive Verification: Supporting Multiple Theories and Provers in Verification". Proceedings of the International Conference on Verified Software: Theories, Tools, Experiments (VSTTE), Zürich, Switzerland, October 10--13, 2005.
|
| |
18
|
B. Konikowska, "Two Over Three: A Two-Valued Logic for Software Specification and Validation Over a Three-Valued Predicate Calculus", Journal of Applied Non-Classical Logics, 3:39--71, 1993.
|
| |
19
|
|
| |
20
|
P. G. Larsen and N. Plat, "Introduction to Overture". First Overture Workshop, Newcastle upon Tyne, UK, July, 18, 2005.
|
| |
21
|
G. T. Leavens, "JML's Rich, Inherited Specifications for Behavioral Subtypes", Department of Computer Science, Iowa State University, Ames, Iowa. USA, TR #06--22, 2006.
|
| |
22
|
G. T. Leavens and Y. Cheon, "Design by Contract with JML", www.jmlspecs.org, 2006.
|
| |
23
|
|
| |
24
|
G. T. Leavens, E. Poll, C. Clifton, Y. Cheon, C. Ruby, D. Cok, P. Müller, J. Kiniry, and P. Chalin, "JML Reference Manual", http://www.jmlspecs.org, 2006.
|
| |
25
|
K. R. M. Leino, "Ecstatic: An object-oriented programming language with an axiomatic semantics". Fourth International Workshop on Foundations of Object-Oriented Languages, January, 1997.
|
| |
26
|
K. R. M. Leino, J. B. Saxe, and R. Stata, "Checking Java programs via guarded commands", COMPAQ SRC, Palo Alto, CA, SRC Technical Note 1999--002. 21 May 1999, 1999.
|
| |
27
|
C. Marché, C. Paulin-Mohring, and X. Urbain, "The Krakatoa tool for certification of Java/JavaCard programs annotated in JML", Journal of Logic and Algebraic Programming, 58(1--2):89--106, 2004.
|
| |
28
|
|
| |
29
|
|
| |
30
|
|
| |
31
|
|
| |
32
|
|
| |
33
|
SRI International, "The PVS Specification and Verification System", http://pvs.csl.sri.com.
|
| |
34
|
|
|