Skip to main content
Log in

Understanding component co-evolution with a study on Linux

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Figure 1
Figure 2
Figure 3
Figure 4

Similar content being viewed by others

Notes

  1. In other research, this is called confidence. To avoid the confusion with the confidence used in statistics we use support ratio in this paper.

  2. 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

    Article  Google Scholar 

  • Arthur LJ (1988) Software evolution: the software maintenance challenge. Wiley, New York, New York, USA

    Google Scholar 

  • Briand LC, Wuest J (2002) Empirical studies of quality models in object-oriented systems. Adv Comput 59:97–166

    Google Scholar 

  • 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

    Article  Google Scholar 

  • Chidamber SR, Kemerer CF (1994) A metrics suite for object-oriented design. IEEE Trans Softw Eng 20(6):476–493

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Nolan B (1994) Data analysis, an introduction. Polity, Cambridge Massachusetts

    Google Scholar 

  • Offutt J, Harrold MJ, Kolte P (1993) A software metric system for module coupling. J Syst Softw 20(3):295–308

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Schach SR, Jin B, Wright DR, Heller GZ, Offutt J (2003) Quality impacts of clandestine common coupling. Softw Qual J 11:211–218

    Article  Google Scholar 

  • Selby RW, Basili VR (1991) Analyzing error-prone system structure. IEEE Trans Softw Eng 17(2):141–152

    Article  Google Scholar 

  • Stevens WP, Myers GZ, Constantine LL (1974) Structured design. IBM Syst J 13(2):115–139

    Article  Google Scholar 

  • Troy DA, Zweben SH (1981) Measuring the quality of structured design. J Syst Softw 2(2):113–120

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Liguo Yu.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-006-9000-x

Keywords

Navigation