Developing graphical (software engineering) tools with PROGRES
ICSE '97 Proceedings of the 19th international conference on Software engineering
AToM3: A Tool for Multi-formalism and Meta-modelling
FASE '02 Proceedings of the 5th International Conference on Fundamental Approaches to Software Engineering
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Specification of Graph Translators with Triple Graph Grammars
WG '94 Proceedings of the 20th International Workshop on Graph-Theoretic Concepts in Computer Science
Events and Constraints: A Graphical Editor for Capturing Logic Requirements of Programs
RE '01 Proceedings of the Fifth IEEE International Symposium on Requirements Engineering
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
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Effective typestate verification in the presence of aliasing
Proceedings of the 2006 international symposium on Software testing and analysis
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Making trace monitors feasible
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
A Generic Layout Algorithm for Meta-model Based Editors
Applications of Graph Transformations with Industrial Relevance
Programmed Graph Rewriting with DEVS
Applications of Graph Transformations with Industrial Relevance
A staged static program analysis to improve the performance of runtime monitoring
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Software and Systems Modeling (SoSyM)
Hi-index | 0.00 |
In runtime monitoring, a programmer specifies code to execute whenever a sequence of events occurs during program execution. Previous and related work has shown that runtime monitoring techniques can be useful in order to validate or guarantee the safety and security of running programs. Those techniques have however not been incorporated in everyday software development processes. One problem that hinders industry adoption is that the required specifications use a cumbersome, textual notation. As a consequence, only verification experts, not programmers, can understand what a given specification means and in particular, whether it is correct. In 2001, researchers at Bell Labs proposed the Timeline formalism. This formalism was designed with ease of use in mind, for the purpose of static verification (and not, as in our work, for runtime monitoring). In this article, we describe how software safety specifications can be described visually in the Timeline formalism and subsequently transformed into finite automata suitable for runtime monitoring, using our meta-modelling and model transformation tool AToM3. The synthesized automata are subsequently fed into an existing monitoring back-end that generates efficient runtime monitors for them. Those monitors can then automatically be applied to Java programs. Our work shows that the transformation of Timeline models to automata is not only feasible in an efficient and sound way but also helps programmers identify correspondences between the original specification and the generated monitors. We argue that visual specification of safety criteria and subsequent automatic synthesis of runtime monitors will help users reason about the correctness of their specifications on the one hand and effectively deploy them in industrial settings on the other hand.