Common coupling (sharing global variables across modules) is widely accepted as a measure of software quality and maintainability; a low level of common coupling is necessary (but not sufficient) to ensure maintainability. But when the global variables in question are large multi-field data structures, one must decide whether to consider such data structures as single units, or examine each of their fields individually. We explore this issue by re-analyzing a case study based on the Linux operating system. We determine the common coupling at the level of granularity of the component fields of large, complex data structures, rather than at the level of the data structures themselves, as in previous work. We claim that this is the appropriate level of analysis based on how such data structures are used in practice, and also that such a study is required due to concern that coarse-grained analysis leads to false coupling. We find that, for this case study, the granularity does not have a decisive effect on the results. In particular, our results for coupling based on individual fields are similar in spirit to the results reported previously (by others) based on using complete data structures. In both cases, the coupling indicates that the system kernel is vulnerable to modifications in peripheral modules of the system.
['Dror G. Feitelson', 'Tokunbo O. S. Adeshiyan', 'Daniel Balasubramanian', 'Yoav Etsion', 'Gabor Madl', 'Esteban P. Osses', 'Sameer Singh', 'Karlkim Suwanmongkol', 'Minhui Xie', 'Stephen R. Schach']
Fine-grain analysis of common coupling and its application to a Linux case study