(Photo by Claude Mansiot)
- Amir Pnueli (Computer Science Department, Courant Institute of mathematical Sciences, New York University)
- Sriram Rajamani (Microsoft Research India)
Welcome to RV'09
The objective of RV'09 is to bring scientists from both academia and industry together to debate on how to monitor and analyze the execution of programs, for example by checking conformance with a formal specification written in temporal logic or some other form of history tracking logic. The purpose might be testing a piece of software before deployment, detecting errors after deployment in the field and potentially triggering subsequent fault protection actions, or the purpose can be to augment the software with new capabilities in an aspect oriented style. The longer term goal is to investigate whether the use of lightweight formal methods applied during the execution of programs is a viable complement to the current heavyweight methods proving programs correct always before their execution, such as model checking and theorem proving. This year's workshop is organized as a satellite event of CAV.
The proceedings of RV09 will be published in Lecture Notes in Computer Science.
The subject covers several technical fields as outlined below.
- Specification Languages and Logics. Formal methods scientists have investigated logics and developed technologies that are suitable for model checking and theorem proving, but monitoring can reveal new observation-based foundational logics.
- Aspect-oriented Languages with Trace Predicates. New results in extending aspect languages, such as for example AspectJ, with trace predicates replacing the standard pointcuts. Aspect oriented programming provides specific solutions to program instrumentation and program guidance.
- Program Instrumentation in General. Any techniques for instrumenting programs, at the source code or object code/byte code level, to emit relevant events to an observer.
- Program Guidance in General. Techniques for guiding the behavior of a program once its specification is violated. This ranges from standard exceptions to advanced planning.
- Combining Static and Dynamic Analysis. Monitoring a program with respect to a temporal formula can have an impact on the monitored program, with respect to execution time as well as memory consumption. Static analysis can be used to minimize the impact by optimizing the program instrumentation. Runtime monitors can be seen as proof obligations left over from proofs - what is left that could not be proved.
- Dynamic Program Analysis. Techniques that gather information during program execution and use it to conclude properties about the program, either during test or in operation. Algorithms for detecting multi-threading errors in execution traces, such as deadlocks and data races. Algorithms for generating specifications from runs -- dynamic reverse engineering, can include program visualization.