|
ABSTRACT
An approach is described for checking the methods of a class against a full specification. It shares with traditional model checking the idea of exhausting the entire space of executions within some finite bounds, and with traditional verification the idea of modular analysis, in which a method is analyzed, in isolation, for all possible calling contexts.The analysis involves an automatic two-phase reduction: first, to an intermediate form in relational logic (using a new encoding described here), and second, to a boolean formula (using existing techniques), which is then handed to an off the shelf SAT solver.A variety of implementations of the Java Collections Framework's List interface were checked against existing JML specifications. The analysis revealed bugs in the implementations, as well as errors in the specifications themselves.
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
|
6.170 Laboratory in Software Engineering, Fall 2001. http://www.ocw.mit.edu/OcwWeb/Electrical- Engineering-and-Computer-Science/6-170Fall- 2005/CourseHome/.
|
| |
2
|
GNU Trove: High performance collections for Java. http://trove4j.sourceforge.net/.
|
| |
3
|
Jakarta Commons-Collections. http://jakarta.apache.org/commons/collections/.
|
| |
4
|
JML Specifications for the Java Collections Framework. http://www.cs.iastate.edu/leavens/JMLrelease/javadocs/java/util/Collection.html.
|
| |
5
|
The Alloy Analyzer. http://alloy.mit.edu/.
|
| |
6
|
A. Andoni, D. Daniliuc, S. Khurshid, and D. Marinov. Evaluating the "Small Scope Hypothesis". Technical Report MIT-LCS-TR-921, MIT CSAIL, 2003.
|
 |
7
|
|
| |
8
|
|
 |
9
|
|
| |
10
|
Lilian Burdy , Yoonsik Cheon , David R. Cok , Michael D. Ernst , Joseph R. Kiniry , Gary T. Leavens , K. Rustan M. Leino , Erik Poll, An overview of JML tools and applications, International Journal on Software Tools for Technology Transfer (STTT), v.7 n.3, p.212-232, June 2005
[doi> 10.1007/s10009-004-0167-4]
|
| |
11
|
C.A.R. Hoare. Proofs of Correctness of Data Representations. Acta Informatica, 1(4), 1972.
|
| |
12
|
Sagar Chaki , Edmund Clarke , Alex Groce , Somesh Jha , Helmut Veith, Modular verification of software components in C, Proceedings of the 25th International Conference on Software Engineering, May 03-10, 2003, Portland, Oregon
|
| |
13
|
|
 |
14
|
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
|
 |
15
|
Thomas A. Henzinger , Ranjit Jhala , Rupak Majumdar , Grégoire Sutre, Lazy abstraction, Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.58-70, January 16-18, 2002, Portland, Oregon
|
| |
16
|
|
 |
17
|
|
 |
18
|
|
 |
19
|
|
| |
20
|
|
 |
21
|
|
| |
22
|
B. W. Lampson. Software Components: Only the Giants Survive. In K. S. J. Andrew Herbert, editor, Computer Systems: Papers for Roger Needham, Lecture Notes in Computer Science, pages 59--65. Springer-Verlag Berlin, 2004.
|
| |
23
|
|
| |
24
|
|
| |
25
|
M. D. McIlroy. Mass-Produced Software Components. In J. M. Buxton, P. Naur, and B. Randell, editors, Software Engineering Concepts and Techniques (1968 NATO Conference of Software Engineering), pages 88--98. NATO Science Committee, Oct 1968.
|
| |
26
|
|
| |
27
|
Sun Microsystems. Java Collections Framework. http://java.sun.com/j2se/1.5.0/docs/guide/collections/.
|
| |
28
|
|
| |
29
|
E. Torlak and D. Jackson. The Design of a Relational Engine. Submitted for publication, 2006.
|
| |
30
|
|
| |
31
|
|
| |
32
|
M. Vaziri. Finding Bugs in Software with a Constraint Solver. PhD thesis, Massachusetts Institute of Technology, MA, USA, Feb. 2004.
|
| |
33
|
M. Vaziri and D. Jackson. Checking Heap-Manipulating Procedures with a Constraint Solver. In 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2003), 2003.
|
| |
34
|
|
| |
35
|
Y. Xie and A. Aiken. Saturn: A SAT-Based Tool for Bug Detection. In 17th International Conference on Computer Aided Verification (CAV 2005), Edinburgh, Scotland, UK, 2005.
|
|