skip to main content
10.1145/781131.781152acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Debugging temporal specifications with concept analysis

Published: 09 May 2003 Publication History

Abstract

Program verification tools (such as model checkers and static analyzers) can find many errors in programs. These tools need formal specifications of correct program behavior, but writing a correct specification is difficult, just as writing a correct program is difficult. Thus, just as we need methods for debugging programs, we need methods for debugging specifications.This paper describes a novel method for debugging formal, temporal specifications. Our method exploits the short program execution traces that program verification tools generate from specification violations and that specification miners extract from programs. Manually examining these traces is a straightforward way to debug a specification, but this method is tedious and error-prone because there may be hundreds or thousands of traces to inspect. Our method uses concept analysis to automatically group the traces into highly similar clusters. By examining clusters instead of individual traces, a person can debug a specification with less work.To test our method, we implemented a tool, Cable, for debugging specifications. We have used Cable to debug specifications produced by Strauss, our specification miner. We found that using Cable to debug these specifications requires, on average, less than one third as many user decisions as debugging by examining all traces requires. In one case, using Cable required only 28 decisions, while debugging by examining all traces required 224.

References

[1]
Glenn Ammons. Strauss: A Specification Miner. PhD thesis, University of Wisconsin, Madison, May 2003.]]
[2]
Glenn Ammons, Rastislav Bodík, and James R. Larus. Mining specifications. In Proceedings of the 2002 ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '02), pages 4--16, January 2002.]]
[3]
Thomas Ball and Sriram K. Rajamani. The SLAM project: debugging system software via static analysis. In Proceedings of the 2002 ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '02), pages 1--3, January 2002.]]
[4]
William R. Bush, Jonathan D. Pincus, and David J. Sielaff. A static analyzer for finding dynamic programming errors. Software---Practice and Experience, 30:775--802, 2000.]]
[5]
James C. Corbett, Matthew B. Dwyer, John Hatcliff, Shawn Laubach, Corina S. Pasareanu, Robby, and Hongjun Zheng. Bandera: Extracting finite-state models from Java source code. In Proceedings of the 22nd International Conference on Software Engineering, June 2000.]]
[6]
Manuvir Das, Sorin Lerner, and Mark Seigle. ESP: Path-sensitive program verification in polynomial time. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PLDI), pages 57--68, 2002.]]
[7]
Robert DeLine and Manuel Fähndrich. Enforcing high-level protocols in low-level software. In Proceedings of the ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation (PLDI), pages 59--69, June 2001.]]
[8]
Michael D. Ernst. Dynamically Discovering Likely Program Invariants. PhD thesis, University of Washington, August 2000.]]
[9]
Cormac Flanagan and K. Rustan M. Leino. Houdini, an annotation assistant for ESC/Java. In International Symposium on FME 2001: Formal Methods for Increasing Software Productivity, LNCS, volume 1, 2001.]]
[10]
Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, and Raymie Stata. Extended static checking for Java. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PDLI), pages 234--245, June 2002.]]
[11]
Emden R. Gansner and Stephen C. North. An open graph visualization system and its applications to software engineering. Software---Practice and Experience, 30(11):1203--1233, September 1999.]]
[12]
Patrice Godefroid. Model checking for programming languages using VeriSoft. In Proceedings of the 24th ACM ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 174--186, January 1997.]]
[13]
Robert Godin, Rokia Missaoui, and Hassan Alaoui. Incremental concept formation algorithms based on galois (concept) lattices. Computational Intelligence, 11(2):246--267, 1995.]]
[14]
David Gries. The Science of Programming. Springer-Verlag, New York, New York, USA, 1981.]]
[15]
Seth Hallem, Benjamin Chelf, Yichen Xie, and Dawson Engler. A system and language for building system-specific, static analyses. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PLDI), pages 69--82, May 2002.]]
[16]
Daniel Jackson. Alloy: a lightweight object modelling notation. In ACM Transactions on Software Engineering and Methodology (TOSEM), volume 11, pages 256--290, April 2002.]]
[17]
John Mocenigo. Grappa: A Java graph package. URL: http://www.research.att.com/˜john/Grappa.]]
[18]
Kevin P. Murphy. Passively learning finite automata. Technical Report 96-04-017, Santa Fe Institute, 1996.]]
[19]
Jeremy W. Nimmer and Michael D. Ernst. Static verification of dynamically detected program invariants: Integrating Daikon and ESC/Java. In Proceedings of RV'01, First Workshop on Runtime Verification, Paris, France, July 2001.]]
[20]
David Y. W. Park, Ulrich Stern, Jens U. Sakkebaek, and David L. Dill. Java model checking. In Proceedings of the Fifteenth IEEE International Conference on Automated Software Engineering (ASE'00), pages 253--256, sep 2000.]]
[21]
Anand V. Raman and Jon D. Patrick. The sk-strings method for inferring PFSA. In Proceedings of the workshop on automata induction, grammatical inference and language acquisition at the 14th international conference on machine learning (ICML97), 1997.]]
[22]
Michael Siff. Techniques for software renovation. PhD thesis, University of Wisconsin, Madison, 1998.]]
[23]
Willem Visser, Klaus Havelund, Guillaume Brat, and Seung Joon Park. Model checking programs. In Proceedings of the Fifteenth IEEE International Conference on Automated Software Engineering (ASE'00), pages 3--12, sep 2000.]]
[24]
R. Wille. Restructuring lattice theory: an approach based on lattices of concepts. Ordered Sets, pages 445--470, 1982.]]

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '03: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
June 2003
360 pages
ISBN:1581136625
DOI:10.1145/781131
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 May 2003

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concept analysis
  2. hierarchical clustering
  3. specification debuggers
  4. temporal specifications

Qualifiers

  • Article

Conference

PLDI03
Sponsor:

Acceptance Rates

PLDI '03 Paper Acceptance Rate 28 of 131 submissions, 21%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)0
Reflects downloads up to 29 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media