Abstract
With time software systems easily become obsolete if not updated to reflect the ever-changing needs of their users. This update process is far from trivial as each feature is not necessarily captured by a single module, but rather scattered across a number of different modules. The situation is further aggravated by the fact that a module can encompass a number of different features. Our goal is to measure and evaluate how easy it is to trace back and update a given piece of software based on its modularity. Modularity is known as the degree to which a system’s components may be separated and recombined. The approach that we propose is based on the idea of using relative, as opposed to absolute, modularity metrics that measure 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 approach, termed modularization compass, computes the modularity drift by optimizing the feature-oriented modularization of source code based on traceability 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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Kemerer, C.F.: Software complexity and software maintenance: a survey of empirical research. Ann. Softw. Eng. 1, 1–22 (1995)
Reid Turner, C., Fuggetta, A., Lavazza, L., Wolf, A.L.: A conceptual basis for feature engineering. J. Syst. Softw. 49, 3–15 (1999)
Harrison, W., Box, P.: N degrees of separation: multi-dimensional separation of concerns. In: Proceedings of the 21st International Conference on Software Engineering (CSE 1999), pp. 10.00 (1999)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15, 1053–1058 (1972)
Letovsky, S.S.: Delocalized plans and program comprehension. Software, IEEE 3, 41–49 (1986)
Eaddy, M., Zimmermann, T., Sherwood, K.D., Garg, V., Murphy, G.C., Nagappan, N., Aho, A.V.: Do crosscutting concerns cause defects? IEEE Trans. Software Eng. 34, 497–515 (2008)
Rugaber, S., Stirewalt, K., Wills, L.M.: The interleaving problem in program understanding. In: Proceedings of 2nd Working Conference on Reverse Engineering, pp. 166–175. IEEE (1995)
Benestad, H.C., Anda, B., Arisholm, E.: Understanding cost drivers of software evolution: a quantitative and qualitative investigation of change effort in two evolving software systems. Empirical Softw. Eng. 15, 166–203 (2010)
Hsi, I., Potts, C.: Studying the evolution and enhancement of software features. In: Proceedings of International Conference on Software Maintenance, pp. 143–151. IEEE, (2000)
Fischer, M., Gall, H.: Visualizing feature evolution of large-scale software based on problem and modification report data. J. Softw. Maintenance Evol. Res. Pract. 16, 385–403 (2004)
Hou, D., Wang, Y.: 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, pp. 122–135. IBM Corp. (2009)
Greevy, O., Ducasse, S., Girba, T.: Analyzing feature traces to incorporate the semantics of change in software evolution analysis. In: Proceedings of the 21st IEEE International Conference on Software Maintenance, ICSM 2005, pp. 347–356. IEEE (2005)
Olszak, A., Jørgensen, B.N.: Remodularizing Java programs for improved locality of feature implementations in source code. Sci. Comput. Program. 77, 131–151 (2012)
van den Berg, K., Conejero, J.M., Hernández, J.: Analysis of crosscutting across software development phases based on traceability. In: Proceedings of the 2006 International Workshop on Early Aspects at ICSE, pp. 43–50. ACM (2006)
Brcina, R., Riebisch, M.: Architecting for evolvability by means of traceability and features. In: 23rd IEEE/ACM International Conference on Automated Software Engineering-Workshops, ASE Workshops 2008, pp. 72–81. IEEE (2008)
Wilde, N., Gomez, J.A., Gust, T., Strasburg, D.: Locating user functionality in old code. In: Proceedings Conference on Software Maintenance 1992, pp. 200–205. IEEE (1992)
Lehman, M.M.: Programs, life cycles, and laws of software evolution. Proc. IEEE 68, 1060–1076 (1980)
Murphy, G.C., Lai, A., Walker, R.J., Robillard, M.P.: Separating features in source code: an exploratory study. In: Proceedings of the 23rd International Conference on Software Engineering, pp. 275–284. IEEE Computer Society (2001)
Briand, L.C., Daly, J.W., Wüst, J.: A unified framework for cohesion measurement in object-oriented systems. Empirical Softw. Eng. 3, 65–117 (1998)
Briand, L.C., Daly, J.W., Wust, J.K.: A unified framework for coupling measurement in object-oriented systems. IEEE Trans. Software Eng. 25, 91–121 (1999)
Harman, M., Tratt, L.: Pareto optimal search based refactoring at the design level. In: Proceedings of the 9th Annual Conference on Genetic and Evolutionary Computation, pp. 1106–1113. ACM (2007)
Seng, O., Bauer, M., Biehl, M., Pache, G.: Search-based improvement of subsystem decompositions. In: Proceedings of the 2005 Conference on Genetic and Evolutionary Computation, pp. 1045–1051. ACM (2005)
Tzerpos, V., Holt, R.C.: ACDC: an algorithm for comprehension-driven clustering. In: 2013 20th Working Conference on Reverse Engineering (WCRE), pp. 258–258. IEEE Computer Society (2000)
Rosenman, M., Gero, J.: Reducing the Pareto optimal set in multicriteria optimization (with applications to Pareto optimal dynamic programming). Engineering Optimization 8, 189–206 (1985)
Chaudhari, P., Dharaskar, R., Thakare, V.: Computing the most significant solution from Pareto front obtained in multi-objective evolutionary. Int. J. Adv. Comput. Sci. Appl. (IJACSA) 1, 63–68 (2010)
Olszak, A., Jørgensen, B.N.: Featureous: an integrated environment for feature-centric analysis and modification of object-oriented software. Int. J. Comput. Sci. Inf. Syst. 6, 58–75 (2011)
Anton, A.I., Potts, C.: Functional paleontology: the evolution of user-visible system services. IEEE Trans. Software Eng. 29, 151–166 (2003)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Olszak, A., Lazarova-Molnar, S., Jørgensen, B.N. (2015). Evolution of Feature-Oriented Software: How to Stay on Course and Avoid the Cliffs of Modularity Drift. In: Holzinger, A., Cardoso, J., Cordeiro, J., Libourel, T., Maciaszek, L., van Sinderen, M. (eds) Software Technologies. ICSOFT 2014. Communications in Computer and Information Science, vol 555. Springer, Cham. https://doi.org/10.1007/978-3-319-25579-8_11
Download citation
DOI: https://doi.org/10.1007/978-3-319-25579-8_11
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-25578-1
Online ISBN: 978-3-319-25579-8
eBook Packages: Computer ScienceComputer Science (R0)