Abstract
Understanding coupling between classes in object-oriented (OO) software systems is useful for a variety of software development and maintenance activities. In this paper we propose a novel, network-based methodology to analyze high structural class coupling in OO software systems. The proposed methodology is based on statistically robust structural analysis of class collaboration networks whose nodes are enriched with both software metrics and domain-independent metrics used in analysis of complex networks. To demonstrate the usefulness of the methodology we analyze five open-source, large-scale software systems written in Java. Contrary to frequently reported findings, the obtained results indicate that high structural class coupling in real software systems cannot be accurately modeled by power-law distributions. Our analysis also shows that highly-coupled classes tend to be significantly more voluminous and functionally important compared to loosely coupled classes, and do not tend to be localized in class inheritance hierarchies. Finally, in four out of five analyzed systems highly coupled classes tend to have drastically higher afferent than efferent coupling. This implies that the existence of high class coupling in an OO software system would rather indicate negative aspects of extensive internal class reuse than negative aspects of extensive internal class aggregation.
Similar content being viewed by others
References
Albert R, Barabási AL (2002) Statistical mechanics of complex networks. Rev Mod Phys 74(1):47–97. doi:10.1103/RevModPhys.74.47
Barabasi AL, Albert R (1999) Emergence of scaling in random networks. Science 286(5439):509–512. doi:10.1126/science.286.5439.509
Baxter G, Frean M, Noble J, Rickerby M, Smith H, Visser M, Melton H, Tempero E (2006) Understanding the shape of Java software. In: Proceedings of the 21st annual ACM SIGPLAN conference on object-oriented programming systems, languages, and applications, OOPSLA ’06, pp 397–412. ACM, New York, NY, USA . doi:10.1145/1167473.1167507
Boccaletti S, Latora V, Moreno Y, Chavez M, Hwang D (2006) Complex networks: structure and dynamics. Phys Rep 424(45):175–308. doi:10.1016/j.physrep.2005.10.009
Briand LC, Daly JW, Wüst JK (1999) A unified framework for coupling measurement in object-oriented systems. IEEE Trans Softw Eng 25(1):91–121
Brin S, Page L (1998) The anatomy of a large-scale hypertextual web search engine. Comput Netw ISDN Syst 30(1–7):107–117
Chidamber SR, Kemerer CF (1994) A metrics suite for object oriented design. IEEE Trans Softw Eng 20(6):476–493. doi:10.1109/32.295895
Clauset A, Shalizi C, Newman M (2009) Power-law distributions in empirical data. SIAM Rev 51(4):661–703. doi:10.1137/070710111
Concas G, Marchesi M, Pinna S, Serra N (2007) Power-laws in a large object-oriented software system. IEEE Trans Softw Eng 33(10):687–708
de Moura APS, Lai YC, Motter AE (2003) Signatures of small-world and scale-free properties in large computer programs. Phys Rev E 68(1):017,102. doi:10.1103/PhysRevE.68.017102
Erceg-Hurn DM, Mirosevich VM (2008) Modern robust statistical methods: an easy way to maximize the accuracy and power of your research. Am Psychol 63(7):591–601. doi:10.1037/0003-066X.63.7.591
Erdös P, Rényi A (1959) On random graphs, I. Publ Math Debr 6:290–297
Freeman LC (1977) A set of measures of centrality based on betweenness. Sociometry 40:35–41
Hylland-Wood D, Carrington D, Kaplan S (2006) Scale-free nature of Java software package, class and method collaboration graphs. Technical report, TR-MS1286, MIND Laboratory, University of Maryland, College Park, USA
Jenkins S, Kirk SR (2007) Software architecture graphs as complex networks: a novel partitioning scheme to measure stability and evolution. Inf Sci 177:2587–2601. doi:10.1016/j.ins.2007.01.021
Kósa B, Balassi M, Englert P, Kiss A (2015) Betweenness versus linerank. Comput Sci Inf Syst 12(1):33–48. doi:10.2298/CSIS141101092K
Louridas P, Spinellis D, Vlachos V (2008) Power laws in software. ACM Trans Softw Eng Methodol 18(1):2:1–2:26
Mann HB, Whitney DR (1947) On a test of whether one of two random variables is stochastically larger than the other. Ann Math Stat 18(1):50–60. doi:10.2307/2236101
McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 2(4):308–320. doi:10.1109/TSE.1976.233837
Myers CR (2003) Software systems as complex networks: structure, function, and evolvability of software collaboration graphs. Phys Rev E 68(4):046,116. doi:10.1103/PhysRevE.68.046116
Newman MEJ (2003) The structure and function of complex networks. SIAM Rev 45:167–256. doi:10.1137/S003614450342480
Rakić G, Budimac Z (2011) Introducing enriched concrete syntax trees. In: Proceedings of the 14th international multiconference on information society (IS), collaboration, software and services in information society (CSS), pp 211–214
Redner S (2005) Citation statistics from 110 years of Physical Review. Phys Today 58(6):49–54. doi:10.1063/1.1996475
Savić M, Rakić G, Budimac Z, Ivanović M (2014) A language-independent approach to the extraction of dependencies between source code entities. Inf Softw Technol 56(10):1268–1288. doi:10.1016/j.infsof.2014.04.011
Šubelj L, Bajec M (2012) Software systems through complex networks science: review, analysis and applications. In: Proceedings of the first international workshop on software mining, SoftwareMining ’12, pp 9–16. ACM, New York, NY, USA. doi:10.1145/2384416.2384418
Taube-Schock C, Walker R, Witten I (2011) Can we avoid high coupling? In: Mezini M (ed) ECOOP 2011 object-oriented programming. Lecture notes in computer science, vol 6813. Springer, Berlin, pp 204–228. doi:10.1007/978-3-642-22655-7_10
Valverde S, Cancho RF, Solé RV (2002) Scale-free networks from optimal design. EPL 60(4):512–517. doi:10.1209/epl/i2002-00248-2
Wen H, DSouza RM, Saul ZM, Filkov V (2009) Evolution of Apache open source software. In: Ganguly N, Deutsch A, Mukherjee A (eds) Dynamics on and of complex networks, modeling and simulation in science, engineering and technology. Birkhuser, Boston, pp 199–215. doi:10.1007/978-0-8176-4751-3_12
Wheeldon R, Counsell S (2003) Power law distributions in class relationships. In: Proceedings of the third IEEE international workshop on source code analysis and manipulation, pp 45–54. doi:10.1109/SCAM.2003.1238030
Yourdon E, Constantine LL (1979) Structured design: fundamentals of a discipline of computer program and systems design, 1st edn. Prentice-Hall Inc., Upper Saddle River
Acknowledgements
The authors gratefully acknowledge the support of this work by the Serbian Ministry of Education, Science and Technological Development through project Intelligent Techniques and Their Integration into Wide-Spectrum Decision Support, no. OI174023.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Savić, M., Ivanović, M. & Radovanović, M. Analysis of high structural class coupling in object-oriented software systems. Computing 99, 1055–1079 (2017). https://doi.org/10.1007/s00607-017-0549-6
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00607-017-0549-6
Keywords
- High coupling
- Class collaboration networks
- Network analysis
- Software metrics
- Power-law
- Class reuse
- Class aggregation