Features of Featureous

At a glance

Featureous enhances the NetBeans IDE for Java with feature-oriented perspective on source code.

Tracing features

Featureous makes it possible to easily establish traceability links between user-visible features and individual units of source code like packages, classes and methods. This is done by tracing execution of a program's code, as a user, or a test suite, is triggering its features. Only a single non-invasive annotation per feature is needed to get started!

Feature explorer

Feature explorer is the main window of Featureous. It displays the traces files (representing features) collected for a given program. From this window, a number of other views can be opened.

Feature inspector

Feature inspector displays how individual features of a program are implemented. Opening the class and method nodes automatically opens their corresponding source-code in the NetBeans editor view.

Remodularization workbench

Featureous uses a multi-objective grouping genetic algorithm to automatically optimize package structures of programs according to multiple criteria. The desired criteria can be flexibly choosen among 14 available objectives (e.g. maximizing cohesion, minimizing coupling, reducing scattering and tangling of features, avoiding circular dependencies among packages, etc.). After a new packages structure is established be the algorithm, a programmer can review it in a UML-like diagram and manually adjust the structure by dragging classes around. The final structure can be automatically created in source code.

Feature-aware source code editor

Feature-aware source code editor extends the default source code editor of the NetBeans IDE with a sidebar visualizing participation of source code in implementing features. Thanks to this view, it becomes clear whether a method or a class is relevant to a feature of interest or if modifying it can have unexpected consequences on other features. Furthermore, the editor can be made to automatically fold code that is not relevant to a features being currently investigated.

Evolution metrics

Featureous provides a parallel-coordinates visualization to enabled measuring a number of feature-oriented quality properites across mulitple revisions of source code. This view is a vehicle for a rapid assessment of erosion of structural complexity over time.

BeanShell console

In the spirit of 'malleable tools', Featureous exposes its core data objects to a BeanShell-based console at runtime. This makes it easy to flexibly prototype and execute code for accessing, modifying and exporting the collected traceability data. Example code snippets are provided.

Feature-code 3D characterization view

Feature-code 3D characterization serves as a coarse-grained summary of the complexity of relations between features and source code. Depending on the chosen rotation angle of the 3D chart, the view gives either a summary of the distribution of feature implementations over computational units (i.e. scattering), or a characterization of computational units with respect to their participation in features (i.e. tangling).

Feature relations characterization

Feature relations characterization shows dynamic dependencies among features. Such dependencies occur whenever there occurs a object-wise producer-consumer relation between features. Nodes are made to represent features and edges the dependencies.

Feature-code correlation graph

Feature-code correlation graph enables a detailed investigation of the correspondence between units of source code and features. This dynamically re-layouts on a currently selected node to allow for switching between the computational unit and feature perspectives.

Feature-code correlation grid

Feature-code correlation grid presents the same information as the feature-code correlation graph, but in the form of a matrix.

Feature call graph view

Feature call graph shows how methods in a features call one another. The displayed control-flow path automatically expends and re-layouts to focus on the method being shown in the source code editor.

Plugin API

It is possible to easily exploit the infrastructure that Featureous provides by means of plugins. New plugins can be added without modifying a single line of code in the rest of the tool.