Cohesion is an important quality factor of the object-oriented as well as imperative design. A class in object-oriented software can have two types of cohesion: Class Cohesion and Inheritance Cohesion. In object-orientation it is a basic design requirement that a class should represent a single real world entity. To measure the extent to which a class meets this requirement, class cohesion is used as a tool. In this work, for the first time, we have proposed ways of using inheritance and class cohesion for measuring the quality of the inheritance hierarchy. We propose five graphical/visual cohesion-related metrics that provide designers of the object-oriented systems with the guidelines to enhance the quality of inheritance hierarchy to improve its maintainability, understandability and reusability. We also propose three new metrics to measure the cohesion of a class, i.e., CCM, CCCM and MCCM. We believe that CCM captures the connections among the methods of a class quite well and gives a good measure of class' cohesion. In the form of MCCM, we have proposed a metric that also takes into account the effect of overridden methods on inheritance cohesion of a class.; We have augmented our theoretical work by implementing the automated tool using which a designer can readily analyze his software against our proposed metrics. Finally as a test case study, we have analyzed the Java 1.3 API. Our analysis has revealed some very interesting quality features of the Java API. |