that produces the best observable solutions, it
remains interesting to compare the performance of
different configurations of MOGGA and other
optimization approaches. Performing such a
systematic follow-up comparison, similarly as done
by Mitchell and Mancoridis (Mitchell and
Mancoridis, 2007), would be important to learning
about the characteristics of MOGGA.
Secondly, it is worthwhile to equip the
remodularization approach with method-level
refactorings (e.g. move method, extract method,
etc.), so that drift at the granularity of methods can
also be detected. Nevertheless, such a refinement is
expected to have only a limited impact on the results
presented in this paper, according to an earlier work
of the authors showing that method-level
refactorings only have a minor effect on scattering
and tangling optimization (Olszak and Jørgensen,
2012).
Lastly, while the presented work was motivated
by influence of modularization of features on
evolvability of software, it remains possible to apply
the modularization compass approach to other
characteristics of software design. This can be done
as long as these ‘other characteristics’ are
quantifiable and can be shaped by means of source-
code restructuring. In practice, the presented
approach can be re-purposed by replacing the
metrics that are used to drive the MOGGA.
Guidelines for doing so can be found in the work of
Harman and Clark (Harman and Clark, 2004).
5 CONCLUSION
The ability to change is both a blessing and a burden
to software. On the one hand, it allows systems to
adapt to changing requirements imposed by users.
On the other hand, changing existing source code is
often difficult and the adoption of repetitive changes
tends to erode the original structure of source code.
The work presented in this paper focused on the
drift of feature-oriented modularity during the
evolution of software applications. The proposed
approach called modularization compass measures
this type of drift by comparing the original version
of an application to its automatically remodularized
counterpart. The remodularization process is
performed by using a multi-objective grouping
genetic algorithm that uses metrics of scattering,
tangling, cohesion and coupling as the objectives for
package structure optimization.
The approach was implemented in Java, and
applied to three open-source Java applications. The
obtained compass views showed the significant
differences between the evolution of absolute values
of scattering and tangling and the evolution of their
drifts. Based on the analysis of drifts over
subsequent releases, we were able to identify when
restructuring brings the largest improvement in
feature modularity, and to determine that the
restructuring effort for all three applications should
focus on separating features from one another to
reduce the significant drifts of their tangling.
Finally, the design and the evaluation of the
approach resulted in several promising directions for
future research and provided several preliminary
observations about the general nature of evolution of
software features.
REFERENCES
Recoder, http://recoder.sourceforge.net/
Hou, D. and Wang, Y. 2009. An empirical analysis of the
evolution of user-visible features in an integrated
development environment. In Proceedings of the 2009
Conference of the Center For Advanced Studies on
Collaborative Research, CASCON '09, 122-135.
Antón, A. I. and Potts, C. 2003. Functional Paleontology:
The Evolution of User-Visible System Services. IEEE
Trans. Softw. Eng. 29, 2, 151-166.
Hsi, I. and Potts, C. 2000. Studying the Evolution and
Enhancement of Software Features. ICSM’00: In
Proceedings of the International Conference on
Software Maintenance, pp. 143.
Fischer, M. and Gall, H. 2004. Visualizing feature
evolution of large-scale software based on problem
and modification report data: Research Articles. J.
Softw. Maint. Evol. 16, 6 (Nov. 2004), 385-403.
Greevy, O., Ducasse, S., Girba, T. 2005. Analyzing
feature traces to incorporate the semantics of change
in software evolution analysis. ICSM '05: Proceedings
of the International Conference on Software
Maintenance, pp. 347-356.
Turner, C. R., Fuggetta, A., Lavazza, L. and Wolf, A. L.
1999. A conceptual basis for feature engineering.
Journal of Systems and Software, vol. 49, no. 1, pp.
3-15.
Parnas, D. L. 1972. On the criteria to be used in
decomposing systems into modules. Communications
of the ACM, vol. 15, no. 12, pp. 1053-1058.
Rugaber, S., Stirewalt, K. and Wills, L. M. 1995. The
interleaving problem in program understanding.
WCRE’95: In Proceedings of 2nd Working
Conference on Reverse Engineering, pp. 166-175.
Letovsky, S. and Soloway, E. 1986. Delocalized plans and
program comprehension. IEEE Software, vol. 3, no. 3,
pp. 41-49.
Eaddy, M., Zimmermann, T., Sherwood, K. D., Garg, V.,
Murphy, G. C., Nagappan, N. and Aho, A. V. 2008.
ICSOFT-EA2014-9thInternationalConferenceonSoftwareEngineeringandApplications
58