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.
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- Y. Cheon. A Runtime Assertion Checker for the Java Modeling Language. PhD thesis, Iowa State University, 2003.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- D. Goyal. Transformational derivation of an improved alias analysis algorithm. Higher-Order and Symbolic Computation, 18(1/2), Feb. 2005. Google ScholarDigital Library
- D. Gries. The Science of Programming. Springer, 1981. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- R. Paige and S. Koenig. Finite differencing of computable expressions. ACM Transactions on Programming Languages and Systems, 4(3): 402--454, 1982. Google ScholarDigital Library
- A. Potanin, J. Noble, and R. Biddle. Snapshot query-based debugging. Proc. of Australian Software Engineering Conf, pages 251--259, 2004. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- V. Stolz and E. Bodden. Temporal assertions using AspectJ. Electronic Notes in Theoretical Computer Science, 144(4): 109--124, 2006. Google ScholarDigital Library
- 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 ScholarDigital Library
- K. Zee, V. Kuncak, M. Taylor, and M. Rinard. Lecture Notes in Computer Science, 4839: 202--213, 2007. Google ScholarDigital Library
Index Terms
- Efficient runtime invariant checking: a framework and case study
Recommendations
Model-based Runtime Verification Framework
Model-based runtime verification is an extension to the state-of-the-art runtime verification, aimed at checking at runtime the system implementation against the system model (consistency checking) and the system model against the system specification (...
Using capabilities for strict runtime invariant checking
AbstractIn this paper we use pre-existing language support for both reference and object capabilities to enable sound runtime verification of representation invariants. Our invariant protocol is stricter than the other protocols, since it ...
Lazy Runtime Verification for Constraints on Interacting Objects
APSEC '10: Proceedings of the 2010 Asia Pacific Software Engineering ConferenceApplication Programming Interface (API) constraints on objects are rules that API client code must follow in order to get expected results from these objects. Runtime verification, an important approach for detecting API constraint violations, usually ...
Comments