JavaScript is disabled for your browser. Some features of this site may not work without it.
The system will be going down for maintenance on Wednesday 22nd March 7-9pm NZT. Apologies for the inconvenience.
On the classification of cyclic dependencies in Java programs : a thesis presented in partial fulfilment of the requirements for the degree of Master of Science in Computer Science at Massey University, Manawatū, New Zealand
Software engineering guidelines and rules discourage cyclic dependencies between
modules, yet empirical studies have shown that many software systems are burdened
with them. This might indicate that not all cycles are as detrimental to software quality
as previously thought. Clearly, a better understanding of the types of cyclic
dependencies and their effect on software quality is required. As a first step in this
direction, we look closely at the shapes formed by software dependency graphs
containing cyclic dependencies. Such cyclic dependencies correspond to the concept of
strongly connected components in graph theory. We propose an approach to classify
strongly connected components according to their topologies. This allows us to
distinguish between dense and sparse, symmetric and asymmetric structures. We
extend on previous studies and investigate the relationship between cyclic
dependencies and the package containment tree. We validate our approach with
experiments based on a corpus of 103 open–source Java systems. We find that cyclic
dependencies tend to form in branches of the package containment tree around parent
packages that are not critical according to some researchers.