fmp and fmp2rsm: Eclipse Plugins for Modeling Features Using Model Templates
Courtyard (room B)
Wednesday, 15:00, 45 minutes
Krzysztof Czarnecki, University of Waterloo
Michal Antkiewicz, University of Waterloo
Demonstration number: 23* What problems are addressed? Software product lines, frameworks, and platforms implement different combinations of features for different applications. For example, an e-commerce platform may support different payment methods (credit card, electronic check, purchase order), checkout mechanisms (registered, quick checkout profile, guest), etc. fmp (http://gp.uwaterloo.ca/fmp) is an Eclipse plugin for feature modeling, which allows creating taxonomies of features including variability properties of features (optional, alternative, repeating, etc.) and constraints among them (e.g., implies and excludes). fmp2rsm (http://gp.uwaterloo.ca/fmp2rsm) is a plugin for creating UML model templates in IBM Rational Software Modeller, where individual model elements can be annotated with presence conditions using features from the feature model. fmp allows the user to create a configuration of features that satisfies the constraints of a feature model, and fmp2rsm will automatically create the corresponding instances of model templates. Model templates can be used for representing generic models, e.g., generic business processes or architectures. * What will the audience be seeing? We will demonstrate fmp and fmp2rsm using business and architecture models of an e-commerce platform. * What is object-oriented about the software? Both systems support object-oriented modeling of software product lines. * What is unique about the design or implementation? fmp2rsm automatically colors model templates to indicate which parts of the models correspond to which features. * What underlying technologies are used? fmp uses BDDs to propagate constraints and guide users to create correct configurations of features. fmp2rsm generates annotation UML profiles from feature models and uses model transformations to create template instances.