This Article 
 Bibliographic References 
 Add to: 
Categorization of Common Coupling and Its Application to the Maintainability of the Linux Kernel
October 2004 (vol. 30 no. 10)
pp. 694-706
Stephen R. Schach, IEEE Computer Society
Jeff Offutt, IEEE Computer Society
Data coupling between modules, especially common coupling, has long been considered a source of concern in software design, but the issue is somewhat more complicated for products that are comprised of kernel modules together with optional nonkernel modules. This paper presents a refined categorization of common coupling based on definitions and uses between kernel and nonkernel modules and applies the categorization to a case study. Common coupling is usually avoided when possible because of the potential for introducing risky dependencies among software modules. The relative risk of these dependencies is strongly related to the specific definition-use relationships. In a previous paper, we presented results from a longitudinal analysis of multiple versions of the open-source operating system Linux. This paper applies the new common coupling categorization to version 2.4.20 of Linux, counting the number of instances of common coupling between each of the 26 kernel modules and all the other nonkernel modules. We also categorize each coupling in terms of the definition-use relationships. Results show that the Linux kernel contains a large number of common couplings of all types, raising a concern about the long-term maintainability of Linux.

[1] P. Brinch Hansen, “The Nucleus of a Multiprogramming System,” Comm. ACM, vol. 4, no. 4, pp. 238-241, 1970.
[2] T. Härden, “New Approaches to Object Processing in Engineering Databases,” Proc. Int'l Workshop Object-Oriented Database Systems, p. 217, Sept. 1986.
[3] “Xbox System Software Overview,” , 2003.
[4] L.C. Briand, J. Daly, V. Porter, and J. Wüst, “A Comprehensive Empirical Validation of Design Measures for Object-Oriented Systems,” Proc. Fifth Int'l Software Metrics Symp., pp. 246-257, Nov. 1998.
[5] D.A. Troy and S.H. Zweben, “Measuring the Quality of Structured Designs,” J. Systems and Software, vol. 2, pp. 112-120, 1981.
[6] S.R. Schach, B. Jin, D.R. Wright, G.Z. Heller, and J. Offutt, “Quality Impacts of Clandestine Common Coupling,” Software Quality J., vol. 11, pp. 211-218, 2003.
[7] S.R. Schach, B. Jin, D.R. Wright, G.Z. Heller, and A.J. Offutt, “Maintainability of the Linux Kernel,” IEE Proc.-Software, vol. 149, no. 2, pp. 18-23, 2002.
[8] S.R. Schach and J. Offutt, “On the Nonmaintainability of Open-Source Software,” Proc. Second Workshop Open Source Software Eng., pp. 47-49, May 2002.
[9] J. Offutt, “Open-Source Software: More or Less Secure and Reliable?” Proc. Int'l Symp. Software Reliability Eng. (ISSRE '02), Nov. 2002.
[10] D. Cooke, J. Urban, and S. Hamilton, “Unix and Beyond: An Interview with Ken Thompson,” Computer, vol. 32, no. 5, pp. 58-64, 1999.
[11] W.P. Stevens, G.J. Myers, and L.L. Constantine, “Structured Design,” IBM Systems J., vol. 13, no. 2, pp. 115-139, 1974.
[12] M. Page-Jones, The Practical Guide to Structured Systems Design. New York: Yourdon Press, 1980.
[13] J. Offutt, M.J. Harrold, and P. Kolte, “A Software Metric System for Module Coupling,” J. Systems and Software, vol. 20, no. 3, pp. 295-308, 1993.
[14] S.R. Schach, Object-Oriented and Classical Software Engineering, sixth ed. McGraw-Hill, 2005.
[15] P. Clements, R. Kazman, and M. Klein, Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley, 2002.
[16] S. Wang, S.R. Schach, and G.Z. Heller, “A Case Study in Repeated Maintenance,” J. Software Maintenance and Evolution: Research and Practice, vol. 13, no. 2 pp. 127-141, 2001.
[17] F.E. Allen and J. Cocke, “A Program Data Flow Analysis Procedure,” Comm. ACM, vol. 19, no. 3, pp. 137-146, 1976.

Index Terms:
Modularity, dependencies, common coupling, definition-use analysis, kernel-based software, open-source software, Linux.
Liguo Yu, Stephen R. Schach, Kai Chen, Jeff Offutt, "Categorization of Common Coupling and Its Application to the Maintainability of the Linux Kernel," IEEE Transactions on Software Engineering, vol. 30, no. 10, pp. 694-706, Oct. 2004, doi:10.1109/TSE.2004.58
Usage of this product signifies your acceptance of the Terms of Use.