The fractal dimension of software networks as a global quality metric
We analyzed the source code of various releases of two large Object Oriented Open Source Java software systems, Eclipse and Netbeans, investigating the complexity of the whole release and of its subprojects. We show that when the classes in the source code and the dependencies between them are considered, such systems can be viewed as complex software networks, and emerging structures, characteristic of fractals, appear at different length scales  on the entire systems and on subprojects of any size. We were able to find in all examined cases a scaling region where it is possible to compute a self-similar coefficient, the fractal dimension, using the box counting method. Such a coefficient is a single metric related to the systems complexity. More importantly, we were able to show that this measure looks fairly related to software quality, acting as a global quality software metric. In particular, we computed the defects of each software system, and we found a clear correlation among the number of defects in the system, or in a subproject, and its fractal dimension. This correlation exists across all the subprojects and also along the time evolution of the software systems, as new releases are delivered.
fractal dimension software quality software metrics object-oriented languages software engineering