Semantics and scoping of aspects in higher-order languages
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Expressive scoping of dynamically-deployed aspects
Proceedings of the 7th international conference on Aspect-oriented software development
Execution levels for aspect-oriented programming
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Types and modularity for implicit invocation with implicit announcement
ACM Transactions on Software Engineering and Methodology (TOSEM)
Composition of dynamic analysis aspects
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Scoping strategies for distributed aspects
Science of Computer Programming
A semantics for execution levels with exceptions
Proceedings of the 10th international workshop on Foundations of aspect-oriented languages
IEEE Software
Aspectizing Java Access Control
IEEE Transactions on Software Engineering
Proceedings of the eleventh workshop on Foundations of Aspect-Oriented Languages
Taming aspects with monads and membranes
Proceedings of the 12th workshop on Foundations of aspect-oriented languages
Hi-index | 0.00 |
Aspect-oriented programming languages support the modular definition of crosscutting abstractions. In most languages, this is achieved through pointcuts, which provide a means for quantifying over execution events in order to implicitly trigger advice. Notably, an advice is more than a simple event handler because of its ability to override the underlying computation. Unrestricted quantification and arbitrary advice computation are powerful but dangerous. In this talk we look at a number of approaches to tame aspects in order to retain their benefits without sacrificing important software engineering properties, like modular reasoning, separate development, type soundness, and controlled interferences. Specifically, we report on our work in scoping, interfaces, types, and effects: scoping We have proposed scoping strategies [8], which extend the work of Dutchyn et al. [2], and have been successfully applied to distribution [10] and access control [13-15]; execution levels [3, 9], which avoid infinite regression and computational interference between aspects, and have been applied to compose dynamic analyses aspects [11]; and membranes [4, 12], which allow more flexible topological scoping and local weaving customization. interfaces We recently developed the notion of Join Point Interfaces [1], which builds upon Steimann et al. [6], recovering sound type checking and retaining flexibility thanks to generic interfaces and controlled global quantification. types and effects We provide a typed embedding of aspects in Haskell, which statically ensures that pointcut/advice bindings are type safe; in addition, the use of monads makes it possible to statically control interferences and effects of aspects [4, 7]. Finding the right balance between power and control is a delicate and still open question, especially when aiming at simplicity of usage. We believe further work is needed to address this crucial challenge for the principled adoption of aspects.