Abstract
The implementation of a functional requirement is often distributed across several modules posing difficulties to software maintenance. In this paper, we attempt to quantify the extent of feature scattering and study its evolution with the passage of software versions. To this end, we trace the classes and methods involved in the implementation of a feature, apply formal approaches for studying variations across versions, measure whether feature implementation is uniformly distributed and visualize the reuse among features. Moreover, we investigate the impact of refactoring application on feature scattering in order to assess the circumstances under which a refactoring might improve the distribution of methods implementing a feature. The proposed techniques are exemplified for various features on several versions of four open-source projects.
Similar content being viewed by others
References
Antoniol, G., Canfora, G., Casazza, G., De Lucia, A., & Merlo, E. (2002). Recovering traceability links between code and documentation. IEEE Transactions on Software Engineering, 28(10), 970–983.
Barabasi, A. L., Albert, R., Jeong, H., & Bianconi, G. (2000). Power-law distribution of the World Wide Web. Science, 287, 2115.
Bartholomew, D.J., Steele, F., Moustaki, I., and Galbraith, J. (2008). The Analysis and Interpretation of Multivariate Data for Social Scientists, Chapman and Hall/CRC.
Biggerstaff, T. J., Mitbander, B. G., & Webster, D. E. (1994). Program understanding and the concept assignment problem. Communications of the ACM, 37(5), 72–82.
Chen, C. C., Hardle, W., Unwin, A., Cox, M., & Cox, T. F. (2008). Handbook of data visualization. Heidelberg: Springer Berlin Heidelberg.
Choi, S–. S., Cha, S.-H., & Tappert, C. C. (2010). A survey of Binary similarity and distance measures. Journal of Systemics, Cybernetics and Informatics, 8(1), 43–48.
Conejero, J. M., Figueiredo, E., Garcia, A., Hernández, J., & Jurado, E. (2009). Early crosscutting metrics as predictors of software instability. Objects, Components, Models and Patterns. Lecture Notes in Business Information Processing, 33(3), 136–156.
Dit, B., Revelle, M., Gethers, M., & Poshyvanyk, D. (2011). Feature Location in Source Code: A Taxonomy and Survey. Journal of Software Maintenance and Evolution: Research and Practice, published online: 28 November 2011, Early Access.
Eaddy, M., Aho, A. V., & Murphy, G.C. (2007). Identifying, assigning, and quantifying crosscutting concerns. In Proceedings of the Workshop Assessment of Contemporary Modularization Techniques.
Eaddy, M., Zimmermann, T., Sherwood, K. D., Garg, V., Murphy, G. C., Nagappan, N., et al. (2008). Do crosscutting concerns cause defects? IEEE Transactions on Software Engineering, 34(4), 497–515.
Eisenbarth, T., Koschke, R., & Simon, D. (2003). Locating features in source code. IEEE Transactions on Software Engineering, 29(3), 210–224.
Filho, F.C., Cacho, N., Figueiredo, E., Maranhão, R., Garcia, A., & Rubira, C. M. F. (2006). Exceptions and aspects: The devil is in the details. In Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, 152–162.
Fisher, M., & Gall, H. (2003). MDS-Views: Visualizing problem report data of large scale software using multidimensional scaling. In Proceedingsof the Large-scale Industrial Software Evolution Workshop (ICSM 2013), 110–122.
Fowler, M., Beck, K., Brant, J., Opdyke, W., & Roberts, D. (1999). Refactoring improving the design of existing code. MA: Addison-Wesley.
Ganter, B., & Wille, R. (1996). Formal concept analysis. Berlin: Springer-Verlag.
Garcia, A., Sant’Anna, C., Figueiredo, E., Kulesza, U., Lucena, C., & von Staa, A. (2005). Modularizing design patterns with aspects: A quantitative study. In Proceedings of the 4th International Conference on Aspect-Oriented Software Development, 3–14.
Gibbs, C., Robin Liu, C., & Coady, Y. (2005). Sustainable system infrastructure and big band evolution: Can aspects keep pace?. In Proceedings of the 19th European Conference on Object-Oriented Programming, 241–261.
Gini, C. (1921). Measurement of inequality of incomes. The Economic Journal, 31(121), 124–126.
Goeminne, M., & Mens, T. (2011). Evidence for the pareto principle in open source software activity. In the Joint Porceedings of the 1st International workshop on Model Driven Software Maintenance and 5th International Workshop on Software Quality and Maintainability, 74–82.
Gotel, O. C. Z., & Finkelstein, C. W. (1994). An Analysis of the requirements traceability problem. In Proceedings of the 1st International Conference on Requirements Engineering, 94–101.
Greenwood P., Bartolomei, T., Figueiredo, E., Dosea, M., Garcia, A., Cacho, N., Sant’Anna, C., Soares, S., Borba, P., Kulesza, U., & Rashid, A. (2007). On the impact of aspectual decompositions on design stability: An empirical study. In Proceedings of the 21st European Conference on Object-Oriented Programming, 176–200.
Greevy, O., Ducasse, S., & Girba, T. (2006). Analyzing software evolution through feature views. Journal of Software Maintenance and Evolution: Research and Practice, 18(6), 425–456.
JProfiler: An all-purpose Java profiling suite. http://www.ej-technologies.com/products/jprofiler/overview.html, October 2011.
JDeodorant, http://www.jdeodorant.com, October 2011.
jEdit—programmer’s text editor, http://www.jedit.org, August 2012.
JFreeChart, http://www.jfree.org/jfreechart, October 2011.
Jmol: An open-source Java viewer for chemical structures in 3D. http://www.jmol.org, August 2012.
Koschke, R., & Quante, J. (2005). On dynamic feature location. In Proceedings of the 20th IEEE/ACM International Conference on Automated software engineering, 86–95.
Kothari, J., Denton, T., Mancoridis, S., & Shokoufandeh, A. (2006). On computing the canonical features of software systems. In Proceedings of the 13th Working Conference on Reverse Engineering, 93–102.
Kuhn, A., Loretan, P., Nierstrasz, O. (2008). Consistent Layout for Thematic Software Maps. In Proceedings of the 15th Working Conference on Reverse Engineering, 209–218.
Liu, D., Marcus, A., Poshyvanyk, D., & Rajlich, V. (2007). Feature location via information retrieval based filtering of a single scenario execution trace. In Proceedings of the 22nd International Conference on Automated Software Engineering, 234–243.
Lorenz, M. O. (1905). Methods of measuring the concentration of wealth. Publications of the American Statistical Association, 9(70), 209–219.
Marcus, A., & Maletic, J. I. (2003). Recovering documentation-to-source-code traceability links using latent semantic indexing. In Proceedings of the 25th International Conference on Software Engineering, 125–136.
Marcus, A., Sergeyev, A., Rajlich, V., & Maletic, J. I. (2004). An information retrieval approach to concept location in source code. In Proceedings of the 11th Working Conference on Reverse Engineering, 214–223.
Naseem, R., Maqbool, O., & Muhammad, D. (2011). Improved similarity measures for software clustering. In Proceedings of the 15th European Conference on Software Maintenance and Reengineering, 45–54.
Poshyvanyk, D., & Marcus, A. (2007). Combining formal concept analysis with information retrieval for concept location in source code. In Proceedings of the 15th International Conference on Program Comprehension, 37–48.
Poshyvanyk, D., Guéhéneuc, Y.-G., Marcus, A., Antoniol, G., & Rajlich, V. (2007). Feature location using probabilistic ranking of methods based on execution scenarios and information retrieval. IEEE Transactions on Software Engineering, 33(6), 420–432.
Revell, M., Gethers, M., & Poshyvanyk, D. (2011). Using structural and textual information to capture feature coupling in object-oriented software. Empirical Software Engineering, 16(6), 773–811.
Riel, A. J. (1996). Object-oriented design heuristics. MA: Addison-Wesley.
Robillard, M. P., & Murphy, G. C. (2007). Representing Concerns in Source Code. ACM Transactions on Software Engineering and Methodology, 16(1), 1–38.
Sharp, A. (1997). Smalltalk by Example: The developers Guide. Mcgraw-Hill.
Shepherd, D., Fry, Z. P., Hill, E., Pollock, L., & Vijay-Shanker, K. (2007). Using natural language program analysis to locate and understand action-oriented concerns, In Proceedings of the 6th International Conference on Aspect-Oriented software development, 212–224.
Simpson, G. G. (1960). Notes on the measurement of faunal resemblance. American Journal of Science, 258(A), 300–311.
Singh, K. (2007). Quantitative social research methods. California: Sage Publications.
Trifu, M. (2010). Tool-supported identification of functional concerns in object-oriented code. PhD thesis, Karlsruhe Institute of Technology.
Vasa, R., Lumpe, M., Branch, P., & Nierstrasz, O. (2009). Comparative Analysis of evolving software systems using the Gini coefficient. In Proceedings of the 25th International Conference on Software Maintenance, 179–188.
Wilde, N., & Scully, M. C. (1995). Software reconnaissance: Mapping program features to code. Software Maintenance: Research and Practice, 7, 49–62.
Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., & Wesslén, A. (2000). Experimentation in software engineering. An introduction. The Netherlands: Kluwer Academic Publishers.
Wong, W. E., Gokhale, S. S., Horgan, J. R., & Trivedi, K. S. (1999). Locating program features using execution slices. In Proceedings of the IEEE Symposium on Application-Specific Systems and Software Engineering & Technology, 194–203.
Wong, W. E., Gokhale, S. S., & Horgan, J. R. (2000). Quantifying the closeness between program components and features. Journal of Systems and Software—Special Issue on Software Maintenance, 54(2), 87–98.
Zhao,W., Zhang, L.,Liu, Y., Luo, J., & Sun, J. (2003). Understanding How the Requirements Are Implemented in Source Code. In Proceedings of the 10th Asia-Pacific Software Engineering Conference, 68–77.
Zhao, W., Zhang, L.,Liu, Y., Sun, J., & Yang, F.(2004). SNIAFL: Towards a Static Non-Interactive Approach to Feature Location. In Proceedings of the 26th International Conference on Software Engineering, 293–303.
Zou, X., Settimi, R., & Cleland-Huang, J. (2009). Improving automated requirements trace retrieval: A study of term-based enhancement methods. Empirical Software Engineering, 15, 119–146.
Acknowledgments
This research has been co-financed by the European Union (European Social Fund—ESF) and Greek national funds through the Operational Program “Education and Lifelong Learning” of the National Strategic Reference Framework (NSRF)—Research Funding Program: Thalis—Athens University of Economics and Business—SOFTWARE ENGINEERING RESEARCH PLATFORM.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Chaikalis, T., Chatzigeorgiou, A. & Examiliotou, G. Investigating the effect of evolution and refactorings on feature scattering. Software Qual J 23, 79–105 (2015). https://doi.org/10.1007/s11219-013-9204-4
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11219-013-9204-4