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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Albert, R., Jeong, H., Barabási, A.-L.: Diameter of the World Wide Web. Nature 401, 130–131 (1999)
Alexander, C.: Notes on the Synthesis of Form. Harvard University Press, Cambridge (1964)
Barabási, A.-L., Albert, R.: Emergence of scaling in random networks. Science 286(5439), 509–512 (1999)
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)
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)
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)
Chidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Trans. Softw. Eng. 20(6), 476–493 (1994)
Clauset, A., Shalizi, C.R., Newman, M.E.J.: Power-law distributions in empirical data. SIAM Rev. 51(4), 661–703 (2009)
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)
Dijkstra, E.W.: Structured programming. In: Buxton, J.N., Randell, B. (eds.) Software Engineering Techniques, pp. 84–87. NATO Scientific Affairs Division, Brussels (1970)
Erdős, P., Rényi, A.: On the evolution of random graphs. Publ. Math. Inst. Hung. Acad. Sci. 5, 17–61 (1960)
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)
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)
Hatton, L.: Power-law distributions of component size in general software systems. IEEE Trans. Softw. Eng. 35(4), 566–572 (2009)
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)
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)
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)
Jing, L., Keqing, H., Yutao, M., Rong, P.: Scale free in software metrics. In: Proc. Int. Comp. Softw. Appl. Conf. (2006)
Keller, E.F.: Revisiting “scale-free” networks. BioEssays 27(10), 1060–1068 (2005)
Koenig, A.: Patterns and antipatterns. J. Obj.-Oriented Progr. 8(1), 46–48 (1995)
Lehman, M.M.: Laws of software evolution revisited. In: Montangero, C. (ed.) EWSPT 1996. LNCS, vol. 1149, Springer, Heidelberg (1996)
Li, D., Han, Y., Hu, J.: Complex network thinking in software engineering. In: Proc. Int. Conf. Comp. Sci. Softw. Eng., pp. 264–268 (2008)
Louridas, P., Spinellis, D., Vlachos, V.: Power laws in software. ACM Trans. Softw. Eng. Methodol. 18(1), 2/1–2/26 (2008)
Marchesi, M., Pinna, S., Serra, N., Tuveri, S.: Power laws in Smalltalk. In: Proc. Europ. Smalltalk User Group Joint Event (2004)
Mens, T., Lanza, M.: A graph-based metamodel for object-oriented software metrics. Electr. Notes Theoret. Comp. Sci. 72(2) (2002)
Myers, C.R.: Software systems as complex networks: Structure, function, and evolvability of software collaboration graphs. Phys. Rev. E 68, 046116 (2003)
Newman, M., Barabási, A.-L., Watts, D.J.: The Structure and Dynamics of Networks. Princeton University Press, Princeton (2006)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)
Parnas, D.L.: On the design and development of program families. IEEE Trans. Softw. Eng. 2(1), 1–9 (1976)
Potanin, A., Noble, J., Frean, M., Biddle, R.: Scale-free geometry in object-oriented programs. Commun. ACM 48(5), 99–103 (2005)
Simon, H.A.: The architecture of complexity. Proc. Amer. Phil. Soc. 106(6), 467–482 (1962)
Stevens, W.P., Myers, G.J., Constantine, L.L.: Structured design. IBM Syst. J. 13(2), 231–256 (1974)
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)
Valverde, S., Ferrer Cancho, R., Solé, R.V.: Scale-free networks from optimal design. Europhys. Lett. 60(4), 512–517 (2002)
Valverde, S., Solé, R.V.: Logarithmic growth dynamics in software networks. Europhys. Lett. 72(5), 858–864 (2005)
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)
Wheeldon, R., Counsell, S.: Power law distributions in class relationships. In: Proc. IEEE Int. Wkshp. Source Code Analys. Manipul, pp. 45–54 (2001)
Wilkie, F.G., Kitchenham, B.A.: Coupling measures and change ripples in C++ application software. J. Syst. Softw. 52(2–3), 157–164 (2000)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Taube-Schock, C., Walker, R.J., Witten, I.H. (2011). Can We Avoid High Coupling?. In: Mezini, M. (eds) ECOOP 2011 – Object-Oriented Programming. ECOOP 2011. Lecture Notes in Computer Science, vol 6813. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-22655-7_10
Download citation
DOI: https://doi.org/10.1007/978-3-642-22655-7_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-22654-0
Online ISBN: 978-3-642-22655-7
eBook Packages: Computer ScienceComputer Science (R0)