Date of Award
MS in Computer Science
Coupling Between Objects and Cyclomatic Complexity have long been used to measure software quality and predict maintainability and reliability of software systems prior to release. In particular, Coupling Between Objects has been shown to correlate with fault-proneness and maintainability of a system at the class level. We propose a new set of metrics based on a fusion of Coupling Between Objects and Cyclomatic Complexity that can be superior to Coupling Between Objects alone at predicting class quality. The new metrics use Cyclomatic Complexity to 1) augment Coupling Between Objects counting to assign a strength of a coupling between two classes and 2) determine the complexity of a method invocation chain through the transitive relation of invocations involved in a coupling. This results in a measure that identifies objects that are coupled to highly complex methods or method invocation chains. The metrics were implemented as an Eclipse Plug-in and an analysis of two industry Java projects, ConnectorJ and Hibernate, demonstrates the correlation between the new metrics and post-release defects identified in system change logs.