THEORETICAL VALIDATION OF COHESION METRICS IN OBJECT ORIENTED SYSTEMS IRMAN HERMADI, KHALID EL-BADAWI, and JARALLAH AL-GHAMDI Department of Information and Computer Science King Fahd University of Petroleum and Minerals, Dhahran, Saudi Arabia {irmanher, badawi, jaralla}@ccse.kfupm.edu.sa ABSTRACT One of the fundamental concepts of object-oriented (OO) systems is to build high quality software especially in the software industry. Therefore, the software developed using this paradigm is expected to be more reliable, easier to maintain, and more likely to be reused. Furthermore, effective control of development projects requires the use of sophisticated metrics for software quality. This, in turn, has lead to an increasingly large number of new measures being proposed for quality design principles such as cohesion. We describe state-of-the-art of five cohesion metrics. Tight Class Cohesion (TCC) and Loose Class Cohesion (LCC) proposed by Bieman and Kang, and Class Connected Metric (CCM), Connected Class Connection Metric (CCCM), and Modify Class Connection Metric (MCCM) proposed by Wasiq. In order to assess these measures, four different frameworks are presented which examine the same concept in different ways. A critique analysis for these frameworks is also provided. Finally, we provide a summary of our results in the application of these frameworks to those metrics. Keywords: cohesion, object-oriented, software metrics, measurement. 1. INTRODUCTION To produce more reliable and maintainable software, many researchers have measured an important attribute of the procedural and OO paradigm, namely, cohesion. Cohesion represents the tightness of the components inside a class. It has been claimed that the more cohesive a module the easier it is to understand and maintain [1]. The concept of cohesion is well understood in the procedural paradigm with measures supported by measurement theory. Module cohesion in the procedural paradigm is a function or procedural level measure and it can range from most desirable, functional cohesion, to the least desirable, coincidental cohesion [2]. Module cohesion in the OO system is defined in term of cohesion of class. The cohesion inside a class is very interesting per se, since this internal attribute can be used to measure some other external attributes through mathematical model. Both Bieman et al. and Wasiq proposed a set of metrics to measure the cohesion of a class. Indeed, we just could not use these metrics straightforward for our needs to assess the software since there is no guarantee that the metrics are working properly. In other words, we do not know whether the metrics really measure the attribute of software that we want to measure or not. Are the metrics not violating the measurement theory in term of representation condition? Therefore, in this paper we will examine these metrics to determine if they were proper numerical characterization of cohesion. By applying four different framework models against these metrics, we suppose to be able to prove if they satisfy the properties specified in each framework. The frameworks are Hitz and Montazeri [5], Briand et al. [6, 7], Chae et al. [8], and Simon et al. [9]. The rest of this paper is organized in the following manner. In the next coming section a brief description of some basic concepts of object-oriented system are introduced. While section 3 lists five existing cohesion metrics that are going to be validated, section 4 and 5 presents four frameworks to assess cohesion metrics and their analytical critiques, respectively. The theoretical validation for the metrics proposed by Bieman and Wasiq are described in the two respective sections 6 and 7. The last section follow is conclusion. 2. BACKGROUND 2.1. CONCEPTS IN OO SYSTEMS The fundamental concepts of OO presented in this section are based on [1]. A class is a template specifying state and behavior of objects. Data abstraction encapsulates the primary data types that are built-in in a programming language to the desired data types that the system needed; usually they are user- defined-type. Information hiding distinguishes between visible and hidden parts of a class and in general consists of a class definition. The visible part is called the specification or interface of a class and in general consists of a set of method specifications. The hidden part is called the implementation of a class and consists of the implementation of the methods and the definition of the instance variables. A class may be related to other classes by an inheritance relationship, which inherits instance