Software systems as complex networks: structure, function, and evolvability of software collaboration graphs
C. R. Myers
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.
Create a lesson
Related papers
Robust Golden Ratio universality as a consequence of a circulant symmetry
Luka Paljk, Johannes Schmidt, Vladislav Popkov
Replica Transition at Measurement-Altered Ising Criticality
Kabir Khanna, Sara Murciano, Romain Vasseur
Scalene Yang-Baxter triples realize all nearest-neighbour Hamiltonians with global additive symmetries
Pramod Padmanabhan, Somnath Maity, Akash Sinha et al.
Graph-theoretic framework for semi-Markov networks: transient and stationary occupation probabilities, hitting times and weak ergodicity breaking
Julian Voits
Spectral optimization of spherical lattices and applications to classical and quantum interacting spin systems
Jonas Völler, Grigorios Makris, Fabian Hassler et al.
Entropic-ordered superfluid
Isabella Zane, Andrew Lucas