Software systems as complex networks: structure, function, and evolvability of software collaboration graphs
<|reference_start|>Software systems as complex networks: structure, function, and evolvability of software collaboration graphs: 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.<|reference_end|>
@article{myers2003software,
    title={Software systems as complex networks: structure, function, and
  evolvability of software collaboration graphs},
    author={C. R. Myers},
    journal={Phys. Rev. E 68, 046116 (2003)},
    year={2003},
    doi={10.1103/PhysRevE.68.046116},
    archivePrefix={arXiv},
    eprint={cond-mat/0305575},
    primaryClass={cond-mat.stat-mech cs.SE}
}