Development metrics measurement level for component reusability evaluation approach (CREA)

ABSTRACT


INTRODUCTION
In software engineering, the trend is changing from the traditional software development approach to the extension and integration with existing systems [1][2][3][4]. An ideal software component reuse technology would enable software developers to quickly use and adapt components in software development. In addition, this technology could be used in all application domains, to reduce the time and effort required to build and maintain software systems and to enhance the quality of software systems by reusing quality and reusable software components [4][5][6]. Software component reuse is considered as an important solution to many software engineering problems. It has been claimed to improve the productivity and the quality of software development [7][8][9]. Many organizations have benefited from using reusable components in reducing the time and cost of software development [10][11][12].
From an exhaustive study in software component reuse, it can be concluded that software component reuse is one of the important factors in facilitating software reuse in new softwar development [13,14]. Software become hard to be developed, understood, managed, controlled and maintained without any software component reuse. Software component reuse plays an important role as it always keeps track of the relationships among the artifacts to help developers or system analysts in performing their tasks. It helps ensure that software development time could be cut down and upon a change has been made and all of impacted components have been reused, plug in into the new system and tested effectively. Among the problems faced by software engineers in component reuse is the difficulty to determine which set of components are suitable to use in new software development. Problem of feature and  [15]. Shambhu and Mishra [16] stated that software component reuse helps reducing production cost and time in a new software development. It posits that utilizing components reusability evaluation approach to provide significant support for facilitating component for reuse in software development. There are many characteristics of component reusability such as portability, adaptability/legibility, understandability and confidence that are mentioned by previous researchers [17][18][19]. The metrics of component reusability were produced based on these characteristics and sub characteristics.
Thus, in this study, a survey was given to eighteen respondents who are considered to be the expert software component users. The respondents consist of eight officers from the Application Development Sections from Information Technology Management Center, and ten computer science lecturers at the School of Informatics and Applied Mathematics. The survey was conducted with the purpose: -To define the characteristics and sub characteristics for software component reusability/component reusability evaluation approach (CREA) based on feedback from actual and experienced software developer (expertise), -To estimated measurement level for each of the predefined metric. The estimation of the measurement level is important to set the range of values based on information from actual users. This paper is organized into four sections. In Section 2, the related works of study are presented. The component reusability evaluation approach (CREA) characteristics are elaborated in Section 3. The metrics definitions for proposed CREA are presented in Section 4. The finding and discussion are presented in Section 5. Lastly, the conclusion and the future study subjects are drawn in Section 6.

RELATED WORKS
In this section, it is discussed the related works of research; components evaluation approaches, reusable components, and characteristics of component evaluation approaches.

Component evaluation approaches
Component evaluation approaches are essential to evaluate the component with reuse or development for reuse; in order to recognize the component reusability according to their quality, originality, and reusability. According to Land et al. [20], component evaluation has two kinds of method such as; (i) component certification that is done by an independent player to deliver a trustworthy valuation of the component, and (ii) component evaluation that is implemented by a system development association.
From the review of literature related to component evaluation, common approaches used in component evaluation are Product Line Component (PLC) Approach, Original Component (OC) Approach, Quality Component (QC) Approach and Reusable Component (RC) Approach. Based on the review, it was found that evaluation of components primarily focuses on their characteristics, sub characteristics, and metrics to support software component evaluation.

Reusable component (RC)
The number of components available in the market keeps increasing nowadays. This is becoming very important to have a component evaluation approach that suit with their needs and reusability evaluation is particularly important when reusing components [17]. In this study, the reusable component (RC) approach was proposed to cater for these needs. One of the technique is used by [17] that applied semi-formal technique to define the metrics in RC. While another technique used to define metric is an informal technique [21]. Compared to OC and QC approach that used one level of validation, RC used two levels of validation to validate the metrics which are anecdotal [21] and industrial experiment [17].
Based on Reuse Based Object Oriented Technology (REBOOT) model [22], the RC approach has been proposed for evaluating reusable components. This approach includes four components i.e. understanding, adaptability/ flexibility, portability, and confidence/ probability. Every characteristic has their own sub characteristics. The purpose of the RC is to measure the reusability of components in order to realize the reuse of component effectively and to identify the best components in terms of their reusability.

Characteristics of component evaluation approaches
Referring to the previous studies, the characteristics for component evaluation approaches such as, PLC, OC, QC and RC approaches. There are fifteen characteristics for component evaluation such as functionality, component replacetability, functional commonality, applicability, non-functional commonability, variability richness, tailorability, understandability, reliability, usability, efficiency, maintainability, portability, adaptability (flexibility), and confidence/ probability [21,23].

