A Longitudinal Study of Fan-In and Fan-Out Coupling in Open-Source Systems

A Longitudinal Study of Fan-In and Fan-Out Coupling in Open-Source Systems

Asma Mubarak (Brunel University, UK), Steve Counsell (Brunel University, UK) and Robert M. Hierons (Brunel University, UK)
DOI: 10.4018/978-1-4666-4161-7.ch009
OnDemand PDF Download:
$30.00
List Price: $37.50

Abstract

Excessive coupling between object-oriented classes is widely acknowledged as a maintenance problem that can result in a higher propensity for faults in systems and a ‘stored up’ future problem. This paper explores the relationship between ‘fan-in’ and ‘fan-out’ coupling metrics over multiple versions of open-source software. More specifically, the relationship between the two metrics is explored to determine patterns of growth in each over the course of time. The JHawk tool was used to extract the two metrics from five open-source systems. Results show a wide range of traits in the classes to explain both high and low levels of fan-in and fan-out. Evidence was also found of certain ‘key’ classes (with both high fan-in and fan-out) and ‘client’ and ‘server’-type classes with high fan-out and fan-in, respectively. This paper provides an explanation of the composition and existence of such classes as well as for disproportionate increases in each of the two metrics over time. Finally, it was found that high fan-in class values tended to be associated with small classes; classes with high fan-out on the other hand tended to be relatively large classes.
Chapter Preview
Top

The research in this paper is motivated by a number of factors. Firstly, previous research (Mubarak et al., 2008) has shown that there is a trade-off between coupling types – in particular, that between coupling through imported packages and the introduction of ‘internal-to-the-package’ coupling. In this paper, we explore the potential characteristics and trade-offs between fan-in and fan-out metrics over time. Second, we would always expect potentially problematic classes to be re-engineered by developers through techniques such as refactoring (Fowler, 1999); however, the practical realities of limited time and resources at their disposal means that only when classes exhibit particularly bad ‘smells’ (e.g. excessive coupling) (Fowler, 1999; Mantyla et al., 2006) are they dealt with. In this paper, we explore, over time, whether smells given by too much coupling do become ‘smellier’ and, if so, in what proportions. Third, it is likely that there are special types of class with either large fan-in or fan-out values (or both). Understanding the nature of these classes could help to understand the reason for these characteristics and even how and why these classes evolve as they do. Finally, the research is motivated by previous research (Mubarak et al., 2008) which showed that the fan-in and fan-out metrics tended to be relatively small for classes removed from a system. In other words, classes with either high fan-in and/or fan-out may be difficult to move or remove from a system. This question has inspired further examination of trends in the two metrics presented. The original fan-in and fan-out metrics were developed in early software metrics texts dealing with coupling and cohesion and structured programming (Stevens et al., 1974). Yet, very few studies have used fan-in and fan-out as a basis for empirical studies of coupling. A key objective of the research presented is to redress this imbalance in a small way.

Complete Chapter List

Search this Book:
Reset