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
Loading...
Date
2013
DOI
Open Access Location
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Massey University
Rights
The Author
Abstract
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.
Description
Keywords
Java (Computer program language), Software engineering