Features of Featureous
At a glanceFeatureous enhances the NetBeans IDE for Java with feature-oriented perspective on source code. | |
Tracing featuresFeatureous 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 explorerFeature 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 inspectorFeature 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 workbenchFeatureous 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 editorFeature-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 metricsFeatureous 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 consoleIn 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 viewFeature-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 characterizationFeature 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 graphFeature-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 gridFeature-code correlation grid presents the same information as the feature-code correlation graph, but in the form of a matrix. | |
Feature call graph viewFeature 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 APIIt 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. |