Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Proceedings of the 3rd international conference on Aspect-oriented software development
abc: an extensible AspectJ compiler
Proceedings of the 4th international conference on Aspect-oriented software development
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
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
Refinement-based context-sensitive points-to analysis for Java
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Automating software architecture exploration with M2Aspects
Proceedings of the 2006 international workshop on Scenarios and state machines: models, algorithms, and tools
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
From multi-modal scenarios to code: compiling LSCs into aspectJ
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Mop: an efficient and generic runtime verification framework
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Making trace monitors feasible
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Typestate-like analysis of multiple interacting objects
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Finding programming errors earlier by evaluating runtime monitors ahead-of-time
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Dependent advice: a general approach to optimizing history-based aspects
Proceedings of the 8th ACM international conference on Aspect-oriented software development
Parametric Trace Slicing and Monitoring
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
Reducing the Cost of Path Property Monitoring Through Sampling
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Efficient Formalism-Independent Monitoring of Parametric Properties
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
A compilation and optimization model for aspect-oriented programs
CC'03 Proceedings of the 12th international conference on Compiler construction
Efficient hybrid typestate analysis by determining continuation-equivalent states
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Collaborative Runtime Verification with Tracematches
Journal of Logic and Computation
Verifying finite-state properties of large-scale programs
Verifying finite-state properties of large-scale programs
Clara: partially evaluating runtime monitors at compile time tutorial supplement
RV'10 Proceedings of the First international conference on Runtime verification
Garbage collection for monitoring parametric properties
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Monitoring aspects for the customization of automatically generated code for big-step models
Proceedings of the 10th ACM international conference on Generative programming and component engineering
SOS: saving time in dynamic race detection with stationary analysis
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Runtime verification of component-based systems
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
Partially Evaluating Finite-State Runtime Monitors Ahead of Time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient runtime policy enforcement using counterexample-guided abstraction refinement
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Challenges in defining a programming language for provably correct dynamic analyses
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
A unified approach for static and runtime verification: framework and applications
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Efficient data race detection for async-finish parallelism
Formal Methods in System Design
Programs from proofs: a PCC alternative
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hi-index | 0.03 |
Researchers have developed a number of runtime verification tools that generate runtime monitors in the form of AspectJ aspects. In this work, we present CLARA, a novel framework to statically optimize such monitoring aspects with respect to a given program under test. CLARA uses a sequence of increasingly precise static analyses to automatically convert a monitoring aspect into a residual runtime monitor. The residual monitor only watches events triggered by program locations that the analyses failed to prove safe at compile time. In two-thirds of the cases in our experiments, the static analysis succeeds on all locations, proving that the program fulfills the stated properties, and completely obviating the need for runtime monitoring. In the remaining cases, the residual runtime monitor is usually much more efficient than a full monitor, yet still captures all property violations at runtime.