Frequently asked questions

1.  Basics

  1. What is Featureous?
  2. How does Featureous work?
  3. What are the requirements for Featureous?
  4. How do I get Featureous?
  5. How do I get in contact with the Featureous team?
  6. Can I use Featureous for free?

2.  Usage

  1. How do I recognize features of my application?
  2. How do I annotate features of my application?
  3. How do I trace features of my application?
  4. How do I open the main window of Featureous?
  5. How do I know what the bundled views of Featureous mean?
  6. How do I create my own custom views on top of Featureous?

3.  Troubleshooting

  1. When installing Featureous some module dependencies cannot be resolved.
  2. On MacOS/Linux the Feature-code characterization view does not work correctly.
  3. In NetBeans 6.9.1 the code coloring in the editor does not match correctly the boundaries of methods.

1.  Basics

1.1   What is Featureous?

Featureous is a tool for feature-centric analysis of Java software. The need for such a tool comes from the scattering and implicitness of implementations of user-observable behaviors of software (features) in the vast majority of object-oriented programs. Scattering and implicitness of features in code means that it becomes more difficult to find and understand only the relevant fragments of code when fixing a bug/modifying a feature/implementing new feature by reusing existing code.Featureous aims at improving this situation by providing a means of analyzing and modifying object-oriented programs in a feature-wise, rather than structure-wise, fashion.

1.2   How does Featureous work?

Featureous provides a number of visualizations (feature-centric views) that facilitate feature-centric analysis of programs. The metrics, graphs and charts encompassed by the views are being generated from so-called "feature traces". Feature traces can be generated for an arbitrary program by means of tracign its execution.
The feature-location mechanism use in Featureous employs dynamic analysis to discover the traceability links between features and their corresponding classes, objects and methods. After a programmer recovers a list of a program’s features from its documentation, or its graphical interface, she has to annotate each feature's "entry points" a program's source code. Feature entry points are the methods through which a program’s control flow enters implementations of a feature. Annotated program is then transparently instrumented with a tracing aspect when a programmer executes "Trace project" action provided by Featureous. After a user triggers features in the interface of an instrumented program, the information is saved in form of feature-traces, which serve as an input to further analysis.

1.3   What are the requirements for Featureous?

Featureous is verified to be compatible with the following versions of the NetBeans Platform: 6.9.1, 7.0Beta.

1.4   How do I get Featureous?

Follow the instructions on the Download page.

1.5   How do I get in contact with the Featureous team?

Please consult the Contact page.

1.5   Can I use Featureous for free?

Yes, you can. However, we would greatly appreciate if in return you filled in the feedback questionnaire included with the tool.

2.  Usage

2.1   How do I recognize features of my application?

The set of features of a program depends how you want to look at the functionality of a program. The way we used to do that in some papers was to have features like (assuming that we are dealing with emulator software): "emulator startup", "exit emulator", "open game", "close game", "setup controls", "soft reset", "hard reset", "choose region", "choose tv type", "show/hide fps", etc. Depending on the granularity you need, you can group some of the features together, e.g. "open game" + "close game" together could become "game management". More details on the methodology behind this can be found here: http://dx.doi.org/10.1016/j.scico.2010.10.007.

2.2   How do I annotate features of my application?

A good heuristic for starting to place the feature entry point annotations is to find the action listeners that get invoked when you activate a feature of your program by click a button somewhere in the main menu or press a key on keyboard. When this is not enough, i.e. if some features get triggered somewhere else than GUI (e.g. some special emulation features like maybe "render fonts"), you would have to go deeper in the code to identify the right places.
When you have identified a feature-entry-point method, you need to annotate it with @FeatureEntryPoint annotation parameterized with string-based identifier of a corresponding feature. The JAR file that you can use to import the annotation from will get created for you in your project's directory the first time you run the "Trace project" action.
For a step-by-step tutorial on how to do all this you can visit the Demo section of this website.

2.3   How do I trace features of my application?

Assumming that you have already annotated all relevant feature entry points, all you need to do is to execute "Trace project" and interact with your program in order to trigger its features. Alternatively, you can also write feature-triggering JUnit test cases and use the "Test-trace project" action to execute your tests on an instrumented program.

2.4   How do I open the main window of Featureous?

In the main menu of the NetBeans IDE, go to [Window->Other->Show Featureous].

2.5   How do I know what the bundled views of Featureous mean?

You can consult the Features section of this webpage or read some of the papers in the Publication section.

2.6   How do I create my own custom views on top of Featureous?

What you need to do is to create a new Module Suite in NetBeans IDE. To the dependcies of this suite you'll need to add the cluster of JAR files (directory containing JAR files) that gets created by NetBeans when you install Featureous. The JAR files will be typically found somewhere in your user directory. After you have done this, you can start making your modules dependent on Featureous and using the provided API. A small demo on this can be found in the Demo section of this website.

3.  Troubleshooting

3.1   When installing Featureous some module dependencies cannot be resolved.

Please check if you are using a supported version of the NetBeans IDE.

3.2   On MacOS/Linux the Feature-code characterization view does not work correctly.

The problem is in the OpenGL JOGL/GLU binaries for your platform. This happens, because the view uses OpenGL to create a 3D diagram, which makes the view platform-dependent. We have included OpenGL binaries for Windows, MacOS and Linux but we have not tested all of them yet. If you can point us to binaries that work correctly for JOGL in your OS, we will gladly include them in Featureous.

3.3   In NetBeans 6.9.1 the code coloring in the editor does not match correctly the boundaries of methods.

There is a difference between how the correspondence between the text and the GUI is calculated in 6.9.1 and in 7.0 Beta2. Our goal is to stay compatible only with the latest release of the IDE (in this case 7.0).