53 25 v 3 [ cs . F L ] 2 0 Ja n 20 15 Runtime Verification Based on Register Automata

We propose TOPL automata as a new method for runtime verificat ion of systems with unbounded resource generation. Paradigmat ic such systems are object-oriented programs which can dynamically generate a n unbounded number of fresh object identities during their execution. Our f ormalism is based on register automata, a particularly successful approach in a utomata over infinite alphabets which administers a finite-state machine with bou ndedly many inputstoring registers. We show that TOPL automata are equally ex pressive to register automata and yet suitable to express properties of programs . Compared to other runtime verification methods, our technique can handle a cla ss of properties beyond the reach of current tools. We show in particular that pr ope ties which require value updates are not expressible with current techni ques yet are naturally captured by TOPL machines. On the practical side, we present a tool for runtime verification of Java programs via TOPL properties, where the trade-off between the coverage and the overhead of the monitoring system is tun able by means of a number of parameters. We validate our technique by checking properties involving multiple objects and chaining of values on large open sou rce projects.

[1]  Alex Groce,et al.  Formal Analysis of Log Files , 2010, J. Aerosp. Comput. Inf. Commun..

[2]  Eran Yahav,et al.  QVM: an efficient runtime for detecting defects in deployed systems , 2008, OOPSLA '08.

[3]  Grigore Rosu,et al.  JavaMOP: Efficient parametric runtime monitoring framework , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[4]  Luc Segoufin Automata and Logics for Words and Trees over an Infinite Alphabet , 2006, CSL.

[5]  Thomas Schwentick,et al.  Towards Regular Languages over Infinite Alphabets , 2001, MFCS.

[6]  Nissim Francez,et al.  Finite-Memory Automata , 1994, Theor. Comput. Sci..

[7]  Cormac Flanagan,et al.  Temporal higher-order contracts , 2011, ICFP.

[8]  Martin Leucker,et al.  A brief account of runtime verification , 2009, J. Log. Algebraic Methods Program..

[9]  Grigore Rosu,et al.  Semantics and Algorithms for Parametric Monitoring , 2011, Log. Methods Comput. Sci..

[10]  Howard Barringer,et al.  TraceContract: A Scala DSL for Trace Analysis , 2011, FM.

[11]  Eran Yahav,et al.  Effective typestate verification in the presence of aliasing , 2006, TSEM.

[12]  Grigore Rosu,et al.  Monitoring programs using rewriting , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[13]  Sriram K. Rajamani,et al.  SLIC: A Specification Language for Interface Checking (of C) , 2002 .

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

[15]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[16]  Grigore Rosu,et al.  An overview of the MOP runtime verification framework , 2012, International Journal on Software Tools for Technology Transfer.

[17]  Howard Barringer,et al.  Quantified Event Automata: Towards Expressive and Efficient Runtime Monitors , 2012, FM.

[18]  Jonathan Aldrich,et al.  Lightweight object specification with typestates , 2005, ESEC/FSE-13.

[19]  Thomas Schwentick,et al.  Two-Variable Logic on Words with Data , 2006, 21st Annual IEEE Symposium on Logic in Computer Science (LICS'06).

[20]  Jonathan Aldrich,et al.  Modular typestate checking of aliased objects , 2007, OOPSLA.

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

[22]  Katsiaryna Naliuka,et al.  ConSpec – A Formal Language for Policy Specification 1 , 2008 .

[23]  Sriram K. Rajamani,et al.  The SLAM Toolkit , 2001, CAV.