Metric Validation of Object- Oriented Software Design
A study of Object-Oriented Metrics has been presented in this Thesis. It begins with the review of existing Object-Oriented Metrics and proposal of new Object-Oriented Metrics to measure the Cohesion, Complexity, and Inheritance in Object-Oriented Design. The existing Object-Oriented Cohesion Metrics studied are LCOM (Lack of Cohesion in Methods) of Chidamber and Kemerer [described in Section 7.1.1], LCOM of Li and Henry [described in Section 7.1.2], C Metric of Hitz and Montazeri [described in Section 7.1.3], LCOM of Henderson-Seller [described in Section 7.1.4], Coh of Briand [described in Section 7.1.5], TCC (Tight Class Cohesion) and LCC (Loose Class Cohesion) of Bieman and Kang [described in Section 7.1.6], and LCCD (Lack of Cohesion in the Class) of Linda and Mourad Badri [described in Section 7.1.7]. The existing Object-Oriented Complexity Metrics studied are WMC (Weighted Method per Class) metric of Chidamber and Kemerer [described in Section 8.1.1], CMC (Class Method Complexity) metric of Li’s [described in Section 8.1.2], and CC (Class Complexity) metric of Balasubramanian [described in Section 8.1.3]. The existing Object-Oriented Inheritance Metrics studied are DIT (Depth of Inheritance Tree) metric of Chidamber and Kemerer [described in Section 9.1.1], NOC (Number Of Children) metric of Chidamber and Kemerer [described in Section 9.1.2], NAC (Number of Ancestor Classes) and NDC (Number of Descendent Classes) metric of Li’s [described in Section 9.1.3], and TPC (Total Progeny Count), TPAC (Total Parent Count), and TAC (Total Ancestor Count) metric of Brito and Carapuca [described in Section 184.108.40.206, Section 220.127.116.11, and Section 18.104.22.168]. A comparative study of the existing as well as proposed metrics has been made with respect to development time of the classes. It is seen that the proposed metrics correlate very well with the development time and may be used as predictors for the same. The validation of the metrics has been carried on upon data collected from Internal Reports of Birla Institute of Technology, from C++ Projects by Reeta Sahoo, and Java Classes from Java How to Program by H. M. Deitel and P. J. Deitel.
Object-Oriented Cohesion Metrics named µ and EOC (Existence Of Cohesion) have been presented in Section 7.2 and 7.3. µ Metric measures lack of cohesion between methods of class and EOC (Existence Of Cohesion) Metric measures existence of cohesion for any pair of methods in a class. Class Complexity Metric named CMOOD (Complexity Metric for Object-Oriented Design) has been presented in Section 8.2. It measures the complexity of class in Object-Oriented Design in terms of sum of the instance variables (private, public, and protected) in a class, sum of the formal parameters used in all local methods of a class, and sum of the weighted static complexity of a local method in the class. Complexity Metric named FVL (Functions, Variables, and Lines Of Code) has been presented in Section 8.3. It measures the complexity of class in terms of its member functions, instance variables, and the number of non-blank, non-comment lines of code. Further, the dependency of development time of a program on FVL metric has been analyzed. Object-Oriented Inheritance Metric named DITC (Depth of Inheritance Tree of a Class) has been presented in Section 9.2. It measures class inheritance tree in terms of sum of the attributes (private, public, protected, and inherited) and methods (private, public, protected, and inherited) at each level. Inheritance Tree Metric named ITM (Inheritance Tree Metric) has been presented in Section 9.3. It satisfies the Weyuker property 9 (Interaction Increases Complexity) i.e. when two classes are combined, the interaction between classes can increase the complexity of Inheritance Tree Metric (ITM) value. Examples supporting the applicability of the property are also presented.