Affiliation:
1. University of Oxford, Oxford, United Kingdom
Abstract
A
trace monitor
observes an execution trace at runtime; when it recognises a specified sequence of events, the monitor runs extra code. In the aspect-oriented programming community, the idea originatedas a generalisation of the advice-trigger mechanism: instead of matchingon single events (joinpoints), one matches on a sequence of events. The runtime verification community has been investigating similar mechanisms for a number of years, specifying the event patterns in terms of temporal logic, and applying the monitors to hardware and software.
In recent years trace monitors have been adapted for use with mainstream object-oriented languages. In this setting, a crucial feature is to allow the programmer to quantify over groups of related objects when expressing the sequence of events to match. While many language proposals exist for allowing such features, until now no implementation had scalable performance: execution on all but very simple examples was infeasible.
This paper rectifies that situation, by identifying two optimisations for
generating feasible
trace monitors from declarative specifications of the relevant event pattern. We restrict ourselves to optimisations that do not have a significant impact on compile-time: they only analyse the event pattern, and not the monitored code itself.
The first optimisation is an important improvement over an earlier proposal in [2] to avoid space leaks. The second optimisation is a form of indexing for partial matches. Such indexing needs to be very carefully designed to avoid introducing new space leaks, and the resulting data structure is highly non-trivial.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference28 articles.
1. The abc team. Benchmarks for Trace Monitoring. Scripts and sources to compile and run the benchmarks: http://aspectbench.org/benchmarks. The abc team. Benchmarks for Trace Monitoring. Scripts and sources to compile and run the benchmarks: http://aspectbench.org/benchmarks.
2. Adding trace matching with free variables to AspectJ
3. AProVE. Automated Program Verification Environment. http://aprove.informatik.rwth-aachen.de/ 2006. AProVE. Automated Program Verification Environment. http://aprove.informatik.rwth-aachen.de/ 2006.
4. AspectJ Eclipse Home. The AspectJ home page. http://eclipse.org/aspectj/ 2003. AspectJ Eclipse Home. The AspectJ home page. http://eclipse.org/aspectj/ 2003.
5. Optimising aspectJ
Cited by
18 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. An In-Depth Study of Runtime Verification Overheads during Software Testing;Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis;2024-09-11
2. From parametric trace slicing to rule systems;International Journal on Software Tools for Technology Transfer;2021-02-27
3. Four-Valued Monitorability of $$\omega $$-Regular Languages;Formal Methods and Software Engineering;2020
4. Improvement in JavaMOP by Simplifying Büchi Automaton;Dependable Software Engineering. Theories, Tools, and Applications;2018
5. An expressive stateful aspect language;Science of Computer Programming;2015-05