Aspect-Oriented Programming (AOP) is an established programming paradigm for addressing crosscutting concerns, which cannot be successfully modularized using traditional decomposition paradigms like Object or Service Orientations. Using AOP, crosscutting concerns are extracted from a base program into Aspects. The aspects can be weaved back into the base program to incorporate the crosscutting behaviors.
However, during implementation aspect weaving does not necessarily yield the desired results. In other words, the aspect weaving process not only introduces crosscutting behaviors but also introduces problems into a software system. Many semantic problems regarding aspect weaving have been identified in the AOP community. The problems usually share two common properties. First, these problems are non-language specific (which literally means that the same semantic problems exhibit in many different AOP implementation languages). Second, they are all be related to the three identified characteristics of aspects, which are Arbitrariness, Obliviousness and Presumptiveness. These problems are collectively referred to as Aspect Weaving Problems (AWPs).
Different methods/tools have been developed for detections of the AWPs. In practice, however, effective and efficient detections are difficult to achieve due to the following facts. First, the developers have to constantly switch between different methods/tools for detections of different problems. This is a complex, time consuming and error-prone process. Second, some of the methods/tools based on semantic inference may produce spurious detections results. Besides, the expertise of the developers on using such inference methods and their understandings of program semantics decide the success of the detections. Finally, the developers have to be trained to be able to master various sets of methods/tools to detect different problems, which could incur considerable production cost.
The above limitations led to my work. My research is a first dedicated effort on systematic investigation on AWPs at the code level (specifically at the AspectJ code level) to ensure the correctness of an AOP program. For my research, I developed a template based approach towards the detection of the problems in aspect weaving.
Recommendations
Incremental aspect weaving: an approach for faster AOP learning
SAC '15: Proceedings of the 30th Annual ACM Symposium on Applied ComputingAspect oriented programming (AOP) is a programming paradigm that provides mechanisms for encapsulating cross-cutting concerns. Developers who want to learn AOP often experiment with aspects and different Pointcuts on their existing code bases to try and ...
A performance cost evaluation of aspect weaving
ACSC '13: Proceedings of the Thirty-Sixth Australasian Computer Science Conference - Volume 135Aspect-Oriented Software Development (AOSD) facilitates the modularisation of different crosscutting concerns in software development. In AOSD, aspect weaving is the composition mechanism that combines aspects and components in an aspect-oriented ...
Comprehensive aspect weaving for Java
Aspect-oriented programming (AOP) has been successfully applied to application code thanks to techniques such as Java bytecode instrumentation. Unfortunately, with existing AOP frameworks for Java such as AspectJ, aspects cannot be woven into the ...