Feature Commander

Feature Commander


Feature Commander is a prototype for a software product line IDE. Its aim is to support programmers of software product lines by improving the usability of the development tool. The basic concept of Feature Commander is to process the preprocessor-based feature-assignments in the code (e.g. #ifdef or #endif statements) and display this information in other visual representations. For each feature, the user can easily assign a color, which is used throughout all visualizations. When a Feature has no assigned color, it is displayed with a shade of gray. This shows the Feature exists, but it does not get the users attention. There are three views: the Code View, the Explorer View and the Feature Model View. Each view helps the user in finding feature-based files or code fragments or getting a better understanding of the code.


File Structure View

Feature View

Code View
Here, files can be displayed. Features are marked in the background of the code and in two sidebars. In the background, only one feature at a time is shown. For more features in one line of code, the sidebars provide a good means to see the hierarchy of features in the code. Furthermore, the user can adjust the opacity of the background colors, which enables him to balance his need for code readability and feature recognition.

Explorer View
In this view, the user can navigate the file structure and open files. An important addition is the display of the percentage of every feature in the background of each node. This makes it much easier to find features and estimate their importance.

Feature Model View
This view shows the structure of the Feature Model. It can be used to automatically assign or delete colors from multiple features or simply for assigning colors through drag & drop.

Assigning Colors to Features
Colors play an important role in all visualizations, so their assignment is kept as simple as possible. It can be done by simply dragging & dropping from the Colors dock widget to the desired feature. The colors can be dropped to features in the feature model, the background of the code, the two sidebars next to the code and the features view in the explorer.

Demo Video

To get a quick impression on how to use FeatureCommander, we shot a short video.
Demo Video (wmv)


For analyzing #ifdef statements in the code, we need to create an annotation file. This is why we have currently one project that the Feature Commander can display.
Xenomai, a real time extension to Linux. You can download the version we used for our project: xenomai-2.5.1


In an experimental setting, we evaluated how developers worked with FeatureCommander and how colors help. We recruited 14 subjects and split them into two groups with equivalent programming experience (measured by a questionnaire administered two weeks before the experiment). We designed 10 tasks, which we applied in two phases of 5 tasks each. To evaluate the influence of colors, we created a version of the FeatureCommander without colors. In the first phase of the experiment, 7 subjects worked with the color version, and the other 7 subjects without colors. In the second phase, we switched the versions.
To measure program comprehension, we designed tasks that subjects should solve. An overview of all tasks, including solutions, can be found here.
Programming Experience
To measure programming experience, we applied a carefully designed questionnaire, available here.
We tailored two version of FeatureCommander to measure solely the effect of background colors, not other facets of our tool. Both versions are available here.
We evaluated correctness of solutions and response times, available here. Furthermore, we analyzed the opinion of subjects regarding their motivation, difficulty, and estimated performance with the other version of the tool, available here. Results of statistical tests can be found here.


You can download the Feature Commander and all example projects in one file (zip): Download Feature Commander & Examples. Then, you can start with step 3 of the installation instructions.
You can also download the Feature Commander without examples (zip): Download Feature Commander. See below for installation instructions.

Installation Instructions

  1. Download the Feature Commander and extract the zip-Archive
  2. Download the example project and extract it in the directory, in which the executable of the Feature Commander is (FeatureCommander.exe)
  3. Start the executable (FeatureCommander.exe)
  4. Select the folder of the example project and klick 'Ok'
Depending on how fast your system is, it may take a minute until the Feature Commander has loaded the project.


Developer of Feature Commander: Maria Papendieck (maria.papendieck[at]st.ovgu.de)
Responsible for maintaining the site: Janet Siegmund (Feigenspan)