Access the full text.
Sign up today, get DeepDyve free for 14 days.
References for this paper are not available at this time. We will be adding them shortly, thank you for your patience.
Finding Bugs with a Constraint Solver Finding Bugs with Constraint Solver Daniel Jackson & Mandana Vaziri MIT Laboratory for Computer Science 545 Technology Square Cambridge, Massachusetts 02139 {dnj, vaziri}@lcs.mit.edu ABSTRACT A method for finding bugs in code is presented. For given small numbers j and k, the code of a procedure is translated into a relational formula whose models represent all execution traces that involve at most j heap cells and k loop iterations. This formula is conjoined with the negation of the procedure s specification. The models of the resulting formula, obtained using a constraint solver, are counterexamples: executions of the code that violate the specification. The method can analyze millions of executions in seconds, and thus rapidly expose quite subtle flaws. It can accommodate calls to procedures for which specifications but no code is available. A range of standard properties (such as absence of null pointer dereferences) can also be easily checked, using predefined specifications. KEYWORDS Detecting bugs; relational formulas; Alloy language; constraint solvers; testing; static analysis; model checking. 1 INTRODUCTION This paper describes a method for finding bugs in code. It requires no user input beyond a specification, is completely automatic, and, when a bug
ACM SIGSOFT Software Engineering Notes – Association for Computing Machinery
Published: Sep 1, 2000
Read and print from thousands of top scholarly journals.
Already have an account? Log in
Bookmark this article. You can see your Bookmarks on your DeepDyve Library.
To save an article, log in first, or sign up for a DeepDyve account if you don’t already have one.
Copy and paste the desired citation format or use the link below to download a file formatted for EndNote
Access the full text.
Sign up today, get DeepDyve free for 14 days.
All DeepDyve websites use cookies to improve your online experience. They were placed on your computer when you launched this website. You can change your cookie settings through your browser.