PollyRV

A Technology-Agnostic Runtime Verification Tool

Note that PollyRV, polyRV, and polyLarva all refer to the same tool. It's a long story but importantly, PollyRV is NOT a variant of Larva.

Runtime Verification
Robustness and reliability are key factors in the success of the deployment of security-critical systems. Testing, fails to address these concerns adequately since not all possible execution paths are covered. On the other hand, verification - the analysis of all execution paths - is usually unfeasible due to the large state space of such systems. Runtime-verification addresses the issue by enabling formal verification of the system during its execution. This technique naturally involves interaction with the original system, invariably modifying the system to some extent.

Emerging industrial settings, such as online portals, present new challenges to the field of runtime verification as they frequently involve high volume throughput and concoctions of technologies. Most runtime verification techniques do not maintain a well defined system-monitor boundary, leading to monitors being tightly coupled to the underlying systems. This generally means that the monitor is considerably intrusive and technology dependent. The second generation of the Larva runtime verification tool PollyRV, strives towards a clear-cut system-monitor boundary which enables the monitor to be technology agnostic, possibly interfacing with various technologies at a time.

PollyRV
PollyRV is a parametrised event-based runtime-verification tool supporting monitoring of real-time specifications. In addition, the PollyRV runtime monitoring framework :

(i) is system side language agnostic
(ii) provides a configurable system-monitor boundary using explicit tagging of monitoring code locality (system or monitor)
PollyRV brings in a number of major changes to the approach taken by Larva. The major dfference is that PollyRV is decomposed into two parts:
(i) a 'frontend'
handling the event extraction instrumentation and the system interaction aspect
(ii) a verification 'back-end'
enabling greater flexibility to support different languages, for which only the language-specific front-end needs to be developed
In addition, PollyRV enables the tagging of condition-checking and actions, to support finer control over whether they are to be executed on the system or monitorside.

<< Semantics & Verification Research Group Home
PollyRV Presentations
[1] PollyRV - Technology Agnostic Runtime Verification, Christian Colombo, Ruth Mizzi (PPT)

PollyRV Papers
[1] Ruth Mizzi, An Extensible and Configurable Runtime Verification Framework, Masters Thesis, 2013. (PDF)
[2] Christian Colombo, Adrian Francalanza, Ruth Mizzi and Gordon Pace, Extensible Technology Agnostic Runtime Verification, in FESCA, 2013. (PDF)
[3] Christian Colombo, Adrian Francalanza, Ruth Mizzi and Gordon Pace, Runtime Verification with Configurable System-Monitor Resource-Aware Boundaries, in Software Engineering and Formal Methods (SEFM), 2012. (PDF)
[4] Ruth Mizzi, Christian Colombo, Adrian Francalanza and Gordon Pace, Considerations for Monitoring Highly Concurrent Systems, internal report 01-WICT-2012, University of Malta, 2012. (PDF)
[5] Ivan Galea, polyLarva Plugin for Erlang, Undergraduate Project, University of Malta, 2013. (PDF)
[6] Jonathan Attard, polyLarva Plugin for PHP, Undergraduate Project, University of Malta, 2014. (PDF)

The Toolkit

Overview:
In order for the PollyRV framework to be adopted, a system which is to be monitored and a high-level specification of the properties that must be obeyed by this system are expected to be provided as input. A PollyRV runtime monitoring framework is generated in a two-step sequence. In the first step the PollyRV monitor is created, as a JAVA program, from the high-level specification. The second step then handles the generation of aspect code which is to be weaved into the target system. This code must be generated in the target system language and therefore requires a PollyRV language specific compiler to generate it.

Using PollyRV:

The PollyRV Compiler

Requirements: a JDK installation. The system path should be updated to recognize the commands java and javac.

(i) Generating the PollyRV Monitor
Run the batch file generate_monitor available with the PollyRV release
(ii) Running the PollyRV Monitor
Run the batch file run_monitor available with the PollyRV release
The batch files provided will prompt for the necessary parameters

The PollyRV Language Specific Compiler

The PollyRV language specific compiler creates the aspect code and additional system specific monitoring code which is to be weaved into the system that is to undergo monitoring. At present a Larva language specific compiler for the JAVA language is available.

Requirements: JDK and an AspectJ distribution must be installed. aj5 , ajc, java and javac must be available in the system path.
(i) To generate instrumentation code and run the system
use the batch file generateandrun_javasys available with the PollyRV release
The batch files provided will prompt for the necessary parameters

Documentation:
For a complete reference manual for the PollyRV language as well as detailed instructions on running the tool, see the PollyRV User Manual.

Downloads:
If you would like a copy of the tool, please fill in the following form, and we will send you the tool directly via email. Should you have any problems with the form, or fail to receive a response in a reasonable amount of time, please let us know via email.



Name:
Institution:
Address:
Email:
Help us fight spam:

Intended use and other comments:





Contact details
Gordon J. Pace
Department of Computer Science,
Faculty of ICT,
University of Malta,
Msida MSD2080,
MALTA

Tel: (+356) 2340 2504
Fax: (+356) 2132 0539
E-mail: Gordon.Pace@um.edu.mt
Christian Colombo
Department of Computer Science,
Faculty of ICT,
University of Malta,
Msida MSD2080,
MALTA

Tel: (+356) 2340 2640
E-mail: christian.colombo@um.edu.mt
Ruth Mizzi
Department of Computer Science,
Faculty of ICT,
University of Malta,
Msida MSD2080,
MALTA