de l’information
NOC to be associated with fault-proneness with a p-value for the regression coefficient <0.0001 [4]. Note
that for the latter two investigations, the same data set was used, and therefore the slightly different
coefficients may have been due to removal of outliers. In both studies NOC had a negative association
with fault-proneness and this was interpreted as indicating that greater attention was given to these
classes (e.g., through inspections) given that many classes were dependent on them.
Another study did not find NOC to be associated with fault-proneness on three different sub-systems
written in C++, where faults were based on three years’ worth of trouble reports [106]. NOC was not
associated with the number of faults due to field failures in a study of two systems, one implemented in
C++ and the other in Java [10].
2.1.2.4 CBO
This is the Coupling Between Object Classes coupling metric [30]. A class is coupled with another if
methods of one class uses methods or attributes of the other, or vice versa. In this definition, uses can
mean as a member type, parameter type, method local variable type or cast. CBO is the number of other
classes to which a class is coupled. It includes inheritance-based coupling (i.e., coupling between
classes related via inheritance).
The CBO metric was empirically evaluated in [19][22]. In [19] the authors found that this metric was
related to fault-proneness (p<0.0001) with a change in odds ratio equal to 5.493 when measured on non-
library classes. The second study [22] also found it to be associated with fault-proneness (p<0.0001) with
a change in odds ratio of 2.012 when measured on non-library classes. Another study did not find CBO to
be associated with fault-proneness on three different sub-systems written in C++, where faults were
based on three years’ worth of trouble reports [106]. This was also the case in a recent empirical analysis
on two traffic simulation systems, where no relationship between CBO and the number of known faults
was found [57], and a study of a Java application where CBO was not found to be associated with faults
due to field failures [10]. Finally, another study using student systems found CBO to be associated with
fault-proneness with a p-value for the logistic regression coefficient <0.0001 [4].
2.1.2.5 RFC
This is the Response for a Class coupling metric [30]. The response set of a class consists of the set M of
methods of the class, and the set of methods invoked directly by methods in M (i.e., the set of methods
that can potentially be executed in response to a message received by that class). RFC is the number of
methods in the response set of the class.
The RFC metric was empirically evaluated in [19][22]. In [19] the authors found that this metric was
related to fault-proneness (p=0.0019) with a change in odds ratio equal to 1.368 when measured on non-
library classes. The second study [22] also found it to be associated with fault-proneness (p<0.0001) with
a change in odds ratio of 3.208 when measured on non-library classes. Another study found RFC to be
associated with fault-proneness on two different sub-systems written in C++ with p-values 0.0401 and110.0499, and change in odds ratio 1.0562 and 1.0654 [106]. A study that evaluated RFC on a C++
application and a Java application found RFC to have a Spearman correlation of 0.417 and 0.775 with the
number of faults due to field failures respectively, and highly significant p-values (both <0.0001) [10].
Another study using student systems found RFC to be associated with fault-proneness with a p-value for
the logistic regression coefficient <0.0001 [4]. In this study faults were classified as either object-oriented type faults or traditional faults. The values presented here are for all of
the faults, although the same metrics were found to be significanct for both all faults and the object-oriented only faults.
Furthermore, the change in odds ratio reported is based on a change of one unit of the metric rather than a change in the standard
deviation.11