An Eclipse plug-in for Feature-Oriented Software Development.
You like FeatureIDE or you are interested in updates? Star or watch us on Github. Follow us on Twitter. Subscribe our Youtube channel. Follow new publications at Google Scholar. Mark us as favorite in the Eclipse MarketPlace.
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.
FeatureIDE is under constant development. The following features are implemented:
- Full Eclipse Integration
- Feature Model Editor, graphical and text based.
- Highlighting of dead and false-optional features and their corresponding constraints based on Sat4j.
- 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.
- A view displaying statistics about the software product line.
- Feature-oriented programming:
- Integration of AHEAD
- Integration of FeatureC++
- Integration of FeatureHouse with support for C, C#, Java 1.5, JML, Haskell, XML, JavaCC, ...
- Family-based type checks with Fuji
- Aspect-oriented programming:
- Integration of AspectJ
- Delta-oriented programming:
- Integration of the C preprocessor with Colligens
- Family-based type checks with TypeChef
- Integration of the preprocessor Munge
- Integration of the preprocessor Antenna
- Generation of all program variants
- Support for feature model grammars of following tools:
- Synthesis of programs with Launchpad
Check out our YouTube channel.
Please check out the tutorial by Jörg Liebig based on material 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.
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, Sebastian Krieter, Fabian Benduhn, Gunter Saake, and Thomas
FeatureIDE: Taming the Preprocessor Wilderness.
In Proceedings of the International Conference on Software Engineering
- 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
- Thomas Thüm, Christian Kästner,
Fabian Benduhn, Jens Meinicke, Gunter Saake, and Thomas Leich.
FeatureIDE: An Extensible Framework for Feature-Oriented Software
Science of Computer Programming, 79(0):70–85, January
- 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.
- Christian Kästner, Thomas Thüm,
Gunter Saake, Janet Feigenspan, Thomas Leich, Fabian Wielgorz, and Sven Apel.
FeatureIDE: Tool Framework for Feature-Oriented Software
In Proceedings of the 31th International Conference on Software
Engineering (ICSE), pages 611–614. IEEE Computer Society, May 2009.
Formal Demonstration paper.
- T. Leich, S. Apel, L. Marnitz, and
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
- CIDE: A software product line tool for software product line development following the paradigm of separation of concerns.
- FAMILIAR: An executable language that supports manipulating and reasoning about feature models.
- Fuji: An extensible compiler that supports feature-oriented programming in Java.
- LEADT: Supports developers in locating features in Java code in order to turn them into a software product line.
- FeatureIDE is extended for "An Homogeneous Feature-based Approach" separating and linking different variability spaces.
- VAmPiRE: Variant-Preserving Refactoring for Feature-Oriented Software Product Lines.
- BUT4Reuse: Feature identification in clone-and-own, feature-model import from and export to FeatureIDE
- VariantSync: Synchronization support for clone-and-own based on domain knownledge specified with FeatureIDE
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
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 search 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).
Download with Update Site
- 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.cs.ovgu.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..."
Supported Java and Eclipse Versions
Java 1.7 or higher is required since FeatureIDE v2.7.3. FeatureIDE 2.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.6 (Neon)||Yes||Yes||Yes||Yes||Yes CDT 9.1||? AJDT dev builds||Yes||Yes||Yes CDT 9.1||No|
|Eclipse 4.5 (Mars)||Yes||Yes||Yes||Yes||Yes CDT 8.8.1||? AJDT dev builds||Yes||Yes||Yes CDT 8.8.1||No|
|Eclipse 4.4 (Luna)||Yes||Yes||Yes||Yes||Yes CDT 8.6||Yes, AJDT dev builds seems 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.
When importing the FeatureIDE plug-ins, a) deselect the checkbox for nested projectes, and b) type 'plugins' into the filter. Then you can import the projects you need.
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?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.
FeatureIDE is developed mainly at the University of Magdeburg, Germany. It is open source, to acquire the source code see Git repository and bug tracker above. For information about the project, technical questions and bug reports: please contact the FeatureIDE development team. You can also use our bug tracker.
FeatureIDE project members and contributors:
- Thomas Thüm (TU Braunschweig, Germany; University of Magdeburg, Germany; University of Texas at Austin, USA)
- Jens Meinicke (University of Magdeburg, Metop Research Institute, Germany)
- Christian Kästner (Carnegie Mellon University, USA)
- Thomas Leich (Metop Research Institute, Magdeburg, Germany)
- Reimar Schröter (University of Magdeburg, Germany)
- Fabian Benduhn (University of Magdeburg, Germany)
- Sebastian Krieter (University of Magdeburg, Germany)
- Konstantin Tonscheidt (University of Magdeburg, Germany)
- Marcus Pinnecke (University of Magdeburg, Germany)
- Christopher Kruczek (Metop Research Institute, Magdeburg, Germany)
- Stefan Krüger (University of Paderborn, Germany)
- Sven Schuster (University of Braunschweig, Germany)
- Sandro Schulze (University of Braunschweig, Germany)
- Márcio Ribeiro (Federal University of Alagoas, Brazil)
- Francisco Dalton (Federal University of Alagoas, Brazil)
- Thiago Emmanuel de Oliveira Lima (Federal University of Alagoas, Brazil)
- Flávio Medeiros (Federal University of Alagoas, Brazil)
- Indika Weerasingha Kumara (Swinburne University of Technology, Melbourne, Australia)
- Malinda Kaushalye Kapuruge (Swinburne University of Technology, Melbourne, Australia)
- Angelo Gargantini (University of Bergamo, Italy)
- Paolo Vavassori (University of Bergamo, Italy)
- Don Batory (University of Texas at Austin, USA)
- Sven Apel (University of Passau, Germany)
Former project members and contributors:
- 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)
- Erik Dänike (University of Magdeburg, Germany)
- Alexander Dreiling (University of Magdeburg, Germany)
- Christoph Giesel (University of Magdeburg, Germany)
- Patrik Haese (University of Magdeburg, Germany)
- David Halm (University of Magdeburg, Germany)
- Dominik Hamann (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)
- 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)
- Felix Rieger (University of Marburg, Germany)
- Alexander Schmidt (University of Magdeburg, Germany)
- Eric Schubert (University of Magdeburg, Germany)
- Steffen Schulze (University of Magdeburg, Germany)
- Janet Siegmund (Feigenspan) (Metop Research Institute, 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)
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)
- TU Wien, Austria (Rick Rabiser)
- Carnegie Mellon University, USA (Christian Kästner)
- Hochschule Harz, Germany (Thomas Leich)
- Is your lecture missing? Please let us know.
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
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