Feature Modeling and Development with FeatureIDE
Thomas Thüm (TU Braunschweig), Thomas Leich (Metop GmbH), Sebastian Krieter (University of Magdeburg)
FeatureIDE is an open-source framework to model, develop, and analyze feature-oriented software product lines. It is mainly developed in a cooperation between TU Braunschweig, University of Magdeburg, and Metop GmbH. Nevertheless, many other institutions contributed to it in the past decade. Goal of this tutorial is to illustrate how FeatureIDE can be used to develop software around end-user features. We will show how feature models are connected to and synchronized with other artifacts. The hands-on tutorial will be highly interactive and is devoted to practitioners facing problems with variability, lecturers teaching product line development, and researchers who want to save resources in building product-line tools.
Motivation and Overview
between those systems are made explicit in terms of features, feature-oriented software product lines can be used to automatically generate software variants based on a selection of features [Ap13].
In feature-oriented software development, valid combinations of features are defined in a feature model during domain analysis. In domain design and domain implementation, those features are mapped to development artifacts, such as models, code, documentation, or tests. Preprocessors support a fine-grained mapping, as illustrated in the tutorial. Guided by the feature model, valid configurations are derived and then used as input for the preprocessor.
Since 2004 we are developing tool support for feature-oriented software development for Eclipse in the FeatureIDE project [Me17]. Since 2009, FeatureIDE is open source and received contributions from all over the world. While FeatureIDE started as a tool for teaching and a vehicle for research prototypes, today it is also applied in industrial projectswith thousands of features.
The tutorial is planned to be a highly-interactive, half-day event. We will demonstrate FeatureIDE’s functionality in addition to interleaved hands-on sessions, in which participants can to tryout FeatureIDE and rely on our assistance. In the interactive parts, the goal is to modify an example product line with FeatureIDE. Participants are asked to bring a notebook for the hands-on sessions. The tutorial will cover the following topics:
- Introduction to feature-oriented software development
- Setting up Eclipse and FeatureIDE
- Analysis of feature models and configurations
- Analysis and testing for feature-oriented software product lines
We gratefully acknowledge all who contributed to the open-source project FeatureIDE. In particular, a special thanks for recent contributions to Timo Günther, Christopher Sontag, Joshua Sprey, Paul Westphal, Chico Sundermann, Jens Meinicke, Reimar Schröter, Gunter Saake, Mustafa Al-Hajjaji, and Alexander Knüppel. A prior version of this tutorial has been presented at SPLC’16 [TLK16].
[Ap13] Apel, Sven; Batory, Don; Kästner, Christian; Saake, Gunter: Feature-Oriented Software Product Lines: Concepts and Implementation. Springer, Berlin, Heidelberg, 2013.
[Me17] Meinicke, Jens; Thüm, Thomas; Schröter, Reimar; Benduhn, Fabian; Leich, Thomas; Saake, Gunter: Mastering Software Variability with FeatureIDE. Springer, Berlin, Heidelberg, 2017.
[TLK16] Thüm, Thomas; Leich, Thomas; Krieter, Sebastian: Clean Your Variable Code with FeatureIDE. In: Proc. Int’l Software Product Line Conf. (SPLC). ACM, New York, NY, USA, S. 308–308, September 2016.