Hierarchical Small Worlds in Software Architecture
arXiv:cond-mat/0307278
Abstract
In this paper, we present a complex network approach to the study of software engineering. We have found universal network patterns in a large collection of object-oriented (OO) software systems written in C++ and Java. All the systems analyzed here display the small-world behavior, that is, the average distance between any pair of classes is very small even when coupling is low and cohesion is high. In addition, the structure of OO software is a very heterogeneous network characterized by a degree distribution following a power-law with similar exponents. We have investigated the origin of these universal patterns. Our study suggests that some features of OO programing languages, like encapsulation, seem to be largely responsible for the small-world behavior. On the other hand, software heterogeneity is largely independent of the purpose and objectives of the particular system under study and appears to be related to a pattern of constrained growth. A number of software engineering topics may benefit from the present approach, including empirical software measurement and program comprehension.
Accepted for publication in Special Issue on Software Engineering and Complex Networks Dynamics of Continuous, Discrete and Impulsive Systems Series B (2007)
References in corpus (3)
Cited by in corpus (10)
- Analyzing and Modeling Real-World Phenomena with Complex Networks: A Survey of Applications
- Community structure of complex software systems: Analysis and applications
- Inter-Package Dependency Networks in Open-Source Software
- Structure and Interpretation of Computer Programs
- Software systems through complex networks science: Review, analysis and applications
- Network Motifs in Object-Oriented Software Systems
- Partition Refinement of Component Interaction Automata: Why Structure Matters More Than Size
- Complex Dependencies in Large Software Systems
- A New P2N Approach to Software Development Under the Clustering
- Fat tails, long memory, maturity and ageing in open-source software projects