Authors:
Andrzej Olszak
and
Bo Nørregaard Jørgensen
Affiliation:
University of Southern Denmark, Denmark
Keyword(s):
Software Evolution, Measurement, Modularity, Features.
Related
Ontology
Subjects/Areas/Topics:
Data Communication Networking
;
Databases and Information Systems Integration
;
e-Business
;
Enterprise Information Systems
;
Middleware Integration
;
Middleware Platforms
;
Middleware Support for Networking
;
Quality Assurance
;
Service-Oriented Software Engineering and Management
;
Software Engineering
;
Software Engineering Methods and Techniques
;
Software Metrics
;
Software Project Management
;
Software Quality Management
;
Software Testing and Maintenance
;
Technology Platforms
;
Telecommunications
Abstract:
Successful software systems have to adapt to the evolving needs of their users. However, adding and
extending functional features often becomes more difficult over time due to aggregated complexity and
eroded modularity. This erosion can be quantified by measuring scattering and tangling of feature
implementations in the source code, to track long-term regressions and to plan refactorings. This paper
argues that the traditional usage of only the absolute values of modularity metrics is, however, insufficient
and proposes to use their relative values instead. These relative values are referred to as the drift of feature-oriented
modularity, and are defined as the distance between the actual metric values for a given source
code and their values achievable for the source code’s ideally modularized counterpart. The proposed
approach, called modularization compass, computes the modularity drift by optimizing the feature-oriented
modularization of source code based on traceabilit
y links between features and source code. The optimized
modularizations are created automatically by transforming the groupings of classes into packages, which is
guided by a multi-objective grouping genetic algorithm. The proposed approach was evaluated by
application to long-term release histories of three open-source Java applications.
(More)