In their paper Chidamber-Kemerer [2] also provides an
analytical confrontation of their proposed metrics with
Weyuker’s [3] list of measurement principles.
The NOC metric is defined as the count of immediate
subclasses. If a class has a large NOC value, it may require
more testing of the methods in that class.
DIT is the length of the maximal path to the root of the
class hierarchy. It can be observed that the deeper is a class
in the hierarchy, the greater can be the number of inherited
methods making it more difficult to predict its behaviour so
more effort is needed in testing this class. Deeper trees
constitute greater design complexity, since more methods
and classes are involved.
WMC is the count of methods in a class. The number of
methods and its complexity is a predictor of how much time
and effort is required to develop and maintain the class.
Classes with large number of methods are likely to be more
application specific, limiting the possibility of reuse. The
more methods defined in a class the greater is its possible
impact on children, since children inherit all defined
methods.
The RFC metric is the cardinality of the set of all
methods that can be potentially executed in the response to
the arrival of a message to an object. RFC is a measure of the
potential communication between the class and another
classes. If a large number of methods can be invoked in response to a message, the testing and debugging of the class
becomes more complicated since it requires a greater level of
understanding required on the part of the tester. The larger
the number of methods that can be invoked from a class, the
greater the complexity of the class. A worst case value for
possible responses will assist in appropriate allocation of
testing time. RFC does not count calls to X- library functions
and 110 functions like printf, scanf that are present in C++,
interface classes are counted in RFC.