Paper Menu >>
Journal Menu >>
![]() Journal of Software Engineering and Applications, 2011, 4, 123-128 doi:10.4236/jsea.2011.42013 Published Online February 2011 (http://www.SciRP.org/journal/jsea) Copyright © 2011 SciRes. JSEA Analysis of Inconsistencies in Object Oriented Metrics Ahmed M. Salem1, Abrar A. Qureshi2 1Department of Computer Science, California State University, Sacramento, USA; 2Department of Mathematics and Computer Science, University of Virginia’s College at Wise, Virginia, USA. Email: salema@ecs.csus.edu, aqureshi@uvawise.edu Received December 17th, 2010; revised January 25th, 2011; accepted January 28th, 2011. ABSTRACT Software Metrics have been proposed for procedural and object oriented paradigms to measure various attributes like complexity, cohesion, software quality, and productivity. Among all of these, “Complexity” and “Cohesion” are consi- dered to be the most important attributes. As object oriented analysis and design appears to be at the forefront of soft- ware engineering technologies, many different object-oriented complexity and cohesion metrics have been developed. The aim of the paper is to compare some of the complexity and cohesion metrics and to analyze these metrics and ex- pose their inconsistencies. The paper provides a brief introduction of CK and Morris’s metrics for calculating the com- plexity and cohesion of a software. The inconsistencies in these methods are exposed by providing various examples. The paper concludes by proving inconsistencies in CK’s cohesion matrices and Morris’s complexity matrices. Keywords: Software Metrics, Object Orient Systems 1. Introduction Object oriented design and development has been the cornerstone for many development projects. With the in- crease in the use of object oriented methods there is a growing need to improve current practices in object deve- lopment and in particular software measurement and me- trics. A great deal of research work has been done with respect to object oriented measurement and metrics. The focus has been on developing various object-ori- ented metrics to measure software quality, productivity, complexity, coupling, coh esion. More research and atten- tion has been given to complexity and cohesion which constitute two of the most important attributes. Complex- ity of a class can be defined as the number of methods used in a class whereas cohesion can be defined as the measure of the degree to which elements of a module relates to one another. Cohesion implies the tightness among the components of a software module. Approaches of how to measure complexity and cohe- sion of the object oriented programs has become an im- portant research area. Many object oriented complexity and cohesion metrics have been proposed in [1-5]. Vari- ous studies have been performed on these metrics but not many object oriented metrics has achieved a wide spread use or standard. Even in [6-8] inconsistencies have been shown in various object oriented metrics. In this research work some of complexity and cohesion metrics proposed for object oriented systems have been compared and their inconsistencies were discussed. The first section of this paper introduces the basic concepts used in object orien- ted metrics and provides a description of some existing complexity and cohesion measures. The second section addresses the complexity and cohesion metrics proposed by CK and Morris. In the third section, an analysis of the complexity and cohesion metrics is provided. The paper concludes with a conclusion and final remarks. 2. Related Work Measurement is the process by which numbers or sym- bols are assigned to the attributes of entities in the real world to describe them according to clearly defined rules. Software metrics are units of measurement and play an important r ol e in the so ftware enginee ri n g pr ocess. A number of traditional metrics were proposed for structural techniques, but with the advancement of Object Oriented Methodology (inheritance, polymorphism etc) the traditional metrics were no longer useful to measure Object Oriented systems. In an attempt to measure the attributes of object oriented systems many researchers have proposed various metrics like CK, MOOD, Morris, ![]() Analysis of Inconsistencies in Object Oriented Metrics Copyright © 2011 SciRes. JSEA 124 Chen and Li etc. Reference [9] presents a survey of ob- ject oriented design metrics and identifies a set o f metrics that have effect on design quality attributes. In [10] the authors investigate and explain 22 different object orien- ted metrics proposed by various researchers. However, none of these metrics have been able to acquire an accep- ted standard. Furthermore, some of these proposed metri- cs are only useful and applicable to measure only some types of object oriented systems. This has been and re- mains to be a challenge in software engineering. Complexity and Cohesion are two important attributes in object oriented systems and brief description of each is outlined below: 2.1. Complexity Measures The complexity of an object class can be defined as the cardinality of its set of properties and it can be measured in terms of the depth of inheritance. In object-oriented design there is a need to develop new metrics for class of objects and their associated children of the class. This concept relates to the complexity as the depth of inherit- ance indicates the extent to which the class is influenced by the property of its ancestor and number of children indicates the potential impact on descendant. The depth of inheritance and number of children collectively indi- cate the genealogy of a class. Various other complexity metrics have been proposed and two complexity metrics, proposed by CK and Morris, are discussed and compared. 2.2. Cohesion Measures Cohesion can be defined as the interamodular functional relatedness of a software module. Cohesion is commonly categorized into seven levels (ranging from low cohesion to high cohesion): coincidental, logical, temporal, proce- dural, communicational, sequential and functional. Low cohesion modules for example are modules with coinci- dental cohesion, are indicative of a module that performs two or more basic functions. High cohesion modules have functional cohesion which indicates that modules perform only one basic function. In such modules all module components need to perform the same task which makes functional cohesion is the most desirable among all of them. Many researchers have proposed their own cohesion metrics and some of which are CK’s lack of cohesion, Montazeri’s connectivity Metrics, Chen and Lu’s cohesion measures, Bieman/Kang’s class cohesion measures and H. Morris’s Degree of cohesion of objects. Some research has been done on existing object orien- ted metrics and studies found inconsistencies among them. Some inconsistencies have been found in the most popular object oriented metrics CK which wads proposed by Chidamber and Kemerer. There are also inconsisten- cies in the cohesion metrics which have been shown in [6,8]. In [6] Bindu Gupta has compared the existing co- hesion measures with the properties of cohesion to show the inconsistencies whereas in [7,8] they showed that Lack Of cohesion Metric is inconsistent as it gives the same value of LCOM to both less cohesive and highly cohesive class. In the next section CK’S and Morris’s complexity & cohesion metrics are discussed. 3. CK Metrics CK’s metrics have been most readily used. CK’s metrics contain fewer flaws than any other metrics. The follow- ing is a brief discussion on CK’s metrics. 3.1. CK’s Depth of Inheritance CK’s metrics have used McCabe’s complexity to meas- ure the complexity of an object oriented system. CK’s Depth of Inheritance metrics is directly related with the complexity of an object. It relates to the notion of scope of properties, i t i s a measur e of how many ancestor classes can potentially affect this class. The deeper the class is in its hierarchy, the greater the number of methods it is likely to inherit, making it more complex. Deeper trees consti- tute greater design complexity since more methods and classes are involved. C&K used McCabe’s Cyclomatic number to measure the complexity of a class. As detailed in [7,8] McCabe’s cyclomatic number can be calculated by subtracting total number of nodes of a tree from total number of edges of a tree and by adding 2 to th e result of subtraction. So McCabe’s Cyclomatic Number = E – N + 2 {where E is total no of edges, N total no of nodes}. Then com- plexity = McCabe’s cyclomatic number/total no of ob- jects. Consider the inheritance tree in Figure 1. The Cyclo- matic Number for the tree would be calculated as fol- lows, A BCD E FGH Figure 1. Inheritance tree of objects with complexity 1/8. ![]() Analysis of Inconsistencies in Object Oriented Metrics Copyright © 2011 SciRes. JSEA 125 Cyclomatic Number = E – N + 2 = 7 – 8 + 2 = 1 Thus the complexity would be, = Cyclomatic number/total number of objects = 1/8. 3.2. CK’s Lack of Cohesion Measures CK’s Lack of Cohesion metrics are used to measure the cohesion of an object. It uses the concept that if an object has more number of pairs of methods who shares their instances than the number of method pairs who don’t share each other’s instances then the object is classified as cohesive. The following example will provide a more clear view of Lack of Cohesion metrics: Suppose there are three methods in an object called M1, M2, M3 and I1, I2, I3 are instance variables respectively. Then there is P and Q as PIi,IjIiJj empty QIi,IjIiJi nonempty LCOMPQPQ0 otherwise Let suppose I1 = a, b, c, d, e I2 = b, c, d I3 = f, g Now I1I2 = b, c, d, non empty I1I3 = empty I2I3 = empty PTotal no of empty sets2 QTota l no. of no n empty sets1 LCOM = 1 More similarities mean lower value of LCOM. Con- sider the following example with fewer similarities be- tween the objects. I1 = a, b, c I2 = d, e, f I3 = i, k I4 = a, g, h Now I1I2 = empty I1I3 = emp ty I1I4 = a I2I3 = empty I2I4 = empty I3I4 = empty PTotal no. of empty sets5 QTotal no. of non empty sets1 Thus LCOM = 4. 4. Morris’s Metrics Morris proposed a metric suite for object oriented sys- tems in terms of tree structures. And following are Mor- ris’s complexity and cohesion metrics: 4.1. Morris’s Complexity Metrics Morris defined complexity of an object oriented systems in terms of depth of a tree. Depth of a tree can be meas- ured in terms of number of sub nodes of a tree. The more the number of sub nodes of tree the more complex the system. So complexity of an object is equal to the depth of tree or total number of sub nodes . The depth of tree displayed in Figure 2 is 3. Thus ac- cording to Morris’s Complexity Metric the co mplexity of objects of the tree is equal to 3. The depth of the inheritance tree in Figure 3 is equal to 1. Thus the complexity of objects on tree is also equal to 1. A BCD EFG Figure 2. Inheritance tree of objects with depth 3. A BCD Figure 3. Inheritance tree of objects with depth 1. ![]() Analysis of Inconsistencies in Object Oriented Metrics Copyright © 2011 SciRes. JSEA 126 4.2. Morris’s Degree of Cohesion CK’s proposed metrics for cohesion only gives the cohe- siveness of a class as either low or high. Morris proposed a cohesion metrics which is not bound to only two values— high and low. Morris defined a new cohesion metrics in his thesis in terms of Fan In. This can be defined as: “Fan-In” of a module M is the number of local flows that terminate at M, plus the number of data structures from which information is retrieved by M [11]. In simple words Fan In is the total number of inputs received by a method. Degree of cohesion of objects = total number of Fan- In/total number of objects. For example consid er the data structure displayed in Figure 4. The arrow heads show the fan-ins to the object. Thus according to Morris’s, Degree of cohesion = total number of Fan-In/total number of objects. Degree of cohesion = 11/7. 5. Inconsistencies As we analyze CK’S and Morris’s Metrics, inconsisten- cies have been found in their metrics. CK’s Lack Of co- hesion Metrics and Morris’s complexity metrics are in- consistent and these inconsistencies are discussed in this section. 5.1. CK’s Lack of Cohesion Metrics In software metric’s CK’S metrics are most widely used but these metrics have some inconsistencies, and accord- ing to [7,8] LCOM doesn’t distinguish two dissimilar entities as its shows same value of LCOM for two dif- ferent classes with different cohesiveness. LCOM only shows low cohesion or a high cohesion for objects even if some objects have medium cohesiveness. A BCD E F G Figure 4. Data structure describing fan-ins to various ob- jects with Degree of Cohesion = 11/7. In Figure 5(a) and 5(b) two different classes are shown with their methods {Ii, Ji}. In Figure 5(a) according to CK, value of LCOM will be 8 as |P| = 9 and |Q| = 1 and |P| – |Q| = 8 Only QI4,J4I5,J5 is a non-empty set and all other are empty pairs. I1 I2 I3 I4 I5 J1 J2 J3 J4 J5 (a) I1 I2 I3 I4 I5 J1 J2 J3 J4 J5 I6 I7 I8 J6 J7 J8 (b) Figure 5. (a) Mapping between methods (Ii) and instance variables (Ji) with LCOM = 8; (b) Mapping between Me- thods (Ii) and Instance variables (Ji) with LCOM = 8. ![]() Analysis of Inconsistencies in Object Oriented Metrics Copyright © 2011 SciRes. JSEA 127 In Figure 5(b) there are 18 empty pairs (|P| = 18) and 10 non empty pairs (|Q| = 10) of (Ii, Ji) so |P| – |Q| = 8. Hence both classes have same cohesion value. But from the image it can be seen that class (b) is more cohesive than class (a). Hence LCOM doesn’t distinguish between two dissimilar entities or we can say LCOM does not represent a precise value of cohesiveness of a class. In [6], LCOM measure is compared with various basic properties of cohesion measure, LCOM satisfies many properties but not all, as minimum value of LCOM is zero but maximum value is not defined. 5.2. Morris Complexity Metrics Morris’s complexity metrics measure the complexity of an object as the depth of its tree structure. To show in- consistencies in this metrics we have taken the measure- ment of two classes by using CK’s complexity metrics and Morris’s Cohesion metrics. Basically a class’s cohe- siveness and complexity are interrelated. If a class is highly cohesive then it is obviou s it will have more com- plexity. But the Morris’s complexity metrics doesn’t obey this basic law. Let’s have two modules as shown in Fig- ure 6(a) and Figure 6(b). By measuring the complexity of modules shown in Figure 6(a) and Figure 6(b) using Morris’s Complexity Metrics, it can be seen that module given in Figure 6(b) is more complex than module given in Figure 6(a). For example, Number of sub nodes in Figure 6(a) is 1 and in Figure 6(b) the number of sub nodes is 5. Hence module in Figure 6(b) has more complexity than module given in Figure 6(a). Let us suppose that these results are true. The cohe- siveness of module given in Figure 6(a) using Morris’s Cohesion Metrics, is measured as the degree of cohesion = 10/6, where to tal nu mber o f fa n- in for module is 10 an d total number of objects are 6 {fan-in for A = 5 and for B, C, D, E, F fan-in = 1, total fan-in = 5 + 1 + 1 + 1 + 1 + 1 = 10}. Now if we measure the cohesiveness for second module given in Figure 6(b), results are same and for Figure 6(b) Degree of cohesion of objects= 10/6. Now both modules have same cohesiveness but dif- ferent complexities. So either Morris’s cohesion metrics is inconsistent or complexity metrics is inconsistent. A B CDE F (a) A B C D E F (b) Figure 6. (a) Fan-ins between modules with degree of cohe- sion 10/6 and complexity 1; (b) Fan-ins between modules with degree of cohesion 10/6 and complexity 5. In the next step we will now measure the complexity of those modules using CK’s complexity metrics. CK’s complexity measures complexity in terms of McCabe’s Cyclomatic number and therefore complexity of a module given in Figure 6(a) = (McCabe’s Cyclomatic No/Total number of Metho ds ) = (5 – 6 + 2)/6 = 1/6 Where McCabe’s cyclomatic number = e – n + 2 {where e total no of edges, n total no of nodes} Now if we measure the CK’s complexity for module given in Figure 6(b), then the Complexity = (5 – 6 + 2)/6 ![]() Analysis of Inconsistencies in Object Oriented Metrics Copyright © 2011 SciRes. JSEA 128 = 1/6. So both classes have the same complexity values, which in turn show that Morris’s complexity metrics is incon- sistent. 6. Conclusions CK’s cohesion metric doesn’t distinguish between two classes which have different cohesiveness, it shows both classes have LCOM value =8. The problem is that LCOM value can be either a non-zero value if |P| > |Q| or 0 oth- erwise, which means low cohesion or high cohesion. This clearly shows that CK’s is not able to distinguish a value of cohesion between 0 and any other non-zero value or between a class with high cohesion and a class with me- dium cohesion, where as Morris’s cohesion metrics doesn’t bound to only two values of cohesiveness. They can provide a precise value of class cohesiveness. Morris’s complexity metrics shows that the class in Figure 6(b) is more complex than the class given by Figure 6(b). However, both classes have the same cohe- siveness and so should be equally complex. This paper documented that coh esion metrics proposed by CK and complexity metrics proposed by Morris both have some inconsistencies. We feel that more it will be more beneficial to use CK’S complexity metrics and Morris’s cohesion metrics. The paper also demonstrated the need for refining these metrics and developing new object oriented metrics. REFERENCES [1] S. R. Chidamber and C. F. Kemerer, “Towards a Metric Suite for Object Oriented Design,” Proceedings of OOP- SLA Conference on Object-Oriented Programming Sys- tems, Language and Applications, 6-11 October 1991, pp, 1-18. doi:10.1145/117954.117970 [2] S. R. Chidamber and C. F. Kemerer, “Towards a Metric Suite for Object Oriented Design,” IEEE Transactions on Software Engineering, Vol. 20, No. 6, 1994, pp. 476-493. doi:10.1109/32.295895 [3] J. Bieman and L. Ott, “Measuring: Functional Cohesion,” IEEE Transactions on Software Engineering, Vol. 20, No. 8, 1994, pp. 644-657. doi:10.1109/32.310673 [4] J. Bieman and B.-K. Kang, “Cohesion and Reuse in an Object Oriented System,” Software Engineering Notes, 1995, pp. 259-262. [5] L. C. Briand, J. Daly a nd J. Wust, “A Unified Framework for Cohesion Measurement in Object-Oriented Systems,” Empirical Software Engineering, Vol. 3, No. 1, 1998, pp. 65-117. [6] Bindu Gupta, “A Critique of Cohesion Measures in Ob- ject Oriented Paradigm,” Master’s Thesis, Michigan Technological University, Houghton, 1997. [7] S. Sunnit and R. S. Salaria, “Critical Analysis of Incon- sistencies in CK and MOOD Metrics,” 2nd ACIS Interna- tional Conference on Software Engineering Research, Management and Applications, Los Angeles, 5-7 May 2004. [8] S. Sunnit and R. S. Salaria, “Analysis of CK and Mood Metrics for Inconsistencies and Prediction of Quality Attributes,” November 2007. [9] S. R. Ragab and H. H. Ammar, “Object Oriented Design Metrics and Tools a Survey,” The 7th International Con- ference on Informatics and Systems, Cairo, 28-30 March 2010, pp. 1-7. [10] K. K. Aggarwal, Y. Singh, A. Kaur and R. Malhotra, “Empirical Study of Object-Oriented Metrics,” Journal of Object Technology, Vol. 5, No. 8, 2006, pp. 149-173. doi:10.5381/jot.2006.5.8.a5 [11] N. Fenton, “Software Metrics: A Rigorous and Practical Approach,” 1998. |