An investigation of coupling, reuse and maintenance in a commercial C++ application (2001)

Author(s): F.G. Wilkie and B.A. Kitchenham
Venue: Information and Software Technology
Date: Nov 2001

Type of Experiement: Case Study


The C++ application is a commercial multimedia conferencing system. One team of software
engineers developed the first version of the application. The application was then handed
over to a second team of developers for refinement and commercialization. It contains 114
classes, 1114 member functions, and approximately 25,000 lines of code. The proposed
metrics were applied to find if they added anything new to existing metric knowledge.

They propose extensions and refinements to the coupling between objects metric (CBO)
proposed by Chidamber and Kemerer. They investigated a better way to represent the
strength of coupling between two objects by not only looking at the frequency between
two objects interaction but also at the types of messages passed. For example, if the same
message was passed between two objects more than once it would not account in addition
to their overall coupling because this isn’t really a new interaction. They introduce the
extensions called Coupling Complexity in the Forward direction of class linkage (CCF) and
CCB for the backwards direction.

Found that the CCF metric does not provide any additional information on determining
classes that are change-prone compared with CBO(forward). In fact they found it to be less
accurate. They also note that CBO is not associated with change-proneness just as fan-in
is not, but fan-out is. CCF and CCB do however provide insight into what type of module
a class is (server, consumer, or both). If they are a consumer (CFO is high) they will need
extensive testing. If they are a server (CCB is high) they can be easily tested and they need
to be highly reliable since they are used potentially by multiple classes. If CCB and CCF is
high then these are core logic classes of the system and need to be extremely well tested.