Design Patterns: Abstraction and Reuse of Object-Oriented Design
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Adding trace matching with free variables to AspectJ
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Automating software architecture exploration with M2Aspects
Proceedings of the 2006 international workshop on Scenarios and state machines: models, algorithms, and tools
From multi-modal scenarios to code: compiling LSCs into aspectJ
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Mop: an efficient and generic runtime verification framework
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Making trace monitors feasible
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Parametric Trace Slicing and Monitoring
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
Efficient Formalism-Independent Monitoring of Parametric Properties
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Stateful breakpoints: a practical approach to defining parameterized runtime monitors
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Monitoring finite state properties: algorithmic approaches and their relative strengths
RV'11 Proceedings of the Second international conference on Runtime verification
Hi-index | 0.00 |
In this work we propose MOPBox , a library-based approach to runtime verification. MOPBox is a Java library for defining and evaluating parametric runtime monitors. A user can define monitors through a simple set of API calls. Once a monitor is defined, it is ready to accept events. Events can originate from AspectJ aspects or from other sources, and they can be parametric, i.e., can contain variable bindings that bind abstract specification variables to concrete program values. When a monitor reaches an error state for a binding $\vec{v}=\vec{o}$ , MOPBox notifies clients of a match for $\vec{v}=\vec{o}$ through a call-back interface. To map variable bindings to monitors, MOPBox uses re-implementations of efficient indexing algorithms that Chen et al. developed for JavaMOP. We took care to keep MOPBox as generic as possible. States, transitions and variable bindings can be labeled not just with strings but with general Java Objects whose types are checked through Java Generics. This allows for simple integration into existing tools. For instance, we present ongoing work on integrating MOPBox with a Java debugger. In this work, transitions are labeled with breakpoints. MOPBox is also a great tool for teaching: its implementations of monitor indexing algorithms are much easier to understand than the code generated by tools such as JavaMOP. Indexing algorithms use the Strategy Design Pattern, which makes them easily exchangeable. Hence, MOPBox is also the perfect tool to explore and test new algorithms for monitor indexing without bothering about the complex intricacies of code generation. In the future, we further plan to integrate MOPBox with the Clara framework for statically evaluating runtime monitors ahead of time.