Supporting Software Product Lines Development: FLiP – Product Line Derivation Tool ergio Soares University of Pernambuco sergio@dsc.upe.br Fernando Calheiros Meantime Mobile Creations fernando.calheiros@cesar.org.br Vilmar Nepomuceno Meantime Mobile Creations vilmar.nepomuceno@cesar.org.br Andrea Menezes Meantime Mobile Creations andrea.menezes@cesar.org.br Paulo Borba Informatics Center — UFPE phmb@cin.ufpe.br Vander Alves Fraunhofer IESE vander.alves@iese.fraunhofer.de Abstract With the growing academic and industrial interest in Soft- ware Product Lines, one area demanding special attention is tool support development, which is a pre-requisite for widespread software product lines practices adoption. In this demo, we present FLiP, a suite of tools consisting of 3 mod- ules: a refactoring tool that implements code transformations for extracting product variations from Java classes into As- pectJ aspects, a module that integrates with a Feature Model tool for updating a software product lines feature model ac- cordingly to code transformations, and a building module that creates the nal products. FLiP has been designed and tested in the context of industrial-strength mobile game soft- ware product lines. Categories and Subject Descriptors D.2.3 [Software En- gineering]: Coding Tools and Techniques—Object-oriented programming General Terms Design, Languages 1. Introduction The extractive and the reactive Software Product Line (SPL) (3) adoption strategies (5) involve, respectively, bootstrapping existing products into a SPL and extending an existing SPL to encompass another product. In both cases, product line refactorings (2) are useful to guide the SPL derivation process by extracting product variations and appropriately structuring them. They also help to assure the safety of the whole process by preserving SPL congurability, i.e., the resulting SPL has at least the same instances than the initial set of independent products being bootstrapped or the initial SPL being extended. Copyright is held by the author/owner(s). OOPSLA’08, October 19–23, 2008, Nashville, Tennessee, USA. ACM 978-1-60558-220-7/08/10. In single system refactoring, ensuring safety and effec- tiveness of a refactoring process already requires automa- tion, in practice. In the SPL context, where complexity in- creases due to the need to manage a high number of variants, such support becomes even more indispensable. In this con- text, we describe FLiP, which is a suite of tools implemented as Eclipse plugins. FLiP has been designed and tested in the context of mobile game SPLs. FLiP’s refactoring tool (FLiPEx) implements code trans- formations (2) for extracting product variability from Java classes into AspectJ aspects (4). An aspect modularizes variant code related to a feature and allows plugging into the SPL core alternative variability for that feature. This refactoring module interacts with FLiP’s feature manager (FLiPG), which integrates with Feature Model (FM) tools (1) for updating a SPL FM accordingly to code transformations. This, for example, might turn mandatory into optional fea- tures. Finally, FLiP’s building system (FLiPC) interacts with the manager module, which is responsible for using the in- formation stored to build the nal products. The refactoring process is presented to the user in the form of a wizard with which the user interacts to provide all the information required to perform the refactoring. After se- lecting the code to be refactored, the user is presented with a list of suggested refactorings; after selecting the refactoring, s/he selects or creates the features to which the code to be extracted belongs, and then chooses the destination aspects and associates them with the selected features. The possibil- ity of selecting several destination aspects to which the gen- erated AspectJ construct is copied helps the user to develop different implementations of the same variation. 2. Mobile Games Mobile games (and mobile applications, in general) must adhere to strong portability requirements. This stems from business constraints: in order to target more users, owning 737