
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 currently provides tool support for AHEAD (a prominent design methodology and architectural model for feature-based program families), FeatureC++ and FeatureHouse, .
FeatureIDE is an Eclipse-based IDE that supports building program families following the AHEAD architecture model. It provides tools for the feature oriented design process and the implementation of software product lines. It integrates AHEAD, FeatureC++ and FeatureHouse tools like composition tools, compilers and more.
FeatureIDE is under constant development. The following features are implemented or planned for the near future:
NEW: Please check out our new screencast of FeatureIDE 2.3.6.
Tools support is crucial for the acceptance of a new programming language. However, providing such tool support is a huge investment that can usually not be provided for a research language. With FeatureIDE, we have built an IDE for AHEAD that integrates all phases of featureoriented software development. To reuse this investment for other tools and languages, we refactored FeatureIDE into an open source framework that encapsulates the common ideas of feature-oriented software development and that can be reused and extended beyond AHEAD. Among others, we implemented extensions for FeatureC++ and FeatureHouse, but in general, FeatureIDE is open for everybody to showcase new research results and make them usable to a wide audience of students, researchers, and practitioners.
Features express the variabilities and commonalities among programs in a software product line (SPL). A feature model defines the valid combinations of features, where each combination corresponds to a program in an SPL. SPLs and their feature models evolve over time. We classify the evolution of a feature model via modifications as refactorings, specializations, generalizations, or arbitrary edits. We present an algorithm to reason about feature model edits to help designers determine how the program membership of an SPL has changed. Our algorithm takes two feature models as input (before and after edit versions), where the set of features in both models are not necessarily the same, and it determines the change classification. Our algorithm efficiently determines classifications of edits to models that have hundreds or thousands of features.
Software program families 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. This paper focuses on AHEAD, a prominent design methodology and architectural model for feature-based program families. We present our first results on developing an Eclipse-based IDE that supports building program families following the AHEAD architecture model. Starting from current weaknesses and pitfalls in implementing program families we outline several challenges of the feature-based development process. Thereupon, we present our ideas to face these challenges and a resulting integrated tool chain based on Eclipse.
Superimposition is a composition technique that has been applied successfully in many areas of software development. Although superimposition is a general approach, it has been (re)invented and implemented individually for various kinds of software artifacts. We unify languages and tools that rely on superimposition by using the languageindependent model of feature structure trees (FSTs). On the basis of the FST model, we propose a general approach to the composition of software artifacts written in different languages, Furthermore, we offer a supporting framework and tool chain, called FEATUREHOUSE. We use attribute grammars to automate the integration of additional languages, in particular, we have integrated Java, C#, C, Haskell, JavaCC, and XML. Several case studies demonstrate the practicality and scalability of our approach and reveal insights in the properties a language must have in order to be ready for superimposition.
Feature models are used to specify members of a product-line. Despite years of progress, contemporary tools provide limited support for feature constraints and offer little or no support for debugging feature models. We integrate prior results to connect feature models, grammars, and propositional formulas. This connection allows arbitrary propositional constraints to be defined among features and enables off-the-shelf satisfiability solvers to debug feature models. We also show how our ideas can generalize recent results on the staged configuration of feature models.
Step-wise refinement is a powerful paradigm for developing a complex program from a simple program by adding features incrementally. We present the AHEAD (Algebraic Hierarchical Equations for Application Design) model that shows how step-wise refinement scales to synthesize multiple programs and multiple noncode representations. AHEAD shows that software can have an elegant, hierarchical mathematical structure that is expressible as nested sets of equations. We review a tool set that supports AHEAD. As a demonstration of its viability, we have bootstrapped AHEAD tools from equational specifications, refining Java and non-Java artifacts automatically; a task that was accomplished only by ad hoc means previously.
Feature oriented programming (FOP) is the study of feature modularity and its use in program synthesis. AHEAD is a theory of FOP that is based on a fundamental concept of generative programming that functions map programs. This enables the design of programs to be expressed compositionally as algebraic expressions, which are suited for automated analysis, manipulation, and program synthesis. This paper is a tutorial on FOP and AHEAD. We review AHEAD's theory and the tool set that implements it.
FeatureIDE is still under development and will be
updated frequently. We advice all users to enable the auto-update on
Eclipse start ("Window > Preferences... > Install/Update
> Automatic Updates").
We are currently preparing a major release that includes several new
features and will be released as open source. Until then, source code
can be requested by email (see below).
For a current step-by-step tutorial see the FeatureIDE cheat sheet in Eclipse (help menu).
Use the wizard to create a new Feature Project.
Open the model.m 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.
Support for editing is provided by the Feature Model Edit View which can be opened at "Window > Show View > Other...". This view calculates if the changed you made to the model.m file will cause addition or deletion of products. Additionally, an example product (added/deleted) is given if it exists.
Use the wizard to create new Equation files in the folder "equations". Features can be selected/deselected by a double click. An equation that is not allowed along to the feature model gets an error marker.
If there is more than one Equation file, only the one you have selected using right click and "Set as current equation" is build.
Use the wizard to create new Jak files and add your code.
Hint: Static methods cannot be refined in AHEAD.
Hint: AHEAD forces that only Java 1.4 constructs are used.
Hint: Use of state machines in Jak files is not recommend.
FeatureIDE is extended for "An Homogeneous Feature-based Approach" separating and linking different variability spaces: http://modalis.polytech.unice.fr/softwares/hfm. Have a look!
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
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, please
contact the development team via
.
For technical questions and bug reports contact
. You can also use our bug tracker.
FeatureIDE Project Members: