A Software Product Line(SPL) [1] aims to create the infrastructure for the rapid production of software systems for a specific market segment. These software sys tems share a subset of common features, but variations are also present. Software Product Line Engineering involves two new issues as compared to engineering of single software-based systems: variability design and product derivation.
Variability design is concerned with incorporating variation mechanisms into the software products, which enable the construction of an infrastructure representing a complete range or family of products. Such an infrastructure will include both the commonalities and variations of the family of produts. Product Derivation is the process of constructing specific software products, after a specific configuration (i.e. a valid set of alternatives and variants) has been selected.
Modern software decomposition techniques [2], such as family polymorphism and mixin composition, provides new mechanisms for the separation and composition of concerns. These mechanisms can be applied to variability design, improving the separation and composition of variable features in an SPL [3]. Model-Driven Development offers mechanisms for automating repetitive and time consuming tasks of the SPL development lifecycle, such as product derivation processes [4].
Currently there is no process for architectural design and implementation that: (1) uses advanced techniques for separating variable features at the architectural design and implementation stages; (2) uses model-driven techniques for automating repetitive, laborious and time-consuming tasks; and (3) generates automatically models of specific products for each development stage. This latter issue is helpful for reengineering specific products according to user requirements not originally covered by an SPL.
TENTE is a contribution for SPL architectural design and implementation. This process integrates relevant advances, from an SPL point of view, for separation of concerns and MDD technologies. Advanced mechanisms for separation of concerns enable the encapsulation of variants in separate units. This separa tion simplifies variant management and composition, thereby facilitating prod uct derivation. Separation of variants is kept both at the architectural design and implementation levels. Moreover, MDD techniques help to automate part of this process, such as the generation of the implementation skeletons or the product derivation process, avoiding the need for repetitive and tedious tasks to be performed manually. For each specific product derived from the SPL, a software architecture and an implementation, specific for that product, are obtained. Moreover, this process does not require any knowledge of model-driven techniques
[1]. Pohl, K. et al: Software Product Line Engineering: Foundations, Principles and Techniques. Springer (2005)
[2]. Aracic, I. et al: An Overview of CaesarJ. In: Transactions on Aspect-Oriented Software Development I. (2006) 135–173
[3]. Mezini, M., Ostermann, K.: Variability Management with Feature-Oriented Programming and Aspects. In: 12th Int. Symp. on Foundations of Software Engineering (FSE). (2004) 127–136
[4]. Trujillo, S. et al: Feature Oriented Model Driven Development: A Case Study for Portlets. In: 29th Int. Conference on Software Engineering (ICSE). (2007) 44–53