SEERE, Neum 2009 Runtime verification of Java programs using ITL Vladimir Valkanov, Damyan Mitev Plovdiv, Bulgaria
SEERE, Neum What is runtime verification? - technique that combines formal verification and program execution. - detecting faults in a system by passively observing its I/O behavior during normal operations.
SEERE, Neum 2009 Is runtime verification better? Normal testing techniques, e.g. unit testing, ample only a partial proof of correctness. It does not guarantee that the system will operate as expected under untested inputs. Undiscovered faults may result in failures in runtime. Monitoring the software, during the runtime for correctness, failures can be catch when they happened, for any input which causes them to occur.
SEERE, Neum 2009 Behavior may depend heavily on the environment of the target system Some information is available only at runtime or is convenient to be checked at runtime The correctness of the system model has to imply correctness of the implementation.
SEERE, Neum Infostation middleware Agent-oriented middleware Manage mobile users and services Four basic scenarios Time dependant
SEERE, Neum 2009
ACL Agent and Service layer Blue- tooth Agent layer Support Agent layer Create agent and give it connection Create conn ACL with filtered devices List with devices Bluetooth service and address Mobile Device INFOSTATIONINFOSTATION Scanner Agent DB Connection Adviser Agent Connection Initiator Agent Bluetooth API Connection Agent Receive Thread Send Thread Query Manager Agent Interface Agents AAA Service Simple Service
SEERE, Neum 2009 Detection and control of the scenario Formal description of the scenarios Mechanism for interpretation of that description Strategies for runtime verification
SEERE, Neum 2009 Scenario formalism Interval Temporal Logic – propositional and first-order logical reasoning – finite sequences – time intervals – capable of handling sequential and parallel composition
SEERE, Neum 2009 Interpretation of the discription Tempura - executable ITL framework written in C open source rewriting in Java
SEERE, Neum 2009 Assert point-based verification points directly written in the source code every assertion point is a set of variables we can tell the system what to do in case of failure we do not know when the check will be executed
SEERE, Neum 2009 Event-based verification depend on some event, e.g. timer using parallel thread of the main program the thread generate state and compare it with system state we know the exact time of check it is difficult to control the main program the resource usage if higher
SEERE, Neum 2009 Which strategy to choose? Depends on the implementation -every agent to have his own verification mechanism
SEERE, Neum 2009 THANKS FOR YOUR ATTENTION