  Software systems are composed of many interacting elements. A natural way to
abstract over software systems is to model them as graphs. In this paper we
consider software dependency graphs of object-oriented software and we study
one topological property: the degree distribution. Based on the analysis of ten
software systems written in Java, we show that there exists completely
different systems that have the same degree distribution. Then, we propose a
generative model of software dependency graphs which synthesizes graphs whose
degree distribution is close to the empirical ones observed in real software
systems. This model gives us novel insights on the potential fundamental rules
of software evolution.
