Abstract
After a software system has been delivered, it inevitably has to change to remain useful. Evolutionary coupling measures the change dependencies between software components. Reference coupling measures the architecture dependencies between software components. In this paper, we present a method to correlate evolutionary coupling and reference coupling. We study the evolution of 597 consecutive versions of Linux and measure the evolutionary coupling and reference coupling among 12 kernel modules. We compare 12 pairs of evolutionary coupling data and reference coupling data. The results show that linear correlation exists between evolutionary coupling and reference coupling. We conclude that in Linux, the dependencies between software components induced via the system architecture have noticeable effects on kernel module co-evolution.
Similar content being viewed by others
Notes
In other research, this is called confidence. To avoid the confusion with the confidence used in statistics we use support ratio in this paper.
In this paper, we only consider the direct co-evolution of two components. We ignore the co-evolution of two components as the result of their common dependencies on a third component.
References
Arisholm E, Briand LC, Foyen A (2004) Dynamic coupling measurement for object-oriented software. IEEE Trans Softw Eng 30(8):491–506
Arthur LJ (1988) Software evolution: the software maintenance challenge. Wiley, New York, New York, USA
Briand LC, Wuest J (2002) Empirical studies of quality models in object-oriented systems. Adv Comput 59:97–166
Briand LC, Daly JW, Wust JK (1999) A unified framework for coupling measurement in object-oriented systems. IEEE Trans Softw Eng 25(1):91–121
Chidamber SR, Kemerer CF (1994) A metrics suite for object-oriented design. IEEE Trans Softw Eng 20(6):476–493
Gall H, Hajek K, Jazayeri M (1998) Detection of logical coupling based on product release history. Proceedings of the 14th International Conference on Software Maintenance, Bethesda, Maryland, USA, pp 190–198
Godfrey MW, Tu Q (2000) Evolution in open source software: a case study. Proceedings of International Conference on Software Maintenance, San Jose, California, pp 131–142
Graves TL, Karr AF, Marron JS, Siy H (2000) Predicting fault incidence using software change history. IEEE Trans Softw Eng 26(7):653–661
Hassan AE, Holt RC (2004) Predicting change propagation in software systems. Proceedings of the 20th International Conference on Software Maintenance, Chicago Illinois, USA, pp 284–293
Kafura D, Henry S (1981) Software quality metrics based on interconnectivity. J Syst Softw 2(2):121–131
Lehman MM (1980) Life cycles and laws of software evolution. Proceedings of IEEE (Special Issue on Software Engineering), pp 1060–1076
Myers GJ (1979) The art of software testing. Wiley, New York
Nolan B (1994) Data analysis, an introduction. Polity, Cambridge Massachusetts
Offutt J, Harrold MJ, Kolte P (1993) A software metric system for module coupling. J Syst Softw 20(3):295–308
Perry DE (1994) Dimensions of software evolution. Proceedings of International Conference on Software Maintenance, Sorrento, Italy, pp 296–303
Raymond ES (2001) The Cathedral & the Bazaar, 1st edn. O'Reilly
Schach SR, Jin B, Wright DR, Heller GZ, Offutt AJ (2002) Maintainability of the Linux kernel. IEE Proc, Softw 149:18–23
Schach SR, Jin B, Wright DR, Heller GZ, Offutt J (2003) Quality impacts of clandestine common coupling. Softw Qual J 11:211–218
Selby RW, Basili VR (1991) Analyzing error-prone system structure. IEEE Trans Softw Eng 17(2):141–152
Stevens WP, Myers GZ, Constantine LL (1974) Structured design. IBM Syst J 13(2):115–139
Troy DA, Zweben SH (1981) Measuring the quality of structured design. J Syst Softw 2(2):113–120
Weißgerber P, Klenze L, Burch M, Diehl S (2005) Exploring evolutionary coupling in eclipse. Eclipse technology exchange workshop, San Diego, California
Williams CC, Hollingsworth JK (2005) Automatic mining of source code repositories to improve bug finding techniques. IEEE Trans Softw Eng 31(6):466–480
Xing Z, Stroulia E (2004) Data-mining in support of detecting class co-evolution. Proceedings of 16th International Conference on Software Engineering and Knowledge Engineering, Banff, Alberta, Canada, 123–128
Xing Z, Stroulia E (2005) Analyzing the evolutionary history of the logical design of object-oriented software. IEEE Trans Softw Eng 31(10):850–868
Ying ATT, Ng R, Chu-Carroll MC, Murphy GC (2004) Predicting source code changes by mining change history. IEEE Trans Softw Eng 30(9):574–586
Yu L, Schach SR, Chen K, Offutt J (2004) Categorization of common coupling and its application to the maintainability of the Linux kernel. IEEE Trans Softw Eng 30(10):694–706
Zimmermann T, Diehl S, Zeller A (2003) How history justifies system architecture (or not). Proceedings of the 6th International Workshop on Principles of Software Evolution, Helsinki, Finland, pp 73–83
Zimmermann T, Weißgerber P, Diehl S, Zellers A (2004) Mining version histories to guide software changes. Proceedings of the 26th International Conference on Software Engineering, Scotland, UK, pp 563–572
Zimmermann T, Weißgerber P, Diehl S, Zellers A (2005) Mining version histories to guide software changes. IEEE Trans Softw Eng 31(6):429–445
Acknowledgments
The author would like to thank the editor and the anonymous reviewers for their valuable feedback on an earlier version of this paper.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Yu, L. Understanding component co-evolution with a study on Linux. Empir Software Eng 12, 123–141 (2007). https://doi.org/10.1007/s10664-006-9000-x
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-006-9000-x