JUCS - Journal of Universal Computer Science 20(5): 692-719, doi: 10.3217/jucs-020-05-0692
Flexible Feature Binding with AspectJ-based Idioms
expand article infoRodrigo Andrade, Henrique Rebelo, Márcio Ribeiro, Paulo Borba
‡ Federal University of Pernambuco, Recife, Brazil
Open Access
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.
software product lines, aspect-oriented programming, idioms, flexible feature binding