ACM Home Page
Please provide us with feedback. Feedback
DySy: dynamic symbolic execution for invariant inference
Full text PdfPdf (244 KB)
Source
International Conference on Software Engineering archive
Proceedings of the 30th international conference on Software engineering table of contents
Leipzig, Germany
SESSION: Formal analysis table of contents
Pages 281-290  
Year of Publication: 2008
ISBN:978-1-60558-079-1
Authors
Christoph Csallner  Georgia Tech, Atlanta, GA, USA
Nikolai Tillmann  Microsoft Research, Redmond, WA, USA
Yannis Smaragdakis  University of Oregon, Eugene, OR, USA
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 36,   Downloads (12 Months): 238,   Citation Count: 5
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1368088.1368127
What is a DOI?

ABSTRACT

Dynamically discovering likely program invariants from concrete test executions has emerged as a highly promising software engineering technique. Dynamic invariant inference has the advantage of succinctly summarizing both "expected" program inputs and the subset of program behaviors that is normal under those inputs. In this paper, we introduce a technique that can drastically increase the relevance of inferred invariants, or reduce the size of the test suite required to obtain good invariants. Instead of falsifying invariants produced by pre-set patterns, we determine likely program invariants by combining the concrete execution of actual test cases with a simultaneous symbolic execution of the same tests. The symbolic execution produces abstract conditions over program variables that the concrete tests satisfy during their execution. In this way, we obtain the benefits of dynamic inference tools like Daikon: the inferred invariants correspond to the observed program behaviors. At the same time, however, our inferred invariants are much more suited to the program at hand than Daikon's hard-coded invariant patterns. The symbolic invariants are literally derived from the program text itself, with appropriate value substitutions as dictated by symbolic execution.

We implemented our technique in the DySy tool, which utilizes a powerful symbolic execution and simplification engine. The results confirm the benefits of our approach. In Daikon's prime example benchmark, we infer the majority of the interesting Daikon invariants, while eliminating invariants that a human user is likely to consider irrelevant.


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
3
 
4
M. Colón, S. Sankaranarayanan, and H. Sipma. Linear invariant generation using non-linear constraint solving. In Proc. 15th International Conference on Computer-Aided Verification (CAV), pages 420--432. Springer, July 2003.
5
6
7
8
 
9
 
10
11
 
12
13
14
 
15
16
17
18
 
19
J. Henkel and A. Diwan. Discovering algebraic specifications from Java classes. In Proc. 17th European Conference on Object-Oriented Programming (ECOOP), pages 431--456. Springer, July 2003.
20
 
21
A. K. Kolawa. Method and system for generating a computer program test suite using dynamic symbolic execution of Java programs. United States Patent 5784553, July 1998.
 
22
 
23
G. T. Leavens, A. L. Baker, and C. Ruby. Preliminary design of JML: A behavioral interface specification language for Java. Technical Report TR98-06y, Department of Computer Science, Iowa State University, June 1998.
24
25
 
26
F. Logozzo. Modular Static Analysis of Object-Oriented Languages. PhD thesis, Ecole Polytechnique, June 2004.
27
 
28
C. S. Pasareanu and W. Visser. Verification of Java programs using symbolic execution and invariant generation. In Proc. 11th International SPIN Workshop, pages 164--181. Springer, Apr. 2004.
29
30
 
31
 
32
N. Tillmann, F. Chen, and W. Schulte. Discovering likely method specifications. In Proc. 8th International Conference on Formal Engineering Methods (ICFEM'06), LNCS. Springer-Verlag, 2006.
 
33
N. Tillmann and J. de Halleux. Pex - white box test generation for .NET. In Proc. Second International Conference on Tests and Proofs (TAP). Springer, Apr. 2008. To appear.
 
34
35
 
36
37


Collaborative Colleagues:
Christoph Csallner: colleagues
Nikolai Tillmann: colleagues
Yannis Smaragdakis: colleagues