You like FeatureIDE or you are interested in updates? Star or watch us on GitHub. Follow us on Twitter. Subscribe to our YouTube channel. Follow new publications at Google Scholar. Mark us as favorite in the Eclipse Marketplace.
Quick links to Update Site, GitHub, Issues, Change log
Jump below to Publications, Documentation, Download, FAQ, Contact, Statistics, Related Downloads
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 product-line development. A major problem of product-line engineering is still the missing tool support. The vision is an integrated development environment (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 design, domain implementation, requirements analysis, software generation, and quality assurance. Different SPL implementation techniques are integrated such as feature-oriented programming (FOP), aspect-oriented programming (AOP), preprocessors, and plug-ins.
FeatureIDE is under constant development. The following features have been implemented since 2004:
- Domain analysis
- Graphical and textual editor for feature models and cross-tree constraints
- Automated analysis and explanation of feature-model anomalies, such as dead and false-optional features, based on Sat4j
- Categorization of feature-model edits into refactoring, generalization, specialization, and arbitrary edits
- Folding and layouting that scale to large feature models with thousands of features
- Import and export of feature models to tools and languages, such as Dimacs, fmp: Feature Modeling Plug-in, GUIDSL, S.P.L.O.T., SPL Conqueror, Velvet
- Domain design
- Collaboration diagram and outline to visualize and navigate in product-line architectures
- Sophisticated filtering and folding opportunities
- Domain implementation
- Feature-oriented programming with AHEAD (Java 1.4), FeatureC++ (C++), and FeatureHouse (C, Java 1.5, JML, Haskell, XML, JavaCC)
- Aspect-oriented programming with AspectJ (Java) and FeatureC++ (C++)
- Delta-oriented modeling and programming with DeltaEcore and DeltaJ (Java)
- Annotation-based implementation with preprocessor Antenna, C preprocessor CPP by Colligens, and preprocessor Munge
- Black-box frameworks with plug-ins
- Runtime variability with runtime parameters and property files
- Statistics and code metrics for product-line implementations
- Refactoring, source-code documentation with JavaDoc, and formal specification with JML
- Requirements analysis
- Editor for configuration processes without backtracking
- Validity checking and decision propagation based on Sat4j
- Checking for unused and always selected features
- Comparison of user-defined configuration
- Recommendation of features
- Software generation and quality assurance
- Automated product generation after changes for one selected configuration
- Propagation of compiler markers to original source code
- Family-based analyses
- Semi-automated generation of configurations, compilation and testing (i.e., product-based analysis)
- Cross-cutting features
- Feature traceability with colors over the whole development cycle
- Cheat sheet, wiki, slides, and screencasts available for documentation
- Many examples for feature models and product lines
Numerous other tools have been built on top of the FeatureIDE architecture:
- Merlin: A tool to engineer and analyze meta-model product lines, and their associated transformation product lines.
- BUT4Reuse: Feature identification in clone-and-own, feature-model import from and export to FeatureIDE
- CIDE: A software product line tool for software product line development following the paradigm of separation of concerns
- Colligens: A FeatureIDE extension providing tool support for C code annotated with the C preprocessor
- FAMILIAR: An executable language that supports manipulating and reasoning about feature models
- feature-gen: Takes a FeatureIDE feature model as input and generates Java classes with annotated features
- Fuji: An extensible compiler that supports feature-oriented programming in Java
- INTEGRATE: supporting company-wide, collaborative and variability-aware industrial plant engineering
- Launchpad: Feature-oriented synthesis of programs
- LEADT: Supports developers in locating features in Java code in order to turn them into a software product line
- VAmPiRE: Variant-Preserving Refactoring for Feature-Oriented Software Product Lines
- VariantSync: Synchronization support for clone-and-own based on domain knowledge specified with FeatureIDE
- Is your tool missing? Please let us know.
Since 2007 we received support request from the following cities:
<iframe src="https://www.google.com/maps/d/u/0/embed?mid=1PC651Ks5I7jzbU2nSj5ikMQSlMU&ehbc=2E312F" width="100%" height="500" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>In the following, we only report selected publications with the main aim to demonstrate or describe FeatureIDE's functionality. For a more complete list of publications on the FeatureIDE functionality, we refer to Google Scholar.
- Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, and Gunter Saake.
Mastering Software Variability with FeatureIDE.
Springer, 2017.
- Mustafa Al-Hajjaji, Jens Meinicke,
Sebastian Krieter, Reimar Schröter, Thomas Thüm, Thomas Leich, and
Gunter Saake.
Tool Demo: Testing Configurable Systems with FeatureIDE.
In Proceedings of the International Conference on Generative Programming:
Concepts & Experiences (GPCE), pages 173–177, New York, NY, USA,
October 2016. ACM.
- Jens Meinicke, Thomas Thüm, Reimar
Schröter, Sebastian Krieter, Fabian Benduhn, Gunter Saake, and Thomas
Leich.
FeatureIDE: Taming the Preprocessor Wilderness.
In Proceedings of the International Conference on Software Engineering (ICSE), pages 629-632, New York, NY, USA. May 2016. ACM.
- Juliana Alves Pereira, Sebastian
Krieter, Jens Meinicke, Reimar Schröter, Gunter Saake, and Thomas Leich.
FeatureIDE: Scalable Product Configuration of Variable Systems.
In Proceedings of the International Conference on Software Reuse (ICSR), pages 397-401, New York, NY, USA. Springer. (Link to ACM)
- 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, 79(0):70–85, January
2014. (Link to ACM)
- 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 International Conference on Software
Engineering (ICSE), pages 611–614. IEEE Computer Society, May 2009. (Link to ACM)
- 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. (Link to ACM)
For a current step-by-step tutorial see the FeatureIDE cheat sheet in Eclipse (help menu).
Examples can be found using New > Examples > FeatureIDE.
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
Please check out the tutorial by Jörg Liebig based on material by Don Batory including videos explaining the usage.
You can download FeatureIDE in the Eclipse Marketplace by dragging the install button (on the right side) into your Eclipse or using Help > Eclipse Marketplace and then searching for FeatureIDE.
As there are many dependencies and installation is not always straightforward, we prepared special versions of Eclipse with all necessary plug-ins installed. In most cases, we took an existing Eclipse with JDT and then installed CDT, AJDT, and FeatureIDE. For a 32Bit version, Java 32Bit is required (even possible on a 64Bit machine). For a 64Bit version, Java 64Bit is required (only possible on a 64Bit machine).
ℹ️ Since Eclipse 2020-09 (4.17), Eclipse requires at least Java 11 to launch. This affects the prepackages of FeatureIDE starting with v3.6.4. However, FeatureIDE requires only Java 8 for now and can therefore be installed into older Eclipse versions (we recommend Eclipse 4.16) via the Eclipse Marketplace or the Update Site. Consult the Wiki for more information on these installation methods.
ℹ️ On Windows, extracting the ZIP files below may sometimes cause problems with long file paths due to Eclipse. If you encounter such problems, extracting the ZIP file to the root of your filesystem (e.g.,
C:\
) should fix the problem.
- Open Eclipse and go to Help > Install New Software... (Eclipse 3.5 and older: Help > Software Updates... > Available Software > Add Site...)
- Add one of update sites below:
- FeatureIDE v3.x: http://featureide.uni-ulm.de/update/v3/
- FeatureIDE v2.6 and v2.7: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/
- FeatureIDE v2.5 and earlier versions: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/deploy/2.5/
- Nightly builds: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/nightly/p2-updateSite/ (Hint: disable Group items by category at the update wizard.)
- Select the features FeatureIDE, Feature Modeling, and the required FeatureIDE extensions. You may need to add further update sites to install FeatureIDE extensions. See table below.
- Continue with Install...
Java 1.8 or higher is required since FeatureIDE v3.6.0. FeatureIDE v2.7.3 to v3.5.5 require at least Java 1.7. FeatureIDE v2.7.2 and earlier versions do only require Java 1.6.
If you do not have Eclipse installed, you might choose the Eclipse IDE for Java Developers in the current version. If you intend to extend Eclipse or FeatureIDE, we recommend Eclipse for Committers instead.
Compatibility of FeatureIDE plug-ins and Eclipse versions. The table contains links to the update sites of additional required plug-ins. As most extensions require JDT, it is omitted below.
Feature Modeling | FeatureIDE | AHEAD | FeatureHouse | FeatureC++ | AspectJ | Antenna | Munge | Colligens / CPP | DeltaJ | |
---|---|---|---|---|---|---|---|---|---|---|
Eclipse 4.8 (Photon) | Yes | Yes | Yes | Yes | Yes CDT 9.5 | AJDT 4.8 dev builds available, but too buggy | Yes | Yes | Yes CDT 9.5 | No |
Eclipse 4.7 (Oxygen) | Yes | Yes | Yes | Yes | Yes CDT 9.3, CDT 9.4 | Yes, AJDT 4.7 dev builds seem to work | Yes | Yes | Yes CDT 9.3, CDT 9.4 | No |
Eclipse 4.6 (Neon) | Yes | Yes | Yes | Yes | Yes CDT 9.1 | Yes, AJDT 4.6 dev builds seem to work | Yes | Yes | Yes CDT 9.1 | No |
Eclipse 4.5 (Mars) | Yes | Yes | Yes | Yes | Yes CDT 8.8.1 | Yes, AJDT 4.5 dev builds seem to work | Yes | Yes | Yes CDT 8.8.1 | No |
Eclipse 4.4 (Luna) | Yes | Yes | Yes | Yes | Yes CDT 8.6 | Yes, AJDT 4.4 dev builds seem to work | Yes | Yes | Yes CDT 8.6 | No |
Eclipse 4.3 (Kepler) | Yes | Yes | Yes | Yes | Yes CDT | Yes AJDT | Yes | Yes | Yes CDT | No |
Eclipse 4.2 (Juno) | Yes | Yes | Yes | Yes | Yes CDT | Yes AJDT | Yes | Yes | Yes CDT | Yes Xtext-2.3.1*, XTypeS |
Eclipse 3.7 (Indigo) | Yes | Yes | Yes | Yes | Yes CDT | Yes AJDT | Yes | Yes | Yes CDT | Yes Xtext-2.3.1*, XTypeS |
* Depending on pre-installed plugins, there can be problems with installing Xtext. Check which version of Google Inject you have installed in your plugins folder:
com.google.inject_3.0.0.no_aop.jar
works,
com.google.inject_3.0.0.v201203063045.jar
does not work.
T-wise generation with CASA is currently only available on Windows systems. If you however need to use it, contact us so we can find a solution.
All functionalities are tested under Windows, Mac, and Linux. However, FeatureIDE is mainly developed under Windows. If you have problems with FeatureIDE on your operating system, please do not hesitate to contact us or to use our bug tracker.
FeatureIDE is released under L-GPL license v3. The source code is available on GitHub. See also our bug tracker and wiki.
When importing the FeatureIDE plug-ins, a) deselect the checkbox for nested projects, and b) type 'plugins' into the filter. Then you can import the projects you need.
Before switching to Git and GitHub, we used to work with SVN (deprecated) and Trac (deprecated). This FeatureIDE website has also been published on other domains, such as http://wwwiti.cs.uni-magdeburg.de/iti_db/research/featureide/, http://featureide.cs.ovgu.de/, http://fosd.de/featureide, http://fosd.de/fide, http://fosd.net/featureide, http://fosd.net/fide.
How to install FeatureIDE and retrieve example projects? FeatureIDE: Get Started
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.
Why are the symbols in cross-tree constraints below the feature diagram are not displayed correctly?
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.
- 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.
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.
For more information about the project, support requests, and technical questions, do not hesitate to contact the FeatureIDE development team. For bug reports, you can use our bug tracker.
FeatureIDE development team:
- Thomas Thüm (TU Braunschweig, Germany)
- Sebastian Krieter (TU Braunschweig, Germany)
- Chico Sundermann (University of Ulm, Germany)
- Rahel Sundermann (University of Ulm, Germany)
- Elias Kuiter (University of Magdeburg, Germany)
- Andreas Gerasimow (University of Ulm, Germany)
- Thomas Leich (Metop Research Institute, Germany; Harz University of Applied Sciences, Germany)
- Gunter Saake (University of Magdeburg, Germany)
- Ina Schaefer (Karlsruhe Institute of Technology, Germany)
Further contributors and former project members:
- Ajeeth Kularajan (TU Braunschweig, Germany)
- Alexander Dreiling (University of Magdeburg, Germany)
- Alexander Kittelmann (TU Braunschweig, Germany)
- Alexander Schmidt (University of Magdeburg, Germany)
- Angelo Gargantini (University of Bergamo, Italy)
- Anna-Liisa Ahola (TU Braunschweig, Germany)
- Antje Mönch (TU Braunschweig, Germany)
- Benedikt Jutz (University of Ulm, Germany)
- Christian Becker (University of Magdeburg, Germany)
- Christian Kästner (Carnegie Mellon University, USA)
- Christian Lausberger (University of Magdeburg, Germany)
- Christian Orsinger (TU Braunschweig, Germany)
- Christoph Giesel (University of Magdeburg, Germany)
- Christopher Kruczek (Metop Research Institute, Magdeburg, Germany)
- Christopher Sontag (TU Braunschweig, Germany)
- Constanze Adler (University of Magdeburg, Germany)
- Cyrill Meier (University of Magdeburg, Germany)
- Daniel Hohmann (University of Magdeburg, Germany)
- Dariusz Krolikowski (University of Magdeburg, Germany)
- David Broneske (University of Magdeburg, Germany)
- David Halm (University of Magdeburg, Germany)
- Dawid Szczepanski (TU Braunschweig, Germany)
- Domenik Eichhorn (TU Braunschweig, Germany)
- Dominik Engelhardt (TU Braunschweig, Germany)
- Dominik Hamann (University of Magdeburg, Germany)
- Don Batory (University of Texas at Austin, USA)
- Edgard Schmidt (TU Braunschweig, Germany)
- Edward Bechthold (TU Braunschweig, Germany)
- Enis Belli (TU Braunschweig, Germany)
- Eric Schubert (University of Magdeburg, Germany)
- Erik Dänike (University of Magdeburg, Germany)
- Fabian Benduhn (University of Magdeburg, Germany)
- Fabian Wielgorz (University of Passau, Germany)
- Felix Rieger (University of Marburg, Germany)
- Flávio Medeiros (Federal University of Alagoas, Brazil)
- Florian Proksch (University of Magdeburg, Germany)
- Francisco Dalton (Federal University of Alagoas, Brazil)
- Hannes Smuracsky (University of Magdeburg, Germany)
- Holger Fenske (TU Braunschweig, Germany)
- Indika Weerasingha Kumara (Swinburne University of Technology, Melbourne, Australia)
- Ingo Siemers (University of Magdeburg, Germany)
- Insansa Mun Gomba Michel (TU Braunschweig, Germany)
- Iris-Maria Banciu (University of Magdeburg, Germany)
- Jan Wedding (University of Magdeburg, Germany)
- Jan Werner (TU Braunschweig, Germany)
- Janet Siegmund (TU Chemnitz, Germany)
- Jann-Ole Henningson (TU Braunschweig, Germany)
- Jens Meinicke (Carnegie Mellon University, USA; University of Magdeburg, Germany)
- Johannes Herschel (University of Ulm, Germany)
- Jörg Liebig (University of Passau, Germany)
- Joshua Sprey (TU Braunschweig, Germany)
- Kai Wolf (University of Magdeburg, Germany)
- Kamil Rosiak (TU Braunschweig, Germany)
- Kevin Jedelhauser (University of Ulm, Germany)
- Konstantin Tonscheidt (University of Magdeburg, Germany)
- Laura Marnitz (University of Magdeburg, Germany)
- Lennart Kontny (TU Braunschweig, Germany)
- Lukas Vogel (University of Magdeburg, Germany)
- Maik Lampe (University of Magdeburg, Germany)
- Malek Badeer (TU Braunschweig, Germany)
- Malinda Kaushalye Kapuruge (Swinburne University of Technology, Melbourne, Australia)
- Marcel Daniel (TU Braunschweig, Germany)
- Márcio Ribeiro (Federal University of Alagoas, Brazil)
- Marcus Kamieth (University of Magdeburg, Germany)
- Marcus Leich (University of Magdeburg, Germany)
- Marcus Pinnecke (University of Magdeburg, Germany)
- Marlen Bernier (TU Braunschweig, Germany)
- Martha Nyerembe (University of Magdeburg, Germany)
- Matthias Quaas (University of Magdeburg, Germany)
- Maximilian Homann (TU Braunschweig, Germany)
- Melanie Pflaume (University of Magdeburg, Germany)
- Mohammed Khaled (University of Magdeburg, Germany)
- Mohammed Mahhouk (TU Braunschweig, Germany)
- Niklas Lehnfeld (TU Braunschweig, Germany)
- Oliver Urbaniak (TU Braunschweig, Germany)
- Paolo Vavassori (University of Bergamo, Italy)
- Paul Maximilian Bittner (University of Ulm, Germany)
- Paul Westphal (TU Braunschweig, Germany)
- Patrick Sulkowski (University of Magdeburg, Germany)
- Patrick Venohr (University of Magdeburg, Germany)
- Patrik Haese (University of Magdeburg, Germany)
- Philipp Kuhn (TU Braunschweig, Germany)
- Philipp Vulpius (University of Ulm, Germany)
- Reimar Schröter (University of Magdeburg, Germany)
- Sabrina Hugo (TU Braunschweig, Germany)
- Sandro Schulze (University of Potsdam, Germany)
- Sofia Ananieva (TU Braunschweig, Germany)
- Sönke Holthusen (University of Magdeburg, Germany)
- Sebastian Henneberg (University of Passau, Germany)
- Simon Wenk (University of Magdeburg, Germany)
- Sören Viegener (University of Ulm, Germany)
- Stefan Krüger (University of Paderborn, Germany)
- Stefan Vill (University of Ulm, Germany)
- Stefanie Bolle (TU Braunschweig, Germany)
- Stefanie Schober (TU Braunschweig, Germany)
- Steffen Schulze (University of Magdeburg, Germany)
- Stephan Besecke (University of Magdeburg, Germany)
- Stephan Kauschka (University of Magdeburg, Germany)
- Sven Apel (University of Passau, Germany)
- Sven Schuster (University of Braunschweig, Germany)
- Thiago Emmanuel de Oliveira Lima (Federal University of Alagoas, Brazil)
- Thomas Graave (TU Braunschweig, Germany)
- Tim Lautenschläger (University of Magdeburg, Germany)
- Timo Günther (TU Braunschweig, Germany)
- Tobias Heß (University of Ulm, Germany)
- Tobias Pett (TU Braunschweig, Germany)
- Tom Brosch (University of Magdeburg, Germany)
- Torsten Stöter (University of Magdeburg, Germany)
- Yang Liu (University of Magdeburg, Germany)
Since 2007, FeatureIDE is being used by lecturers at numerous universities:
- University of Magdeburg, Germany (Christian Kästner, Gunter Saake, Martin Kuhlemann, Norbert Siegmund, Thomas Thüm, Thomas Leich)
- University of Passau, Germany (Sven Apel, Norbert Siegmund)
- University of Marburg, Germany (Christian Kästner, Daniel Strüber, Gabriele Taentzer)
- TU Braunschweig, Germany (Sandro Schulze, Thomas Thüm)
- TU Darmstadt, Germany (Malte Lochau)
- JKU Linz, Austria (Rick Rabiser)
- Carnegie Mellon University, USA (Christian Kästner)
- Hochschule Harz, Germany (Thomas Leich)
- University of Koblenz-Landau, Germany (Daniel Strüber, Jan Jürjens)
- University of Lille, France (Clément Quinton)
- University of Ulm, Germany (Thomas Thüm)
- Is your lecture missing? Please let us know.
Tumblr Hit Counter