An approach to design crosscutting framework families
Crosscutting Frameworks are the most common type of aspect-oriented frameworks. They encapsulate only one crosscutting concern, such as persistence, distribution or synchronization. This kind of framework has been successfully used as infrastructure software providing services to higher level applications. However, as any common framework, when crosscutting frameworks are used for developing an application, usually all of their features and variabilities remain in the final architecture, even if only a subset of them was needed. This leads to a poor design with several pieces of death code, making the maintenance activities difficult. In this paper we present an approach to design a set of modules, called features, creating a family of Crosscutting Frameworks. So, during the developing of an application, just the features needed by the application are used, resulting in a clearer design, propitiating higher levels of maintainability and reusability. The approach is exemplified by means of a Family of Persistence Crosscutting Framework.