FeatureIDE
An Eclipse plug-in for Feature-Oriented Software Development.
Please cite as: Thomas Thüm, Christian Kästner, Fabian Benduhn, Jens Meinicke, Gunter Saake, and Thomas Leich. FeatureIDE: An Extensible Framework for Feature-Oriented Software Development. Science of Computer Programming, 2013. To appear; accepted 2012-06-07.
Description
Software product lines (SPL) have a long tradition and will gain momentum in the future. Today's research tries to move software development to a new quality of industrial production. Several solutions concerning different phases of the software development process have been proposed in order to cope with different problems of program family development. A major problem of program family engineering is still the missing tool support. The vision is an IDE that brings all phases of the development process together, consistently and in a user-friendly manner.
FeatureIDE is an Eclipse-based IDE that supports all phases of feature-oriented software development for the development of SPLs: domain analysis, domain implementation, requirements analysis, and software generation. Different SPL implementation techniques are integrated such as feature-oriented programming (FOP), aspect-oriented programming (AOP), delta-oriented programming (DOP), and preprocessors. Currently, FeatureIDE provides tool support for AHEAD, FeatureC++, FeatureHouse, AspectJ, DeltaJ, Munge, and Antenna.
FeatureIDE is under constant development. The following features are implemented:
- Full Eclipse Integration
- Feature Model Editor, graphical and text based.
- Constraint Editor with content assist, syntax, and semantic checking, e.g., dead feature detection.
- Abstraction from the SPL source code for several outline and navigation tools, among others and overview how mixins are composed and which methods are present in previous features.
- Configuration Editor to create and edit configurations and with support for deriving valid configuration.
- Support for edits on feature models, i.e., categorizing edits into refactorings, generalizations, specializations or none of these.
- Integration of AHEAD
- Editor with syntax highlighting, content assist and outline view for Jak files.
- Error propagation to show compiler errors at non-generated code.
- Refactoring support for Jak files
- Integration of FeatureC++
- Integration of FeatureHouse with support for C, C#, Java 1.5, Haskell, XML, JavaCC, ...
- Integration of AspectJ
- Integration of DeltaJ (only available for Eclipse 3.6)
- Integration of the preprocessor Munge
- Integration of the preprocessor Antenna
Screenshots
Some new functionality to appear soon is explained in the following screencasts:
- FeatureIDE extension for the C preprocessor including family-based type checking based on TypeChef, contributed by Marcio Ribeiro and others
Some new functionality in FeatureIDE 2.6.3 is explained in the following screencasts:
- The support for arbitrary feature names at the feature diagram and in the constraint editor
- Removal of features occurring in cross-tree constraints
- Warnings for indeterminate hidden features
- New functionality of the collaboration diagram with support for printing, showing methods and fields, and support for colors as known from FeatureCommander
Some new functionality in FeatureIDE 2.6.0 is explained in the following screencasts:
- Debugging and layouting feature models (including sound)
- Outline view for feature models and FeatureIDE files
- New FeatureIDE extension Antenna
Please check out the new tutorial by Don Batory including videos explaining the usage.
You may also want to watch a screencast of an older FeatureIDE version, namely FeatureIDE 2.3.6.
Publications
- Thomas Thüm, Christian Kästner, Fabian Benduhn, Jens Meinicke, Gunter Saake, and Thomas Leich. FeatureIDE: An Extensible Framework for Feature-Oriented Software Development. Science of Computer Programming, 2013. To appear; accepted 2012-06-07.
- Fabian Benduhn. Contract-Aware Feature Composition. Bachelor thesis, University of Magdeburg, Germany, October 2012.
- Sönke Holthusen. Typsicherheit in Feature-orientierten Software-Produktlinien in FeatureIDE. Master thesis, University of Magdeburg, Germany, July 2012. In German.
- Fabian Benduhn and Thomas Thüm. FeatureIDE - A Novel Approach to Develop Software. Online Portal, November 2011.
- Thomas Thüm and Fabian Benduhn. Entwicklung von Softwarevarianten mit FeatureIDE. Eclipse Magazin, 12(1):94–97, November 2011. In German.
- Thomas Thüm, Christian Kästner, Sebastian Erdweg, and Norbert Siegmund. Abstract Features in Feature Modeling. In Proceedings of the International Software Product Line Conference (SPLC), pages 191–200. IEEE Computer Society, August 2011.
- Christian Kästner, Thomas Thüm, Gunter Saake, Janet Feigenspan, Thomas Leich, Fabian Wielgorz, and Sven Apel. FeatureIDE: Tool Framework for Feature-Oriented Software Development. In Proceedings of the 31th International Conference on Software Engineering (ICSE), pages 611–614. IEEE Computer Society, May 2009. Formal Demonstration paper.
- Thomas Thüm, Don Batory, and Christian Kästner. Reasoning about Edits to Feature Models. In Proceedings of the 31th International Conference on Software Engineering (ICSE), pages 254–264. IEEE Computer Society, May 2009.
- T. Leich, S. Apel, L. Marnitz, and G. Saake. Tool Support for Feature-Oriented Software Development - FeatureIDE: An Eclipse-Based Approach -. In Proceedings of OOPSLA Eclipse Technology eXchange (ETX) Workshop, pages 55–59, San Diego, USA, October 2005.
Research based on FeatureIDE
- Ebrahim Bagheri and Faezeh Ensan. Dynamic Decision Models for Staged Software Product Line Configuration. Requirements Engineering Journal, Springer, To appear.
- Nikolaos Papakonstantinou. System Design and Risk Assessment for Safety Critical Control Software Product Lines. PhD thesis, Aalto University, Finland, 2012.
Related Publications
- Ina Schaefer, Lorenzo Bettini, Viviana Bono, Ferruccio Damiani, and Nico Tanzarella. Delta-Oriented Programming of Software Product Lines. In Software Product Line Conference (SPLC), volume 6287 of LNCS, pages 77-91. Springer, 2010.
- Sven Apel, Christian Kästner, and Christian Lengauer. FeatureHouse: Language-Independent, Automated Software Composition. In Proceedings of the 31th International Conference on Software Engineering (ICSE), pages 221-231. IEEE Computer Society, May 2009.
- Don Batory. A Tutorial on Feature Oriented Programming and the AHEAD Tool Suite. In Summer School on Generative and Transformation Techniques in Software Engineering (GTTSE), volume 4143 of LNCS, pages 3-35. Springer, September 2006.
- Sven Apel, Thomas Leich, Marko Rosenmüller, and Gunter Saake. FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming. In R. Glueck and M. Lowry, editors, Generative Programming and Component Engineering, 4th International Conference, GPCE 2005, volume 3676 of Lecture Notes on Computer Science. Springer, September/october 2005.
- Don Batory. Feature Models, Grammars, and Propositional Formulas. In Software Product Line Conference (SPLC), volume 3714 of LNCS, pages 7-20. Springer, 2005.
- Don Batory, Jacob N. Sarvela, and Axel Rauschmayer. Scaling Step-Wise Refinement. Transactions on Software Engineering (TSE), 30(6):355-371, 2004.
- Yannis Smaragdakis and Don Batory. Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. ACM Transactions on Software Engineering and Methodology (TOSEM), 11(2):215-255, 2002.
Documentation
We prepared slides as documentation for FeatureIDE.- FeatureIDE: Background - Short overview of Feature-Oriented Software Development
- FeatureIDE: Overview: Description of FeatureIDE's Functionality
- FeatureIDE: Get Started - How to install FeatureIDE and retrieve example projects
- FeatureIDE: Development - How to extend FeatureIDE, i.e., how is the SVN organized and which plug-in implements which functionalities
Download/Installation
How to install FeatureIDE and retrieve example projects? FeatureIDE: Get Started
Please support FeatureIDE by downloading it within Eclipse using Help > Eclipse Marketplace > Search for FeatureIDE!
We would like to get your feedback and comments
on FeatureIDE and you can rate our plug-in at the Eclipse MarketPlace.
You can download and test the current version of FeatureIDE using the Eclipse Update Mechanism or the Eclipse Marketplace. If you do not have Eclipse installed, you might choose the "Eclipse IDE for Java Developers" in the current version. We also prepared an Eclipse 3.6 for Windows with FeatureIDE, CDT, and AJDT installed:
- FeatureIDE 2.6.4 for Windows 32bit
- FeatureIDE 2.6.3 for Windows 32bit
- FeatureIDE 2.6.2 for Windows 32bit
- FeatureIDE 2.6.1 for Windows 32bit, Linux 32bit, and Linux 64bit
- FeatureIDE 2.6.0 for Windows 32bit
- FeatureIDE 2.5.1 for Windows 32bit
- FeatureIDE 2.5.0 for Windows 32bit
Open the FeatureIDE perspective in the right upper corner of the Eclipse window. You also may want to open the FeatureIDE cheat sheet using "Help > Cheat Sheets... > FeatureIDE".
Java 1.6 is required!
Eclipse Helios (3.6), Java 1.6
- Open Eclipse and go to "Help > Install New Software..."
- Add the following remote site: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/
- Select the the features FeatureIDE, Feature Modeling, and the required FeatureIDE extensions. You may need to add further update sites to install FeatureIDE extensions:
- AspectJ extension: AspectJ Development Tools, http://download.eclipse.org/tools/ajdt/36/update
- FeatureC++ extension: C/C++ Development Tooling, http://download.eclipse.org/tools/cdt/releases/helios
- Continue with "Install..."
Eclipse Galileo (3.5), Java 1.6
- Open Eclipse and go to "Help > Software Updates... > Available Software > Add Site..."
- Add the following remote site: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/
- Select the the features FeatureIDE, Feature Modeling, and the required FeatureIDE extensions. You may need to add further update sites to install FeatureIDE extensions:
- AspectJ extension: AspectJ Development Tools, http://download.eclipse.org/tools/ajdt/35/update
- FeatureC++ extension: C/C++ Development Tooling, http://download.eclipse.org/tools/cdt/releases/galileo
- Continue with "Install..."
Eclipse Ganymede (3.4), Java 1.6
- Open Eclipse and go to "Help > Software Updates... > Available Software > Add Site..."
- Add the following remote site: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/
- Select the the features FeatureIDE, Feature Modeling, and the required FeatureIDE extensions. You may need to add further update sites to install FeatureIDE extensions:
- AspectJ extension: AspectJ Development Tools, http://download.eclipse.org/tools/ajdt/34/update
- FeatureC++ extension: C/C++ Development Tooling is not available for this Eclipse version
- Continue with "Install..."
Older Versions
Using the above update site you can only access recent versions of FeatureIDE. Older versions can be accessed using the following update site:FeatureIDE 2.5 and earlier versions: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/2.5/
Nighly Builds
For nightly builds, use the following update site: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/nightly/p2-updateSite/Source Code
FeatureIDE is released under GPL license. The source code is available in the following SVN repository: https://faracvs.cs.uni-magdeburg.de/svn/tthuem-FeatureIDE (login:anonymous, no password). See also our Bug Tracker and Wiki.Usage
For a current step-by-step tutorial see the FeatureIDE cheat sheet in Eclipse (help menu). Examples can be found using "New > Examples > FeatureIDE".
1. Open the FeatureIDE Perspective
Open the FeatureIDE Perspective on the right upper corner of Eclipse.
2. Create a Feature Project
Use the wizard to create a new Feature Project or convert a Java project by adding the FeatureIDE nature (right click on the project in package explorer).
3. Edit the Feature Model
Open the model.xml file and edit the graphical (Feature Diagram) or textual version (Source). You can add or delete features using the context menu and rename using simple click. Features can be moved along the diagram using drag and drop. Double click on features or connections will change the feature to optional/mandantory or the connection type to And/Or/Alternative.
Create new constraints (context menu) or open existing ones (double click) with the Constraint Editor. You can add features by double clicking on their name, add operators using the buttons, or simply with the content assist. The constraint will be checked towards syntactical (missing brackets) and semantical validity (causes dead features).
Support for editing is provided by the Feature Model Edit View which can be opened at "Window > Show View > Other...". This view calculates whether the change you made to the feature model will cause addition or deletion of products. Additionally, an example product (added/deleted) is given if it exists.
4. Create Configuration files
Use the wizard to create new Configuration files in the folder "configs". In the Advanced Configuration Editor, features can be selected/deselected by a double click. A configuration that is not allowed along to the feature model gets an error marker.
If there is more than one Configuration file, only the one you have selected using right click and "Set as current configuration" is build.
5. Create Jak files or other FeatureIDE source files
Use the wizard to create new FeatureIDE files and add your code.
Hint: AHEAD forces that only Java 1.4 constructs are used.
Hint: Use of state machines in Jak files is not supported.
6. Create Run Configurations
Create run configurations as usual in Eclipse, e.g., right click on a generated Java file and use "Run As...".FAQ
Why are the symbols in cross-tree constraints below the feature diagram are not displayed correctly?
Please make sure that the font "Arial Unicode MS" is installed on your operating system so that FeatureIDE can use it to display the cross-tree constraints.How can I use external jar files in my FeatureIDE project?
For FeatureIDE 2.4 and older: Please create a folder named "lib" at the project root and insert all jar files which you intent to reference. The jar files are detected by the compiler and added as parameters if you run your FeatureIDE application.For FeatureIDE 2.5 and newer: Right click the jar files in package explorer and add them to the Java build path.
How can I compare two different feature models in FeatureIDE?
- Prepare two FeatureIDE projects (A and B) that contain the feature models you want to compare. Either edit them using FeatureIDE or import them from other formats, e.g., GUIDSL.
- Open the feature model of project A, switch to the tab Source, and copy the whole document.
- Open the feature model of project B, switch to the tab Source, and paste the clipboard.
- Switch back to the tab Feature Diagram in editor of project B and the feature model edit view will show the results.
How can I import/export the feature model from/to other tools?
Select the file model.xml in Package Explorer and open the context menu > FeatureIDE > Import/Export ...How can I store my feature model to a bitmap graphic or PDF file?
Select or open your feature model and then choose "File" > "Save As" or "File" > "Print". The later option requires that you have an PDF printer installed and have a program to crop PDFs (such as Adobe Acrobat).Note, that you can change the layout of the feature model since FeatureIDE 2.6 using "Set Layout" in the context menu of the feature model editor. There are pre-defined layouts, but you can also manually move features for compact positioning.
Contact
FeatureIDE is developed mainly at the University of Magdeburg, Germany. It is open source, to acquire the source code see SVN repository and bug tracker above. For information about the project, technical questions and bug reports: please contact the development team via thomas.thuem@ovgu.de. You can also use our bug tracker.
FeatureIDE Project Members:
- Thomas Thüm (University of Magdeburg, Germany; University of Texas at Austin, USA)
- Reimar Schröter (University of Magdeburg, Germany)
- Jens Meinicke (University of Magdeburg, Germany)
- Fabian Benduhn (University of Magdeburg, Germany)
- Sebastian Krieter (University of Magdeburg, Germany)
- Sven Schuster (University of Braunschweig, Germany)
- Felix Rieger (University of Marburg, Germany)
- Christian Kästner (Carnegie Mellon University, USA)
- Sandro Schulze (University of Braunschweig, Germany)
- Thomas Leich (Metop Research Institute, Magdeburg, Germany)
- Sven Apel (University of Passau, Germany)
- Don Batory (University of Texas at Austin, USA)
Former Project Members:
- Constanze Adler (University of Magdeburg, Germany)
- Christian Becker (University of Magdeburg, Germany)
- Stephan Besecke (University of Magdeburg, Germany)
- David Broneske (University of Magdeburg, Germany)
- Tom Brosch (University of Magdeburg, Germany)
- Alexander Dreiling (University of Magdeburg, Germany)
- Janet Siegmund (Feigenspan) (Metop Research Institute, Magdeburg, Germany)
- Christoph Giesel (University of Magdeburg, Germany)
- David Halm (University of Magdeburg, Germany)
- Sebastian Henneberg (University of Passau, Germany)
- Sönke Holthusen (University of Magdeburg, Germany)
- Marcus Kamieth (University of Magdeburg, Germany)
- Stephan Kauschka (University of Magdeburg, Germany)
- Dariusz Krolikowski (University of Magdeburg, Germany)
- Stefan Krüger (University of Magdeburg, Germany)
- Maik Lampe (University of Magdeburg, Germany)
- Christian Lausberger (University of Magdeburg, Germany)
- Tim Lautenschläger (University of Magdeburg, Germany)
- Laura Marnitz (University of Magdeburg, Germany)
- Cyrill Meier (University of Magdeburg, Germany)
- Marcus Leich (University of Magdeburg, Germany)
- Melanie Pflaume (University of Magdeburg, Germany)
- Florian Proksch (University of Magdeburg, Germany)
- Eric Schubert (University of Magdeburg, Germany)
- Steffen Schulze (University of Magdeburg, Germany)
- Ingo Siemers (University of Magdeburg, Germany)
- Hannes Smuracsky (University of Magdeburg, Germany)
- Torsten Stöter (University of Magdeburg, Germany)
- Patrick Sulkowski(University of Magdeburg, Germany)
- Patrick Venohr (University of Magdeburg, Germany)
- Jan Wedding (University of Magdeburg, Germany)
- Fabian Wielgorz (University of Passau, Germany)
Statistics
Since December 2010 FeatureIDE is listed at the Eclipse marketplace.
Since 2007 we received support request from the following cities:
View FeatureIDE Support Requests on a larger map
Related Downloads
FeatureIDE is extended for "An Homogeneous Feature-based Approach" separating and linking different variability spaces: http://modalis.polytech.unice.fr/softwares/hfm.
We generated 2000 feature models for our current research which are available for download. There are 200 models in ten different sizes: 10, 20, 50, 100, 200, 500, 1000, 2000, 5000 and 10000 features. All feature models contain cross-tree constaints growing with the number of features and are not void, i.e., they contain at least one product.
Guidsl jar file: guidsl.jar

