Object-Oriented Inheritance Metrics in the Context of Cognitive Complexity
It is important to identify modules that are fault prone or exhibit evidence of high cognitive complexity as these modules require corrective actions such as increased source code inspection, refactoring or performing more exhaustive testing. This can lead to a better quality software system. It has been found that inheritance has an impact on the cognitive complexity of a software system. In this paper, two inheritance metrics based on cognitive complexity, one at class level CCI (Class Complexity due to Inheritance) and another at program level ACI (Average Complexity of a program due to Inheritance), have been proposed for object-oriented software systems. Additionally, one more metric MC (Method Complexity) has been proposed to calculate the complexity of a method. These proposed metrics are compared with some well known object-oriented inheritance metrics by calculating their values for three random C++ programs. It has been observed that CCI and ACT are better to represent cognitive complexity due to inheritance than other well known class level and program level inheritance metrics.
cognitive complexity software metrics object-oriented systems