Software systems as complex networks: structure, function, and evolvability of software collaboration graphs
arXiv:cond-mat/0305575 · doi:10.1103/PhysRevE.68.046116
Abstract
Software systems emerge from mere keystrokes to form intricate functional networks connecting many collaborating modules, objects, classes, methods, and subroutines. Building on recent advances in the study of complex networks, I have examined software collaboration graphs contained within several open-source software systems, and have found them to reveal scale-free, small-world networks similar to those identified in other technological, sociological, and biological systems. I present several measures of these network topologies, and discuss their relationship to software engineering practices. I also present a simple model of software system evolution based on refactoring processes which captures some of the salient features of the observed systems. Some implications of object-oriented design for questions about network robustness, evolvability, degeneracy, and organization are discussed in the wake of these findings.
16 pages, 8 figures; changed content, corrected typos
Cited by in corpus (37)
- How to project a bipartite network?
- Analyzing and Modeling Real-World Phenomena with Complex Networks: A Survey of Applications
- How to make a fragile network robust and vice versa
- Empirical Tests of Zipf's law Mechanism In Open Source Linux Distribution
- Subgraphs and network motifs in geometric networks
- Community structure of complex software systems: Analysis and applications
- Inter-Package Dependency Networks in Open-Source Software
- Logarithmic growth dynamics in software networks
- Evolution of a Modular Software Network
- Structure and Interpretation of Computer Programs
- Bug propagation and debugging in asymmetric software structures
- Software systems through complex networks science: Review, analysis and applications
- A general model for collaboration networks
- Structural Coupling for Microservices
- Network Motifs in Object-Oriented Software Systems
- Communicability Angles Reveal Critical Edges for Network Consensus Dynamics
- Node mixing and group structure of complex software networks
- Mixing properties of growing networks and the Simpson's paradox
- Research trends in structural software complexity
- Sustainable growth in complex networks
- Revealing effective classifiers through network comparison
- Exploring the "Middle Earth" of Network Spectra via a Gaussian Matrix Function
- Redefining measures of Layered Architecture
- A Network Perspective on Software Modularity
- A Generative Model of Software Dependency Graphs to Better Understand Software Evolution
- Information Theory and the Length Distribution of all Discrete Systems
- Semantic Code Graph -- an information model to facilitate software comprehension
- Software graphs and programmer awareness
- How Scale Affects Structure in Java Programs
- Rethinking complexity for software code structures: A pioneering study on Linux kernel code repository
- A complex network analysis of the Comprehensive R Archive Network (CRAN) package ecosystem
- Power-Laws and the Conservation of Information in discrete token systems: Part 1 General Theory
- Communicability Angle and the Spatial Efficiency of Networks
- Popularity and Innovation in Maven Central
- Complex Dependencies in Large Software Systems
- Two-walks degree assortativity in graphs and networks
- Fat tails, long memory, maturity and ageing in open-source software projects