Modeling the growth of complex software function dependency networks
- 312 Downloads
Software engineering efforts can potentially benefit much from a good understanding of the structures of existing software systems and the processes governing their development. Towards that end, we study software systems by means of the complex network analysis framework. We model a software package as a network, with nodes representing the functions in the package and edges representing the dependencies among the functions. Our empirical analysis of five widely-adopted open-source software packages reveals a set of interesting features of such networks, which cannot be adequately reproduced by existing complex network models. We then set out to develop a new network growth model, explicitly imitating generally-advocated software development principals, such as divide-and-conquer, modularization, high intra-module cohesion, and low inter-module coupling. Results of our analytical derivations and numeric studies show that our model can more closely reproduce the particular features exhibited by real-world software packages, thus hopefully better explaining the phenomena of concern.
KeywordsSoftware systems Complex networks Network growth model Cohesion and coupling
The authors would like to thank the anonymous reviewers for their constructive comments and Cheng Nie for his help in drawing the network diagrams. The second author wishes to acknowledge funding support from the National Natural Science Foundation of China (60875049, 60621001), the Chinese Academy of Sciences (2F07C01, 2F08N03), and the Ministry of Science and Technology (2006AA010106).
- Adamic, L. A. (2000). Zipf, power-laws, and Pareto – a ranking tutorial. Retrieved May 20, 2010, from http://www.hpl.hp.com/shl/papers/ranking/.
- Dorogovtsev, S. N., & Mendes, J. F. F. (2001). Scaling properties of scale-free evolving networks: continuous approach. Physical Review E, 63, 056125.Google Scholar
- Erdos, P., & Renyi, A. (1959). On random graphs. Publicationes Mathematicae, 6, 290–297.Google Scholar
- Erdos, P., & Renyi, A. (1960). On the evolution of random graphs. Bulletin of the International Statistical Institute, 38, 343–347.Google Scholar
- Etzkorn, L., Davis, C., & Li, W. (1998). A practical look at the lack of cohesion in methods metric. Journal of Object-Oriented Programming, 11, 27–34.Google Scholar
- Faloutsos, C., Faloutsos, P., & Faloutsos, M. (1999). On power law relationships of the Internet topology, in Proceedings of ACM SIGCOMM, vol. 12. Cambridge, MA, pp. 251–262.Google Scholar
- Kennel, E. B., Perry, M. S., & Donovan, B. D. (1989). Reliability and single point failure design considerations in thermionic space nuclear-power systems. Space Power, 8, 219–223.Google Scholar
- Milgram, S. (1967). Small-world problem. Psychology Today, 1, 61–67.Google Scholar
- Newman, M. E. J., Strogatz, S. H., & Watts, D. J. (2001). Random graphs with arbitrary degree distributions and their applications. Physical Review E, 64, 026118.Google Scholar
- Ravasz, E., & Barabasi, A. L. (2003). Hierarchical organization in complex networks. Physical Review E, 67, 026112.Google Scholar
- Wang, Y. H., Chung, C. M., Shih, T. K., Keh, H. C., & Chen, J. F. (2000). The complexity measurement of software through program decomposition. Computer Systems Science and Engineering, 15, 127–134.Google Scholar
- Watts, D. J. (1999). Small worlds: The dynamics of networks between order and randomness. Cambridge: Cambridge Univ. Press.Google Scholar
- Xu, J., Gao, Y., Christley, S., & Madey, G. (2005). A topological analysis of the open souce software development community, in 38th Hawaii International Conference on System Sciences (HICSS). Hawaii.Google Scholar