Run-Time Assertion Checking of Data- and Protocol-Oriented Properties of Java Programs: An Industrial Case Study

htmlabstractRun-time assertion checking is one of the useful techniques for detecting faults, and can be applied during any program execution context, including debugging, testing, and production. In general, however, it is limited to checking state-based properties. We introduce SAGA, a general framework that provides a smooth integration of the specification and the run-time checking of both data- and protocol-oriented properties of Java classes and interfaces. We evaluate SAGA, which combines several state-of-the art tools, by conducting an industrial case study from an eCommerce software company Fredhopper.

[1]  Martin Leucker,et al.  Comparing LTL Semantics for Runtime Verification , 2010, J. Log. Comput..

[2]  Frank S. de Boer,et al.  Monitoring Method Call Sequences Using Annotations , 2010, FACS.

[3]  Grigore Rosu,et al.  Mop: an efficient and generic runtime verification framework , 2007, OOPSLA.

[4]  Terence Parr The Definitive ANTLR Reference: Building Domain-Specific Languages , 2007 .

[5]  Amir Pnueli,et al.  PSL Model Checking and Run-Time Verification Via Testers , 2006, FM.

[6]  Gordon J. Pace,et al.  LARVA --- Safer Monitoring of Real-Time Java Programs (Tool Paper) , 2009, 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods.

[7]  Robert DeLine,et al.  Typestates for Objects , 2004, ECOOP.

[8]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, Electron. Notes Theor. Comput. Sci..

[9]  Frank S. de Boer,et al.  Run-Time Verification of Black-Box Components Using Behavioral Specifications: An Experience Report on Tool Development , 2012, FACS.

[10]  Russell W. Quong,et al.  Adding Semantic and Syntactic Predicates To LL(k): pred-LL(k) , 1994, CC.

[11]  Clément Hurlin Specifying and checking protocols of multithreaded classes , 2009, SAC '09.

[12]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.

[13]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[14]  Patrice Chalin,et al.  JML4: Towards an Industrial Grade IVE for Java and Next Generation Research Platform for JML , 2008, VSTTE.

[15]  David S. Rosenblum,et al.  A historical perspective on runtime assertion checking in software development , 2006, SOEN.

[16]  Marieke Huisman,et al.  Extending JML Specifications with Temporal Logic , 2002, AMAST.

[17]  Görel Hedin Incremental Attribute Evaluation with Side-effects , 1988, CC.

[18]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[19]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

[20]  Frank S. de Boer,et al.  Run-time checking of data- and protocol-oriented properties of Java programs: an industrial case study , 2013, SAC '13.

[21]  Michael Sipser,et al.  Introduction to the Theory of Computation , 1996, SIGA.

[22]  Yoonsik Cheon,et al.  Specifying and checking method call sequences of Java programs , 2006, Software Quality Journal.