Aspect composition for multiple target languages using LARA

Citation data:

Computer Languages, Systems & Structures, ISSN: 1477-8424, Vol: 53, Page: 1-26

Publication Year:
Captures 5
Readers 5
Social Media 46
Shares, Likes & Comments 44
Tweets 2
Pedro Pinto; Tiago Carvalho; João Bispo; Miguel António Ramalho; João M.P. Cardoso
Elsevier BV
Computer Science
Most Recent Tweet View All Tweets
article description
Usually, Aspect-Oriented Programming (AOP) languages are an extension of a specific target programming language (e.g., AspectJ for Java and AspectC++ for C++ ). Although providing AOP support with target language extensions may ease the adoption of an approach, it may impose constraints related with constructs and semantics. Furthermore, by tightly coupling the AOP language to the target language the reuse potential of many aspects, especially the ones regarding non-functional requirements, is lost. LARA is a domain-specific language inspired by AOP concepts, having the specification of source-to-source transformations as one of its main goals. LARA has been designed to be, as much as possible, independent of the target language and to provide constructs and semantics that ease the definition of concerns, especially related to non-functional requirements. In this paper, we propose techniques to overcome some of the challenges presented by a multilanguage approach to AOP of cross-cutting concerns focused on non-functional requirements and applied through the use of a weaving process. The techniques mainly focus on providing well-defined library interfaces that can have concrete implementations for each supported target language. The developer uses an agnostic interface and the weaver provides a specific implementation for the target language. We evaluate our approach using 8 concerns with varying levels of language agnosticism that support 4 target languages ( C, C++, Java and MATLAB ) and show that the proposed techniques contribute to more concise LARA aspects, high reuse of aspects, and to significant effort reductions when developing weavers for new imperative, object-oriented programming languages.