de l’information
2.1.2.6 LCOM
This is a cohesion metric that was defined in [30]. This measures the number of pairs of methods in the
class using no attributes in common minus the number of pairs of methods that do. If the difference is
negative it is set to zero.
The LCOM metric was empirically evaluated in [19][22]. In [19] the authors found it to be associated with
fault-proneness (p=0.0.249) with a change in odds ratio of 1.613. Conversely, the second study [22] did
not find it to be associated with fault-proneness.
2.1.2.7 NMO
This is an inheritance metric that has been defined in [80], and measures the number of inherited
methods overriden by a subclass. A large number of overriden methods indicates a design problem [80].
Since a subclass is intended to specialize its parent, it should primarily extend the parent’s services [94].
This should result in unique new method names. Numerous overrides indicate subclassing for the
convenience of reusing some code and/or instance variables when the new subclass is not purely a
specialization of its parent [80].
The NMO metric was empirically evaluated in [19][22]. In [19] the authors found that this metric was
related to fault-proneness (p=0.0082) with a change in odds ratio equal to 1.724. The second study [22]
also found it to be associated with fault-proneness (p=0.0243) with a change in odds ratio of 1.948.
Lorenz and Kidd [80] caution that in the context of frameworks methods are often defined specifically for
reuse or that are meant to be overriden. Therefore, for our study there is already an a priori expectation
that this metric may not be a good predictor.
2.1.2.8 NMA
This is an inheritance metric that has been defined in [80], and measures the number of methods added
by a subclass (inherited methods are not counted). As this value becomes larger for a class, the
functionality of that class becomes increasingly distinct from that of the parent classes.
The NMO metric was empirically evaluated in [19][22]. In [19] the authors found that this metric was
related to fault-proneness (p=0.0021) with a change in odds ratio equal to 3.925, a rather substantial
effect. The second study [22] also found it to be associated with fault-proneness (p=0.0021) with a
change in odds ratio of 1.710.
2.1.2.9 SIX
This is an inheritance metric that has been defined in [80], and consists of a combination of inheritance
metrics. It is calculated as the product of the number of overriden methods and the class hierarchy
nesting level normalized by the total number of methods in the class. The higher value for SIX, the more
likely that a particular class does not conform to the abstraction of it's superclasses [94].
The SIX metric was empirically evaluated in [19][22]. In [19] the authors found that this metric was not
related to fault-proneness. Conversely, the second study [22] found it to be associated with fault-
proneness (p=0.0089) with a change in odds ratio of 1.337.
2.1.2.10 NPAVG
This can be considered as a coupling metric and has been defined in [80], and measures the average
number of parameters per method (not including inherited methods). Methods with a high number of
parameters generally require considerable testing (as their input can be highly varied). Also, large
numbers of parameters lead to more complex, less maintainable code.
2.1.2.11 Summary
The current empirical studies do provide some evidence that object oriented metrics are associated with
fault-proneness or the incidence of faults. Though, the evidence is equivocal. For some of the inheritance
metrics that were studied (DIT and NOC) some studies found a positive association, some found a
negative association, and some found no association. The CBO metric was found to be positively
associated with fault-proneness in some studies, and not associated with either the number of faults
found or fault-proneness in other studies. The RFC and WMC metrics were consistently found to be