Flexible Feature Binding with AspectJ-based Idioms
Rodrigo Andrade (Federal University of Pernambuco, Brazil)
Henrique Rebelo (Federal University of Pernambuco, Brazil)
Marcio Ribeiro (Federal University of Alagoas, Brazil)
Paulo Borba (Federal University of Pernambuco, Brazil)
Abstract: In Software Product Lines (SPL), we can bind reusable features to compose a product at different times, which in general are static or dynamic. The former allows customizability without any overhead at runtime. On the other hand, the latter allows feature activation or deactivation while running the application with the cost of performance and memory consumption. To implement features, we might use aspect-oriented programming (AOP), in which aspects enable a clear separation between invariable code and variable code. In this context, recent work provides AspectJ-based idioms to implement flexible feature binding. However, we identified some design deficiencies. Thus, to solve the issues of these idioms, we incrementally create three AspectJ-based idioms. We apply these idioms to provide flexible binding for 16 features from five different product lines. Moreover, to evaluate our idioms, we quantitatively analyze them with respect to code cloning, scattering, tangling, and size by means of software metrics. Besides that, we qualitatively discuss our idioms in terms of code reusability, changeability, instrumentation overhead, behavior, and feature interaction. In conclusion, we show evidences that our idioms address the issues of those existing ones.
Keywords: aspect-oriented programming, flexible feature binding, idioms, software product lines
Categories: D.1.m, D.2.13, D.2.8