Abstract
To remain useful for their users, software systems need to continuously enhance and extend their functionality. Thereby, the individual units of software functionality, also known as features, become the units of source code comprehension, modification and work division. To support these activities, it is essential that features are properly modularized within the structural organization of software systems.
Nevertheless, in many object-oriented applications, features are not represented explicitly. Consequently, features typically end up scattered and tangled over multiple source code units, such as architectural layers, packages and classes. This lack of modularization is known to make application features difficult to locate, to comprehend and to modify in isolation from one another.
To overcome these problems, this thesis proposes Featureous, a novel approach to location, analysis and modularization of features in Java applications. Featureous addresses these concerns in four steps. Firstly, a dynamic method based on so-called feature-entry points is used to establish traceability links between features and their corresponding source code units. Secondly, this traceability forms a basis for a feature-oriented analysis method that visualizes and measures features. Thirdly, scattering and tangling of features can be physically reduced using feature-oriented remodularization method that is based on multi-objective optimization of Java package structures. Finally, automated detection of so-called feature seed methods is proposed, to enable large-scale feature-oriented quality assessment.
Featureous is implemented as a plugin to the NetBeans IDE. This implementation was used to evaluate the constituent methods of Featureous by applying them to several medium and large open-source Java systems. The gathered quantitative and qualitative results suggest that Featureous succeeds at efficiently locating features in unfamiliar codebases, at aiding feature-oriented comprehension and modification, and at improving modularization of features using Java packages.
Nevertheless, in many object-oriented applications, features are not represented explicitly. Consequently, features typically end up scattered and tangled over multiple source code units, such as architectural layers, packages and classes. This lack of modularization is known to make application features difficult to locate, to comprehend and to modify in isolation from one another.
To overcome these problems, this thesis proposes Featureous, a novel approach to location, analysis and modularization of features in Java applications. Featureous addresses these concerns in four steps. Firstly, a dynamic method based on so-called feature-entry points is used to establish traceability links between features and their corresponding source code units. Secondly, this traceability forms a basis for a feature-oriented analysis method that visualizes and measures features. Thirdly, scattering and tangling of features can be physically reduced using feature-oriented remodularization method that is based on multi-objective optimization of Java package structures. Finally, automated detection of so-called feature seed methods is proposed, to enable large-scale feature-oriented quality assessment.
Featureous is implemented as a plugin to the NetBeans IDE. This implementation was used to evaluate the constituent methods of Featureous by applying them to several medium and large open-source Java systems. The gathered quantitative and qualitative results suggest that Featureous succeeds at efficiently locating features in unfamiliar codebases, at aiding feature-oriented comprehension and modification, and at improving modularization of features using Java packages.
Original language | English |
---|---|
Supervisors/Advisors |
|
Publisher | |
Publication status | Published - 4. Sept 2012 |