COMPONENT REUSABILITY EVALUATION APPROACH (CREA) 3.1. Software component evaluation characteristics and sub characteristics
In order to determine the characteristic and sub characteristic of the proposed approach, three models are adopted which is a Reboot model [22], Cardino model [18] and Washizaki model [17]. Reboot model consist of four characteristics and nine sub characteristics, whereas Cardino model consist of four characteristics and six sub characteristics and Washizaki model consist of three characteristics and four sub characteristics. In summary, the proposed approach combines the software reuse process model that has been modified with the characteristic and sub characteristic that adopted from three models as shown in Figure 1 [24].  [17,[25][26][27][28]. The result for all metrics will be used as an input to the fuzzy inference system (FIS) for measuring the reusability level of the component (overall component reusability).

Value of component documentation level (VCDL)
The documentation level for the component indicates whether documentation for every method of the classes of the component is documented (available). It can specify existence of the component documentation by checking the documentation of every method that exists on classes of the component. According to Hristov et al. [29], this metric can calculate by the amount, quality, completeness and existence of legal terms and conditions of documentation in the components. Washizaki et al. [17], used existence of meta-information exists or not for the components as a metric to calculate documentation. In this study it used amount of documentation for the components to calculate this metric. Definition: VCDL is the level of documentation for the component c. It is defined as the number of documentation for the methods that is included in the component c divided by the total number of documentation for the methods that should be in the component. VCDL for a component is computed by (1): where, c is a component/package, Nd(c) is presented to a number of documentation for methods in c, and Ad(c) is a total number of methods that should be in c.

Value of component observability (VCO)
The important thing contributing to the observability for the component is the number of read methods provided by a component [17]. Singh and Tomar [30], Koteska and Velinor [31] referred Washizaki metrics in estimation component reusability in their paper. This study used getter method of components for calculating this metric.
where, c is a component/package, Gm(c) is a number of getter method in c, Am(c) is a total number of method in c, and n is a number of classes in c

Value of Component Customizability (VCC)
Programming language, adapter and appropriate methods and interfaces are used to calculate metrics for adaptability [29]. Jatain and Gaur [32] and Washizaki et al. [17], used a number of write/wrote methods provided by the component to calculate customization metrics. This study also used a setter method of component to calculate this metric.
Definition: Component Customizability is the number of setter method for all classes implemented in the component. Value of Component Customizability for a component is calculated by (3): where, c is presented to a component/package, Sm(c) is a number of setter method in c, Am(c) is a total number of method in c, and n is a number of classes in c.

Value of Component fan-in (VCFi)
The fan in of a class is the number of its immediately superordinate i.e. parent classes [33]. Fan in metrics measure the number of classes that depend on a given object [34].

Value of Component fan-out (VCFo)
The fan out of a class is the number of its immediately subordinate classes [33]. Fan out metrics measure the number of classes on which a given class depends [34]. Definition: VCFO is the value of fan-out for all classes implemented in component c. Value of the component fan-out (VCFO) of component is calculated by the following expression as (5): where, c is a component/ package, Fo(c) is a number of fan-out in c, Af(c) is a total number of fan in c, and n is a number of classes in c. These metrics were used to measure overall component reusability (level of component reusability) using fuzzy logic technique.

Metrics measurement
A survey is conducted to estimated measurement level for each of the predefined metric, i.e. VCDL, VCC, VCO, VCFi and VCFo. The estimation of the measurement level is important to set the range of values based on information about the actual users [35]. The value of the metric is from 0 to 1 [17]. This study proposed approach and implement the idea of using low, medium and high to calculate reusability level for the reuse component.  Table 1 shows the measurement levels for five metrics, VCLD, VCO, VCC, VCFi, and VCFo. The measurement level can be divided into three levels which is low, medium and high. -For VCLD, the measurement level for low, medium and high is 0 to 0.37, 0.35 to 0.71 and 0.69 to 1.0 respectively. -As for VCO, the measurement level for low is 0 to 0.37, for medium is 0.34 to 0.70 and for high is 0.68 to 1.0. -While, for VCC, the measurement level for low, medium and high is 0 to 0.35, 0.36 to 0.71 and 0.68 to 1.0 respectively. -For VCFi, the measurement level for low is 0.67 to 1.0, followed by medium 0.34 to 0.68 and high 0 to 0.35 respectively. -Lastly for VCFo, the measurement level for low is 0.69 to 1.0, for medium is 0.36 to 0.71 and for high is 0 to 0.69 correspondingly. The result presented in Table 1, shown that the measurement levels for low, medium, and high contain an uncertainty value. Thus, in this situation, fuzzy logic is very suitable to be applied in order to determine the reusability level for the component in Table 1. Reason of choosing fuzzy logic to calculate the uncertainty will be explained in the future work.

CONCLUSION
This study describes the proposed approach, CREA. It also describes the calculation of the proposed reusability metrics and the reusability level of components. Even though the characteristics used for this study are the same with others evaluation model [17,36], but for understandability; different sub characteristic for documentation level of the component was used. The metrics used for this evaluation are also different from the other models. These enhanced metrics were suited to the component features (setter method, getter method, fan in, fan out, and documentation) that were evaluated in this study. The metrics results of the components are used as input to the FIS, while the output is the reusability level for the component, automatically calculated by CREA tool which is a future work for this study. He has been an academic staff at School of Computing for more than twenty years (since 1997). He is an active researcher with a number of past and current projects. His research interest covers various SE knowledge areas based on the motivation to reduce the cost of development and maintenance as well as to improve the quality of large and complex software systems. His work has been supported by numerous research grants totaling in excess of RM 1 million.