Model-Driven Software Product Lines Krzysztof Czarnecki, Michal Antkiewicz, Chang Hwan Peter Kim, Sean Lau, Krzysztof Pietroszek University of Waterloo 200 University Ave. West Waterloo, ON N2L 3G1, Canada {kczarnec,mantkiew,chpkim,sqlau,kmpietro}@swen.uwaterloo.ca ABSTRACT Model-driven software product lines combine the abstraction capability of Model Driven Software Development (MDSD) and the variability management capability of Software Prod- uct Line Engineering (SPLE). This short contribution mo- tivates the idea of model-driven software product lines and briefly explains the concepts underlying feature-based model templates, which is a particular technique for modeling soft- ware product lines. Categories and Subject Descriptors D.2.1 [Software Engineering]: Requirements / Specifica- tions—Tools ; D.2.2 [Software Engineering]: Design Tools and Techniques—Computer-aided software engineering (CA- SE); D.2.4 [Software Engineering]: Software/Program Verification; D.2.13 [Software Engineering]: Reusable Soft- ware—Domain engineering, Reuse models General Terms Design, Documentation, Verification Keywords Domain analysis, feature modeling, model-driven software development, product configuration, software-product lines, software reuse, variability modeling and management 1. INTRODUCTION Software product line engineering and model-driven soft- ware development are two recent trends that have been drawing increased attention from the software development community. Software product line engineering (SPLE) [10, 1] optimizes the development of individual systems within an application domain by leveraging their common characteris- tics and managing their differences in a systematic way. In SPLE, individual systems can be built rapidly from reusable assets, such as a set of components and/or a common plat- form. Model-driven software development (MDSD) aims at cap- turing every important aspect of a software system through appropriate models. Compared to implementation code, models capture the intentions of the stakeholders more di- rectly, are freer from accidental implementation details, and Copyright is held by the author/owner. OOPSLA’05 Posters, October 16–20, 2005, San Diego, California, USA. ACM 1-59593-193-7/05/0010. are more amenable to analysis. In MDSD, models are not just auxiliary documentation artifacts; rather, they are source artifacts and can be used for automated analysis and/or code generation. Generative software development [2] and related approach- es, such as Software Factories [6], have been propagating the integration of software product lines and model-driven software development; also, an entire workshop has been recently dedicated to this topic [9]. At the root of this de- velopment lies the recognition that SPLE and MDSD are not only complementary, but their integration bears the po- tential for significant synergies. While MDSD can help us represent different aspects of a product line more abstractly, SPLE provides a well- defined application scope, which puts the development and selection of appropriate modeling lan- guages on a sound basis. Furthermore, the automated anal- ysis and code generation afforded by precise models can help us automate the creation of product line members. A particular technique for model-driven development of product lines that was proposed in our research group is feature-based model templates [3]. In a nutshell, a model template can represent a set of model variants in a super- imposed form within a single artifact. The represented vari- ants could be behavioral, structural, or non-functional mod- els. Furthermore, a feature-based model template also con- tains a feature model which concisely represents the avail- able choices within the set of variants. Thus, feature-based model templates combine two ingredients: feature modeling and model templates, which we describe as next. 2. FEATURE MODELING Feature modeling is a technique for representing the com- monalities and the variabilities among a set of systems in concise, taxonomic form [7]. Features are prominent func- tional and/or nonfunctional characteristics of the systems. Feature models are hierarchies of features that describe dif- ferent kinds of variability. For example, some features are mandatory and some are optional or alternative. We have developed a particular form of feature modeling, which is referred to as cardinality-based [5]. In cardinality- based feature modeling, the number of possible selections from a group of features is specified by a cardinality inter- val. Furthermore, a feature can have a cardinality interval expressing whether the feature can be selected or cloned. Finally, features can have attributes for representing values such as numbers and strings. These additional modeling fa- cilities make the feature models applicable to a wider range of configuration problems, such as embedded software [4].