Can We Avoid High Coupling?

  • Craig Taube-Schock
  • Robert J. Walker
  • Ian H. Witten
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6813)

Abstract

It is considered good software design practice to organize source code into modules and to favour within-module connections (cohesion) over between-module connections (coupling), leading to the oft-repeated maxim “low coupling/high cohesion”. Prior research into network theory and its application to software systems has found evidence that many important properties in real software systems exhibit approximately scale-free structure, including coupling; researchers have claimed that such scale-free structures are ubiquitous. This implies that high coupling must be unavoidable, statistically speaking, apparently contradicting standard ideas about software structure. We present a model that leads to the simple predictions that approximately scale-free structures ought to arise both for between-module connectivity and overall connectivity, and not as the result of poor design or optimization shortcuts. These predictions are borne out by our large-scale empirical study. Hence we conclude that high coupling is not avoidable—and that this is in fact quite reasonable.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Albert, R., Jeong, H., Barabási, A.-L.: Diameter of the World Wide Web. Nature 401, 130–131 (1999)CrossRefGoogle Scholar
  2. 2.
    Alexander, C.: Notes on the Synthesis of Form. Harvard University Press, Cambridge (1964)Google Scholar
  3. 3.
    Barabási, A.-L., Albert, R.: Emergence of scaling in random networks. Science 286(5439), 509–512 (1999)CrossRefMATHMathSciNetGoogle Scholar
  4. 4.
    Baxter, G., Frean, M., Noble, J., Rickerby, M., Smith, H., Visser, M., Melton, H., Tempero, E.: Understanding the shape of Java software. In: Proc. ACM Conf. Obj.-Oriented Progr. Syst. Lang. Appl., pp. 397–412 (2006)Google Scholar
  5. 5.
    Briand, L.C., Daly, J.W., Wüst, J.K.: A unified framework for coupling measurement in object-oriented systems. IEEE Trans. Sofw. Eng. 25(1), 91–121 (1999)CrossRefGoogle Scholar
  6. 6.
    Chen, T., Gu, Q., Wang, S., Chen, X., Chen, D.: Module-based large-scale software evolution based on complex networks. In: Proc. IEEE Int. Conf. Comp. Info. Technol., pp. 798–803 (2008)Google Scholar
  7. 7.
    Chidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Trans. Softw. Eng. 20(6), 476–493 (1994)CrossRefGoogle Scholar
  8. 8.
    Clauset, A., Shalizi, C.R., Newman, M.E.J.: Power-law distributions in empirical data. SIAM Rev. 51(4), 661–703 (2009)CrossRefMATHMathSciNetGoogle Scholar
  9. 9.
    Concas, G., Marchesi, M., Pinna, S., Serra, N.: Power-laws in a large object-oriented software system. IEEE Trans. Softw. Eng. 33(10), 687–708 (2007)CrossRefGoogle Scholar
  10. 10.
    Dijkstra, E.W.: Structured programming. In: Buxton, J.N., Randell, B. (eds.) Software Engineering Techniques, pp. 84–87. NATO Scientific Affairs Division, Brussels (1970)Google Scholar
  11. 11.
    Erdős, P., Rényi, A.: On the evolution of random graphs. Publ. Math. Inst. Hung. Acad. Sci. 5, 17–61 (1960)MATHMathSciNetGoogle Scholar
  12. 12.
    Gao, Y., Xu, G., Yang, Y., Niu, X., Guo, S.: Empirical analysis of software coupling networks in object-oriented software systems. In: Proc. IEEE Int. Conf. Softw. Eng. Service Sci, pp. 178–181 (2010)Google Scholar
  13. 13.
    Goh, K.-I., Oh, E., Jeong, H., Kahng, B., Kim, D.: Classification of scale-free networks. Proc. Nat. Acad. Sci. 99(20), 12583–12588 (2002)CrossRefMATHMathSciNetGoogle Scholar
  14. 14.
    Hatton, L.: Power-law distributions of component size in general software systems. IEEE Trans. Softw. Eng. 35(4), 566–572 (2009)CrossRefGoogle Scholar
  15. 15.
    Hyland-Wood, D., Carrington, D., Kaplan, S.: Scale-free nature of Java software package, class and method collaboration graphs. Technical Report TR-MS1286, University of Maryland, College Park (2006)Google Scholar
  16. 16.
    Ichii, M., Matsushita, M., Inoue, K.: An exploration of power-law in use-relation of Java software systems. In: Proc. Australian Conf. Softw. Eng., pp. 422–431 (2008)Google Scholar
  17. 17.
    Jenkins, S., Kirk, S.R.: Software architecture graphs as complex networks: A novel partitioning scheme to measure stability and evolution. Info. Sci. 177, 2587–2601 (2007)CrossRefGoogle Scholar
  18. 18.
    Jing, L., Keqing, H., Yutao, M., Rong, P.: Scale free in software metrics. In: Proc. Int. Comp. Softw. Appl. Conf. (2006)Google Scholar
  19. 19.
    Keller, E.F.: Revisiting “scale-free” networks. BioEssays 27(10), 1060–1068 (2005)CrossRefGoogle Scholar
  20. 20.
    Koenig, A.: Patterns and antipatterns. J. Obj.-Oriented Progr. 8(1), 46–48 (1995)Google Scholar
  21. 21.
    Lehman, M.M.: Laws of software evolution revisited. In: Montangero, C. (ed.) EWSPT 1996. LNCS, vol. 1149, Springer, Heidelberg (1996)CrossRefGoogle Scholar
  22. 22.
    Li, D., Han, Y., Hu, J.: Complex network thinking in software engineering. In: Proc. Int. Conf. Comp. Sci. Softw. Eng., pp. 264–268 (2008)Google Scholar
  23. 23.
    Louridas, P., Spinellis, D., Vlachos, V.: Power laws in software. ACM Trans. Softw. Eng. Methodol. 18(1), 2/1–2/26 (2008)Google Scholar
  24. 24.
    Marchesi, M., Pinna, S., Serra, N., Tuveri, S.: Power laws in Smalltalk. In: Proc. Europ. Smalltalk User Group Joint Event (2004)Google Scholar
  25. 25.
    Mens, T., Lanza, M.: A graph-based metamodel for object-oriented software metrics. Electr. Notes Theoret. Comp. Sci. 72(2) (2002)Google Scholar
  26. 26.
    Myers, C.R.: Software systems as complex networks: Structure, function, and evolvability of software collaboration graphs. Phys. Rev. E 68, 046116 (2003)CrossRefGoogle Scholar
  27. 27.
    Newman, M., Barabási, A.-L., Watts, D.J.: The Structure and Dynamics of Networks. Princeton University Press, Princeton (2006)MATHGoogle Scholar
  28. 28.
    Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  29. 29.
    Parnas, D.L.: On the design and development of program families. IEEE Trans. Softw. Eng. 2(1), 1–9 (1976)CrossRefMATHGoogle Scholar
  30. 30.
    Potanin, A., Noble, J., Frean, M., Biddle, R.: Scale-free geometry in object-oriented programs. Commun. ACM 48(5), 99–103 (2005)CrossRefGoogle Scholar
  31. 31.
    Simon, H.A.: The architecture of complexity. Proc. Amer. Phil. Soc. 106(6), 467–482 (1962)Google Scholar
  32. 32.
    Stevens, W.P., Myers, G.J., Constantine, L.L.: Structured design. IBM Syst. J. 13(2), 231–256 (1974)CrossRefGoogle Scholar
  33. 33.
    Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., Noble, J.: The Qualitas Corpus: A curated collection of Java code for empirical studies. In: Proc. Asia-Pacific Softw. Eng. Conf. (2010)Google Scholar
  34. 34.
    Valverde, S., Ferrer Cancho, R., Solé, R.V.: Scale-free networks from optimal design. Europhys. Lett. 60(4), 512–517 (2002)CrossRefGoogle Scholar
  35. 35.
    Valverde, S., Solé, R.V.: Logarithmic growth dynamics in software networks. Europhys. Lett. 72(5), 858–864 (2005)CrossRefGoogle Scholar
  36. 36.
    Vasa, R., Lumpe, M., Branch, P., Nierstrasz, O.: Comparative analysis of evolving software systems using the Gini coefficient. In: Proc. IEEE Int. Conf. Softw. Maint., pp. 179–188 (2009)Google Scholar
  37. 37.
    Wheeldon, R., Counsell, S.: Power law distributions in class relationships. In: Proc. IEEE Int. Wkshp. Source Code Analys. Manipul, pp. 45–54 (2001)Google Scholar
  38. 38.
    Wilkie, F.G., Kitchenham, B.A.: Coupling measures and change ripples in C++ application software. J. Syst. Softw. 52(2–3), 157–164 (2000)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Craig Taube-Schock
    • 1
  • Robert J. Walker
    • 2
  • Ian H. Witten
    • 1
  1. 1.University of WaikatoHamiltonNew Zealand
  2. 2.University of CalgaryCalgaryCanada

Personalised recommendations