How multiple-dependency structure of classes affects their functions a statistical perspective

Networks have been considered an effective tool to describe the topological structure of software. Recently, many object-oriented software systems were found to share global network features such as scale free and small world. In this paper, we defined a special structural feature of individual class to investigate the relationship between external structure and internal function. The metric (m) takes in-degree and reachable set of nodes in class-level dependency graphs derived from source code into consideration. Experimental results show that (1) the distribution of frequency-of-occurrence of m roughly follows a power-law distribution, and (2) there is a weak but distinct positive correlation between m and either WMC or LCOM, and classes with complex multiple-dependency structure have on average more complicated functions (and less cohesion) than other classes within specific groups classified by m. Thus, the metric could be a useful complementary measure for traditional OO metrics to analyze the complexity, stability and maintainability of classes.

[1]  Chen Yang,et al.  Linux kernels as complex networks: A novel method to study evolution , 2009, 2009 IEEE International Conference on Software Maintenance.

[2]  Donald E. Knuth,et al.  Literate Programming , 1984, Comput. J..

[3]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[4]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[5]  Duncan J. Watts,et al.  Collective dynamics of ‘small-world’ networks , 1998, Nature.

[6]  Ramanath Subramanyam,et al.  Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects , 2003, IEEE Trans. Software Eng..

[7]  Yutao Ma,et al.  Scale Free in Software Metrics , 2006, 30th Annual International Computer Software and Applications Conference (COMPSAC'06).

[8]  Audris Mockus,et al.  Software Dependencies, Work Dependencies, and Their Impact on Failures , 2009, IEEE Transactions on Software Engineering.

[9]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[10]  Albert,et al.  Emergence of scaling in random networks , 1999, Science.

[11]  Michele Marchesi,et al.  Power-Laws in a Large Object-Oriented Software System , 2007, IEEE Transactions on Software Engineering.

[12]  Diomidis Spinellis,et al.  Power laws in software , 2008, TSEM.

[13]  Andrew Cain,et al.  Detecting structural changes in object oriented software systems , 2005, 2005 International Symposium on Empirical Software Engineering, 2005..

[14]  Samantha Jenkins,et al.  Software architecture graphs as complex networks: A novel partitioning scheme to measure stability and evolution , 2007, Inf. Sci..

[15]  Stephen Warshall,et al.  A Theorem on Boolean Matrices , 1962, JACM.

[16]  Wei Cai,et al.  Using the k-core decomposition to analyze the static structure of large-scale software systems , 2010, The Journal of Supercomputing.

[17]  Ayse Basar Bener,et al.  Validation of network measures as indicators of defective modules in software systems , 2009, PROMISE '09.

[18]  W. Kruskal,et al.  Use of Ranks in One-Criterion Variance Analysis , 1952 .

[19]  John Guare,et al.  Six Degrees of Separation: A Play , 1990 .

[20]  Christopher R. Myers,et al.  Software systems as complex networks: structure, function, and evolvability of software collaboration graphs , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[21]  Sergi Valverde,et al.  Hierarchical Small Worlds in Software Architecture , 2003 .

[22]  James Noble,et al.  Scale-free geometry in OO programs , 2005, CACM.

[23]  Subhas C. Misra,et al.  Relationships Between Selected Software Measures and Latent Bug-Density: Guidelines for Improving Quality , 2003, ICCSA.

[24]  Keqing He,et al.  A qualitative method for measuring the structural complexity of software systems based on complex networks , 2005, 12th Asia-Pacific Software Engineering Conference (APSEC'05).

[25]  Ewan D. Tempero,et al.  Measuring the Strength of Indirect Coupling , 2007, 2007 Australian Software Engineering Conference (ASWEC'07).

[26]  Jing Liu,et al.  A Hybrid Set of Complexity Metrics for Large-Scale Object-Oriented Software Systems , 2010, Journal of Computer Science and Technology.

[27]  Oscar Nierstrasz,et al.  The Inevitable Stability of Software Change , 2007, 2007 IEEE International Conference on Software Maintenance.

[28]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[29]  Nachiappan Nagappan,et al.  Predicting defects with program dependencies , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[30]  Sallie M. Henry,et al.  Software Structure Metrics Based on Information Flow , 1981, IEEE Transactions on Software Engineering.