skip to main content
10.1145/1401827.1401837acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Efficient runtime invariant checking: a framework and case study

Authors Info & Claims
Published:21 July 2008Publication History

ABSTRACT

This paper describes a general and powerful framework for efficient runtime invariant checking. The framework supports (1) declarative specification of arbitrary invariants using high-level queries, with easy use of information from any data in the execution, (2) powerful analysis and transformations for automatic generation of instrumentation for efficient incremental checking of invariants, and (3) convenient mechanisms for reporting errors, debugging, and taking preventive or remedial actions, as well as recording history data for use in queries. We demonstrate the advantages and effectiveness of the framework through implementations and case studies with abstract syntax tree transformations, authentication in a SMB client, and the BitTorrent peer-to-peer file distribution protocol.

References

  1. C. Artho, V. Schuppan, A. Biere, P. Eugster, M. Baur, and B. Zweimüller. JNuke: Efficient dynamic analysis for Java. Lecture Notes in Computer Science, 3114: 462--465, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  2. M. Barnett, B. Chang, R. DeLine, B. Jacobs, and K. Leino. Boogie: A modular reusable verifier for object-oriented programs. Proc. of the 4th Intl. Symp. on Formal Methods for Components and Objects, pages 364--387, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. M. Barnett, R. DeLine, M. Fahndrich, K. Leino, and W. Schulte. Verification of object-oriented programs with invariants. Journal of Object Technology, 3(6): 27--56, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  4. H. Barringer, A. Goldberg, K. Havelund, and K. Sen. Rule-based runtime verification. Proc. of the 5th Intl. Conf. on Verification, Model Checking and Abstract Interpretation, pages 44--57, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  5. D. Bartetzko, C. Fischer, M. Möller, and H. Wehrheim. Jass Java with assertions. Electronic Notes in Theoretical Computer Science, 55(2): 103--117, 2001.Google ScholarGoogle ScholarCross RefCross Ref
  6. F. Chen and G. Roşu. Mop: an efficient and generic runtime verification framework. Proc. of the 22nd annual ACM SIGPLAN Conf. on Object Oriented Programming Systems and Applications, pages 569--588, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Y. Cheon. A Runtime Assertion Checker for the Java Modeling Language. PhD thesis, Iowa State University, 2003.Google ScholarGoogle Scholar
  8. L. Clarke and D. Rosenblum. A historical perspective on runtime assertion checking in software development. ACM SIGSOFT Software Engineering Notes, 31(3): 25--37, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. T. Gibbs and B. Malloy. Weaving aspects into C++ applications for validation of temporal invariants. Proc. of the 7th European Conf. on Software Maintenance and Reengineering, pages 249--258, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Goyal. Transformational derivation of an improved alias analysis algorithm. Higher-Order and Symbolic Computation, 18(1/2), Feb. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Gries. The Science of Programming. Springer, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Gupta, I. Mumick, and V. Subrahmanian. Maintaining views incrementally. Proc. of the 1993 ACM SIGMOD Intl. Conf. on Management of Data, pages 157--166, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. K. Havelund and G. Roşu. An Overview of the runtime verification tool Java PathExplorer. Formal Methods in System Design, 24(2): 189--215, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. An overview of AspectJ. Lecture Notes in Computer Science, 2072: 327--355, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Kim, M. Viswanathan, S. Kannan, I. Lee, and O. Sokolsky. Java-MaC: a run-time assurance approach for Java programs. Formal Methods in System Design, 24(2): 129--155, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. B. Krause and T. Wahls. jmle: a tool for executing JML specifications via constraint programming. Lecture Notes in Computer Science, 4346: 293--296, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. V. Kuncak and M. Rinard. An overview of the Jahob analysis system: project goals and current status. 20th Intl. Parallel and Distributed Processing Symp., pages 8--16, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. G. Leavens, A. Baker, and C. Ruby. Preliminary design of JML: a behavioral interface specification language for Java. ACM SIGSOFT Software Engineering Notes, 31(3): 1--38, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. G. T. Leavens, Y. Cheon, C. Clifton, C. Ruby, and D. R. Cok. How the design of jml accommodates both runtime assertion checking and formal verification. Science of Computer Programming, 55(1-3): 185--208, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Y. Liu, S. Stoller, M. Gorbovitski, T. Rothamel, and Y. Liu. Incrementalization across object abstraction. Proc. of the 20th Annual ACM SIGPLAN Conf. on Object Oriented Programming Systems Languages and Applications, pages 473--486, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. M. Martin, B. Livshits, and M. Lam. Finding application errors and security flaws using PQL: a program query language. ACM SIGPLAN Notices, 40(10): 365--383, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. R. Paige and S. Koenig. Finite differencing of computable expressions. ACM Transactions on Programming Languages and Systems, 4(3): 402--454, 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. A. Potanin, J. Noble, and R. Biddle. Snapshot query-based debugging. Proc. of Australian Software Engineering Conf, pages 251--259, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. A. Shankar and R. Bodík. DITTO: automatic incrementalization of data structure invariant checks (in Java). Proc. of the 2007 ACM SIGPLAN Conf. on Programming Language Design and Implementation, pages 310--319, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. F Steimann. The paradoxical success of aspect-oriented programming. Proc. of the 21st Annual ACM SIGPLAN Conf. on Object-oriented Programming Languages, Systems, and Applications, pages 481--497, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. V. Stolz and E. Bodden. Temporal assertions using AspectJ. Electronic Notes in Theoretical Computer Science, 144(4): 109--124, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. D. Willis, D. Pearce, and J. Noble. Efficient object querying for Java. Proc. of the European Conf. on Object-Oriented Programming, pages 28--49, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. K. Zee, V. Kuncak, M. Taylor, and M. Rinard. Lecture Notes in Computer Science, 4839: 202--213, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Efficient runtime invariant checking: a framework and case study

                Recommendations

                Comments

                Login options

                Check if you have access through your login credentials or your institution to get full access on this article.

                Sign in
                • Published in

                  cover image ACM Conferences
                  WODA '08: Proceedings of the 2008 international workshop on dynamic analysis: held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2008)
                  July 2008
                  81 pages
                  ISBN:9781605580548
                  DOI:10.1145/1401827

                  Copyright © 2008 ACM

                  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]

                  Publisher

                  Association for Computing Machinery

                  New York, NY, United States

                  Publication History

                  • Published: 21 July 2008

                  Permissions

                  Request permissions about this article.

                  Request Permissions

                  Check for updates

                  Qualifiers

                  • research-article

                  Upcoming Conference

                  ICSE 2025

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader