<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">CN</journal-id><journal-title-group><journal-title>Communications and Network</journal-title></journal-title-group><issn pub-type="epub">1949-2421</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/cn.2016.83018</article-id><article-id pub-id-type="publisher-id">CN-69828</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Software Reusability Classification and Predication Using Self-Organizing Map (SOM)
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Amjad</surname><given-names>Hudaib</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Ammar</surname><given-names>Huneiti</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Islam</surname><given-names>Othman</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Computer Information Systems, King Abdullah II for Information Technology, The University of
Jordan, Amman, Jordan</addr-line></aff><pub-date pub-type="epub"><day>14</day><month>07</month><year>2016</year></pub-date><volume>08</volume><issue>03</issue><fpage>179</fpage><lpage>192</lpage><history><date date-type="received"><day>26</day>	<month>July</month>	<year>2016</year></date><date date-type="rev-recd"><day>accepted</day>	<month>14</month>	<year>August</year>	</date><date date-type="accepted"><day>17</day>	<month>August</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  Due to rapid development in software industry, it was necessary to reduce time and efforts in the software development process. Software Reusability is an important measure that can be applied to improve software development and software quality. Reusability reduces time, effort, errors, and hence the overall cost of the development process. Reusability prediction models are established in the early stage of the system development cycle to support an early reusability assessment. In Object-Oriented systems, Reusability of software components (classes) can be obtained by investigating its metrics values. Analyzing software metric values can help to avoid developing components from scratch. In this paper, we use Chidamber and Kemerer (CK) metrics suite in order to identify the reuse level of object-oriented classes. Self-Organizing Map (SOM) was used to cluster datasets of CK metrics values that were extracted from three different java-based systems. The goal was to find the relationship between CK metrics values and the reusability level of the class. The reusability level of the class was classified into three main categorizes (High Reusable, Medium Reusable and Low Reusable). The clustering was based on metrics threshold values that were used to achieve the experiments. The proposed methodology succeeds in classifying classes to their reusability level (High Reusable, Medium Reusable and Low Reusable). The experiments show how SOM can be applied on software CK metrics with different sizes of SOM grids to provide different levels of metrics details. The results show that Depth of Inheritance Tree (DIT) and Number of Children (NOC) metrics dominated the clustering process, so these two metrics were discarded from the experiments to achieve a successful clustering. The most efficient SOM topology [2 &#215; 2] grid size is used to predict the reusability of classes.
 
</p></abstract><kwd-group><kwd>Component Based System Development (CBSD)</kwd><kwd> Software Reusability</kwd><kwd> Software Metrics</kwd><kwd> Classification</kwd><kwd> Self-Organizing Map (SOM)</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Reuse-Based Software Engineering “is a software engineering strategy where the development process is geared to reusing existing software” [<xref ref-type="bibr" rid="scirp.69828-ref1">1</xref>] . There are many advantages that are referred to reusability, such as cost and time reduction, increasing the quality of software [<xref ref-type="bibr" rid="scirp.69828-ref2">2</xref>] , reducing the cost of implementation [<xref ref-type="bibr" rid="scirp.69828-ref3">3</xref>] .</p><p>Software metrics is “a measure of some property of software artifacts or its specifications” [<xref ref-type="bibr" rid="scirp.69828-ref4">4</xref>] . Software metrics can be used as indicator of software quality, help the project managers to assess and control the development lifecycle and help the developers to evaluate the quality of software [<xref ref-type="bibr" rid="scirp.69828-ref5">5</xref>] . Using metrics becomes manifest in reusability measurement in Object-Oriented (OO) paradigms [<xref ref-type="bibr" rid="scirp.69828-ref6">6</xref>] .</p><p>Reusability is an important aspect in Component Based System Development (CBSD) [<xref ref-type="bibr" rid="scirp.69828-ref7">7</xref>] . Software components could be programs, part of programs, classes, modules, even architectures and test cases [<xref ref-type="bibr" rid="scirp.69828-ref8">8</xref>] . Component can be viewed as an independent “black box” with a high level of abstraction, and has a public interface to integrate with other components. The ability to define the reusable components becomes critical task to avoid the failure of reuse, especially in OO components [<xref ref-type="bibr" rid="scirp.69828-ref9">9</xref>] . Analyzing software metric values will help developers to identify the most suitable reusable components, to avoid developing components from scratch [<xref ref-type="bibr" rid="scirp.69828-ref5">5</xref>] .</p><p>This paper proposes Object Oriented software reusability classification and prediction model. The prediction model uses software metrics to predict the ability of reusing components. By adopting the prediction model, we can define which components can be reused in an early stage of software development. This model can be used continuously to assess the ability of reusing existing components using the Self-Organizing Map (SOM) technique.</p><p>In this paper, we applied SOM as a clustering technique in order to help in categorizing the reusable software components using Chidamber and Kemerer (CK) metrics suite. The classification process is based on software metrics values to discover the component reusability level (High Reusable, Medium Reusable and Low Reusable).</p><p>The rest of this paper is organized as follows. Section 2 covers the software reusability concepts and related work. Section 3 provides a brief description of Self-Organizing Map (SOM) as a data classification technique. In Section 4, the methodology followed in this paper is outlined. Section 5 describes the experimental environment and the experiments that have been applied. The analyzed results are also presented in this section.</p></sec><sec id="s2"><title>2. Software Reusability</title><p>Weinreich and Sametinger define the goal of CBSD; is to produce fine-grain components that could be reusable, rather than develop a software system and reuse it as whole. But the reuse of component at a finer level of granularity needs standards to support the connection of these finer components. Existing code is one of the richness assets in legacy systems. OO is a rich method of providing objects that share state and consists of building blocks of software systems which could be reused. Both of classes and components are define the object behavior, and both have a high level of abstraction (interfaces) to define their internal functionality. The components can be implemented using one class or more [<xref ref-type="bibr" rid="scirp.69828-ref10">10</xref>] . Reusing of OO under the component based development approach was accepted as promising reuse methodology [<xref ref-type="bibr" rid="scirp.69828-ref11">11</xref>] . OO classes are hard to be reused, because they are usually depend on each other and don’t work separately [<xref ref-type="bibr" rid="scirp.69828-ref12">12</xref>] .</p><p>Chidamber and Kemerer (CK) metrics is one of the most popular and known software metrics suites. These metrics are Weighted Methods per Class (WMC), Depth of Inheritance Tree (DIT), Number of Children (NOC), Coupling between Objects (CBO), Response for a Class (RFC), and Lack of Cohesion in Methods (LCOM).CK suite was applied in this paper, to measure the reusability. There are rigid reasons for applying traditional CK metrics suite which are, CK metrics have been widely used by researchers and experimented many times, the relationships between these metrics and software quality were validate and proved [<xref ref-type="bibr" rid="scirp.69828-ref6">6</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref13">13</xref>] - [<xref ref-type="bibr" rid="scirp.69828-ref17">17</xref>] . CK metrics are the base of most of the other proposed metrics [<xref ref-type="bibr" rid="scirp.69828-ref18">18</xref>] , and CK metrics have a threshold values which have been investigated in literatures [<xref ref-type="bibr" rid="scirp.69828-ref19">19</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref20">20</xref>] .</p><p>Many studies introduced different methods to evaluate software quality attributes, based on software metrics. In [<xref ref-type="bibr" rid="scirp.69828-ref21">21</xref>] investigate if there is a relationship between the class growth and coupling and cohesion metrics values. Then the authors used statistical methods to measure reusability of components (class) using fan-in and fan-out metrics. The empirical investigation based on the idea that a high value of fan-in coupling metric indicates that class called by many classes, so it is reusable. Low fan-in metric value indicates low coupling and encapsulation. [<xref ref-type="bibr" rid="scirp.69828-ref22">22</xref>] proposed a new metrics to measure the component’s quality attributes, which are complexity, customizability, and reusability The study measures the reusability based on two approaches. The first approach is calculating Component Reusability (CR) based on its interface methods. CR calculates the component itself reusability. The second approach is measuring the reusability level by using Component Reuse level (CRL) metric. CRL metric is based on Line of Code (LOC) metric and the Functionality of the component. [<xref ref-type="bibr" rid="scirp.69828-ref23">23</xref>] proposed a new reusability model, inspired from the reusability model given by REBOOT [<xref ref-type="bibr" rid="scirp.69828-ref24">24</xref>] with the difference of criteria and used metrics. [<xref ref-type="bibr" rid="scirp.69828-ref25">25</xref>] used the factors of previous study and forms empirical evaluation using different java bean components. [<xref ref-type="bibr" rid="scirp.69828-ref13">13</xref>] described nine traditional metrics and define their applicability to define quality attributes. They define five of sex CK's metrics that are related to the reusability evaluation, which are WMC, LCOM, DIT, CBO, and NOC. This paper uses the traditional CK metric suite to predict the software reusability quality factor. The prediction based on using neural network (SOM) to find software reusability level. [<xref ref-type="bibr" rid="scirp.69828-ref4">4</xref>] considered the adaptability, compose-ability and complexity important factors for measuring the reusability. [<xref ref-type="bibr" rid="scirp.69828-ref26">26</xref>] proposed two new metrics relates with the effect of the templates with inheritance in object-oriented software quality The first proposed metric Generic Reusability Ratio (GRr) measure the effect of using templates on the program volume. The second is Effort Ratio (ER) measure the effect of the templates on the whole development efforts. The proposed metrics were motivated by Halstead’s metrics, and were experimented using programs written with and without templates, to measure the impact of using the templates on reusability. [<xref ref-type="bibr" rid="scirp.69828-ref27">27</xref>] validated CK metrics suite using six different systems, to discover the relationship between the metrics. They found there is a relationship between WMC, LCOM, and CBO. The classes with high values of WMC are also have a high values of LCOM and CBO, which lead to high complexity of the system and have a negative impact on the quality attributes like reusability. Low values of NOC and DIT indicates a disregard of inheritance property. The most frequently used metrics are proposed by Chidamber and Kemmerer (CK metrics). Their metrics suite has been proven by researcher that they are targeting the object-oriented quality measurements, as mentioned in [<xref ref-type="bibr" rid="scirp.69828-ref28">28</xref>] .</p><p>In this paper we applied SOM as clustering technique to help in categorizing the reusable software components using Chidamber and Kemerer (CK) metrics suite. The clustering process is based on software metrics values to discover the component reusability level (Reusable, Medium Reusable, and Low Reusable).</p></sec><sec id="s3"><title>3. Self-Organizing Map (SOM)</title><p>Self-Organizing Map (SOM) is one of well-known algorithm in pattern recognition and classification. SOM is an ANN model that is based on competitive learning and is an unsupervised learning paradigm [<xref ref-type="bibr" rid="scirp.69828-ref29">29</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref30">30</xref>] .</p><p>Kohonen’s Self-Organizing Map uses an arranged set of neurons usually in 2-D rectangular or hexagonal grid [<xref ref-type="bibr" rid="scirp.69828-ref31">31</xref>] . Data reduction into 2-D dimensionality from high dimensionality is effective in approximation of similarity relations [<xref ref-type="bibr" rid="scirp.69828-ref32">32</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref33">33</xref>] and also useful for data visualization to help in determining classes or similar patterns [<xref ref-type="bibr" rid="scirp.69828-ref34">34</xref>] . SOM transfers the arbitrary dimensions of incoming input data signals into one or two-dimensional map [<xref ref-type="bibr" rid="scirp.69828-ref35">35</xref>] , and learn or discover the underlying structure of the input data. SOM has two layers of neurons; an input layer and an output layer. Each input vector is fully connected to each neuron in the output layer. The choice of the SOM grid size is determined by the degree of details of the findings; more generalization of finding requires less grid size than more detailed one [<xref ref-type="bibr" rid="scirp.69828-ref36">36</xref>] .</p><p>In SOM grid the similar clusters are neighbors, and different clusters are far from each other on the grid. This is called spatial autocorrelation.</p><p>SOM has been widely used in many applications ranging from image processing [<xref ref-type="bibr" rid="scirp.69828-ref37">37</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref38">38</xref>] , speech recognition [<xref ref-type="bibr" rid="scirp.69828-ref39">39</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref40">40</xref>] , condition monitoring of processes [<xref ref-type="bibr" rid="scirp.69828-ref41">41</xref>] , cloud classification, and micro-array data analysis. In the field of software engineering, SOM has been used in many researches, but not many are concerned with how to identifying metric based reusable components. [<xref ref-type="bibr" rid="scirp.69828-ref42">42</xref>] apply SOM to the description of the software components, in order to categorize these components in repositories that derived from software manual and the results were very promising. [<xref ref-type="bibr" rid="scirp.69828-ref43">43</xref>] compare SOM and GHSOM in clustering software components in the repositories. [<xref ref-type="bibr" rid="scirp.69828-ref44">44</xref>] develop Software Self-Organizing Map (SSOM) that is based on SOM, to classify software modules. [<xref ref-type="bibr" rid="scirp.69828-ref45">45</xref>] proposed a Software Reuse Methodology based on SOM to promote UNIX commands software components reuse. [<xref ref-type="bibr" rid="scirp.69828-ref36">36</xref>] discussed the applicability of SOM in analysis and visualization of software modules, based on its metrics values, to detect software quality measures. The proposed approach is useful for designer to examine and form a deep understating of the clusters to recognize the module measure. [<xref ref-type="bibr" rid="scirp.69828-ref7">7</xref>] define a Neuro-fuzzy model through two main step; the first step was based on SOM to analyzes, evaluates and optimizes reusability for Component Based Software Engineering using CK metrics values, and the second step was using supervised Back propagation Neural Network (BPNN) and fuzzy inference rules applied on CK metric values to categorize the data into Very Low, Low, Medium, High and Very High reusability classes.The original form of SOM that has been proposed by [<xref ref-type="bibr" rid="scirp.69828-ref46">46</xref>] was used in this paper rather any other update forms of SOM algorithm, this is because it is computationally the simplest and the lightest, and it is produce in practise useful results of mapping a high dimensional input vector [<xref ref-type="bibr" rid="scirp.69828-ref47">47</xref>] .</p></sec><sec id="s4"><title>4. The Proposed Methodology</title><p>The objective of this paper is to capture, analyze, and model the effects of software components metrics values on software reusability level. This work uses SOM to define the level of software reusability. The proposed methodology consists of the following phases that are shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>.</p><sec id="s4_1"><title>4.1. Dataset Collection and Preprocessing</title><p>The required dataset for this work was collected from COMETS datasets that is available on the web [<xref ref-type="bibr" rid="scirp.69828-ref48">48</xref>] . We selected Chidamber and Kemerer (CK) metric suite (CBO, DIT, LCOM, NOC, WMC, and RFC) from seventeen metrics in COMETS datasets. The metrics values were collected from the last released versions of selected systems. Three different systems with their CK metrics were selected to be experimented using SOM. CK metrics values were used as attributes for each input vector to SOM. The selected systems are Eclipse JDT, Eclipse PDE, and Hibernate. The number of classes in each system is 1061, 1454, 1173 respectively. The statistical description of each selected system is shown in Tables 1-3 respectively.</p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> The proposed methodology</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-6101596x6.png"/></fig><table-wrap id="table1" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref></label><caption><title> Statistical description of Eclipse JDT dataset</title></caption><table><tbody><thead><tr><th align="center" valign="middle" ></th><th align="center" valign="middle" >CBO</th><th align="center" valign="middle" >DIT</th><th align="center" valign="middle" >LCOM</th><th align="center" valign="middle" >NOC</th><th align="center" valign="middle" >RFC</th><th align="center" valign="middle" >WMC</th></tr></thead><tr><td align="center" valign="middle" >Minimum</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >Maximum</td><td align="center" valign="middle" >222</td><td align="center" valign="middle" >8</td><td align="center" valign="middle" >80,982</td><td align="center" valign="middle" >26</td><td align="center" valign="middle" >661</td><td align="center" valign="middle" >2074</td></tr><tr><td align="center" valign="middle" >Standard deviation</td><td align="center" valign="middle" >21.36</td><td align="center" valign="middle" >1.72</td><td align="center" valign="middle" >2762.65</td><td align="center" valign="middle" >1.99</td><td align="center" valign="middle" >62.81</td><td align="center" valign="middle" >159.24</td></tr><tr><td align="center" valign="middle" >Mean</td><td align="center" valign="middle" >15.87</td><td align="center" valign="middle" >2.62</td><td align="center" valign="middle" >235.36</td><td align="center" valign="middle" >0.65</td><td align="center" valign="middle" >41.57</td><td align="center" valign="middle" >61.60</td></tr><tr><td align="center" valign="middle" >Median</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >22</td><td align="center" valign="middle" >21</td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2"><xref ref-type="table" rid="table">Table </xref>2</xref></label><caption><title> Statistical description of Eclipse PDE dataset</title></caption><table><tbody><thead><tr><th align="center" valign="middle" ></th><th align="center" valign="middle" >CBO</th><th align="center" valign="middle" >DIT</th><th align="center" valign="middle" >LCOM</th><th align="center" valign="middle" >NOC</th><th align="center" valign="middle" >RFC</th><th align="center" valign="middle" >WMC</th></tr></thead><tr><td align="center" valign="middle" >Minimum</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >Maximum</td><td align="center" valign="middle" >129</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >1377</td><td align="center" valign="middle" >108</td><td align="center" valign="middle" >334</td><td align="center" valign="middle" >229</td></tr><tr><td align="center" valign="middle" >Standard deviation</td><td align="center" valign="middle" >17.38</td><td align="center" valign="middle" >1.54</td><td align="center" valign="middle" >80.67</td><td align="center" valign="middle" >3.82</td><td align="center" valign="middle" >38.68</td><td align="center" valign="middle" >28.77</td></tr><tr><td align="center" valign="middle" >Mean</td><td align="center" valign="middle" >17.14</td><td align="center" valign="middle" >2.22</td><td align="center" valign="middle" >19.79</td><td align="center" valign="middle" >0.66</td><td align="center" valign="middle" >34.16</td><td align="center" valign="middle" >20.57</td></tr><tr><td align="center" valign="middle" >Median</td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >21</td><td align="center" valign="middle" >11</td></tr></tbody></table></table-wrap><table-wrap id="table3" ><label><xref ref-type="table" rid="table3"><xref ref-type="table" rid="table">Table </xref>3</xref></label><caption><title> Statistical description of hibernate dataset</title></caption><table><tbody><thead><tr><th align="center" valign="middle" ></th><th align="center" valign="middle" >CBO</th><th align="center" valign="middle" >DIT</th><th align="center" valign="middle" >LCOM</th><th align="center" valign="middle" >NOC</th><th align="center" valign="middle" >RFC</th><th align="center" valign="middle" >WMC</th></tr></thead><tr><td align="center" valign="middle" >Minimum</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >Maximum</td><td align="center" valign="middle" >186</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >13,069</td><td align="center" valign="middle" >28</td><td align="center" valign="middle" >682</td><td align="center" valign="middle" >594</td></tr><tr><td align="center" valign="middle" >Standard deviation</td><td align="center" valign="middle" >14.93</td><td align="center" valign="middle" >1.18</td><td align="center" valign="middle" >747.92</td><td align="center" valign="middle" >1.80</td><td align="center" valign="middle" >48.99</td><td align="center" valign="middle" >38.64</td></tr><tr><td align="center" valign="middle" >Mean</td><td align="center" valign="middle" >11.78</td><td align="center" valign="middle" >1.85</td><td align="center" valign="middle" >115.40</td><td align="center" valign="middle" >0.50</td><td align="center" valign="middle" >26.70</td><td align="center" valign="middle" >18.19</td></tr><tr><td align="center" valign="middle" >Median</td><td align="center" valign="middle" >8</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >8</td></tr></tbody></table></table-wrap><p>The statistical descriptions show that there is a low median and mean for DIT and NOC metrics. That means inheritance is not used much in the systems. This result was also found in [<xref ref-type="bibr" rid="scirp.69828-ref15">15</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref19">19</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref49">49</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref50">50</xref>] .</p><p>Metrics threshold used as quantitative method to define the good qualitative of software quality and useful to identify the high risk classes [<xref ref-type="bibr" rid="scirp.69828-ref51">51</xref>] . The threshold value forms good general view of software to help developer in review software classes [<xref ref-type="bibr" rid="scirp.69828-ref52">52</xref>] . Exceeding the upper bound of threshold value can be considered a problem and a sign of poor design of the software class, so less reusable. Threshold values provide a simple analysis method to define the risky software design. We assume that threshold represent the upper bound as in [<xref ref-type="bibr" rid="scirp.69828-ref53">53</xref>] . The adopted metrics threshold used in this paper is shown in <xref ref-type="table" rid="table4"><xref ref-type="table" rid="table">Table </xref>4</xref>.</p><p>In data preprocessing phase, data should be prepared to be used by any clustering techniques, in order to develop a unified form for all data instances [<xref ref-type="bibr" rid="scirp.69828-ref54">54</xref>] . The used dataset has many records (OO classes) with the value −1 in all metrics; which means that class did not existed in a given time. All records with the value of −1 were ignored and deleted from the dataset; the number of classes before and after cleansing in the selected systems is shown in <xref ref-type="table" rid="table5"><xref ref-type="table" rid="table">Table </xref>5</xref>.</p><p>Then Min-Max normalization method has been adopted in this paper to normalize the selected dataset, using Equation (1) [<xref ref-type="bibr" rid="scirp.69828-ref55">55</xref>] .</p><disp-formula id="scirp.69828-formula918"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/8-6101596x7.png"  xlink:type="simple"/></disp-formula><p>where: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-6101596x8.png" xlink:type="simple"/></inline-formula>are the minimum and maximum values of an attribute A. Min-max normalization maps a value <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-6101596x9.png" xlink:type="simple"/></inline-formula> of A to a value <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-6101596x10.png" xlink:type="simple"/></inline-formula> in the range<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-6101596x11.png" xlink:type="simple"/></inline-formula>.</p></sec><sec id="s4_2"><title>4.2. Reusability Classification Using SOM</title><p>SOM is based on Competitive Learning rule. <xref ref-type="fig" rid="fig2">Figure 2</xref> shows a simple competitive learning network. We can notice that the network is fully connected input neurons (i) to output neurons (o) with weight (<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-6101596x12.png" xlink:type="simple"/></inline-formula>) [<xref ref-type="bibr" rid="scirp.69828-ref35">35</xref>] :</p><p>The algorithm of Kohonen’s SOM can be summarizing as shown in <xref ref-type="fig" rid="fig3">Figure 3</xref>.</p></sec><sec id="s4_3"><title>4.3. Clustering Validation</title><p>Silhouette method is used to measure the clustering validity. Silhouette uses combination of two criteria; separation and cohesion. Separation measures how well the clusters are separated from each other based on distance between clusters centroids. Cohesion measures how well the clusters are cohesion and vectors are closely related to each other in one cluster [<xref ref-type="bibr" rid="scirp.69828-ref50">50</xref>] .</p><p>For a data set D, of n objects, suppose D is partitioned into k clusters,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-6101596x13.png" xlink:type="simple"/></inline-formula>. Silhouette can be computed using the following steps [<xref ref-type="bibr" rid="scirp.69828-ref55">55</xref>] :</p><p>- For each object o ∈ D, find the average distance between o and all other objects in the cluster to which o belongs. Called its value a(o).</p><p>- For each object o ∈ D, find the minimum average distance from o to all clusters to which o does not belong. Called its value b(o).</p><p>- Calculate silhouette coefficient s(o) using Equation 2 [<xref ref-type="bibr" rid="scirp.69828-ref50">50</xref>] :</p><disp-formula id="scirp.69828-formula919"><graphic  xlink:href="http://html.scirp.org/file/8-6101596x14.png"  xlink:type="simple"/></disp-formula><fig-group id="fig2"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Simple competitive learning network.</title></caption><fig id ="fig2_1"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-6101596x15.png"/></fig></fig-group><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> SOM algorithm</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-6101596x16.png"/></fig><table-wrap id="table4" ><label><xref ref-type="table" rid="table4"><xref ref-type="table" rid="table">Table </xref>4</xref></label><caption><title> Threshold values</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Metric</th><th align="center" valign="middle" >Proposed Threshold</th><th align="center" valign="middle" >Reference</th></tr></thead><tr><td align="center" valign="middle" >CBO</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.69828-ref19">19</xref>]</td></tr><tr><td align="center" valign="middle" >WMC</td><td align="center" valign="middle" >20</td><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.69828-ref19">19</xref>]</td></tr><tr><td align="center" valign="middle" >LCOM</td><td align="center" valign="middle" >20</td><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.69828-ref49">49</xref>]</td></tr><tr><td align="center" valign="middle" >DIT</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.69828-ref49">49</xref>]</td></tr><tr><td align="center" valign="middle" >RFC</td><td align="center" valign="middle" >44</td><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.69828-ref19">19</xref>]</td></tr><tr><td align="center" valign="middle" >NOC</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.69828-ref49">49</xref>]</td></tr></tbody></table></table-wrap><table-wrap id="table5" ><label><xref ref-type="table" rid="table5"><xref ref-type="table" rid="table">Table </xref>5</xref></label><caption><title> Data cleansing</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >System Name</th><th align="center" valign="middle" >Version Number</th><th align="center" valign="middle" >Number of original Classes</th><th align="center" valign="middle" >Number of Cleaned Classes</th></tr></thead><tr><td align="center" valign="middle" >Eclipse JDT</td><td align="center" valign="middle" >183</td><td align="center" valign="middle" >1368</td><td align="center" valign="middle" >1061</td></tr><tr><td align="center" valign="middle" >Eclipse PDE</td><td align="center" valign="middle" >191</td><td align="center" valign="middle" >3083</td><td align="center" valign="middle" >1454</td></tr><tr><td align="center" valign="middle" >Hibernate</td><td align="center" valign="middle" >98</td><td align="center" valign="middle" >1216</td><td align="center" valign="middle" >1173</td></tr></tbody></table></table-wrap></sec></sec><sec id="s5"><title>5. Experimental Results and Analysis</title><p>The experiments were applied for each system separately, using the same experiment settings, to standardize the evaluation for each. SOM Grid size and number of epochs were updated in all experiments. Learning rate values in all experiments were as follow:</p><p>Ordering phase learning rate = 0.9</p><p>Ordering phase steps = 1000</p><p>Tuning phase learning rate = 0.02</p><p>Tuning phase neighborhood distance = 1</p><p>While the number of epochs was increasing, the silhouette average values were increasing also. The epoch’s number is then adjusted at 2000, because silhouette became almost stable in all selected systems at this point. Many experiments were obtained on different SOM grid sizes. The experiment with the highest silhouette value is selected. Then the metrics values were analyzed in each cluster to find their relationships with the class reusability level.</p><p>Eclipse JDT system classes were normalized, then they were imported to SOM network to be clustered. Classes were experimented many times in order to find the highest silhouette average value. Experiment number 8 in <xref ref-type="table" rid="table6"><xref ref-type="table" rid="table">Table </xref>6</xref> achieves the highest silhouette average value, so this experiment will be analyzed. The analysis was based mainly on CK metrics average values in each cluster, and also based on the percentage of classes that are exceeding CK metrics threshold values.</p><p>After analyzing each cluster in the Eclipse JDT System, we found that DIT and NOC metrics are dominating the clustering process, which was also found in [<xref ref-type="bibr" rid="scirp.69828-ref36">36</xref>] . There is no obvious trend found between classes in one cluster. Metrics values also were analyzed in each cluster and an obvious common relationship in the same cluster’s classes couldn’t be found. Based on previous observations, the distribution of NOC and DIT metrics values was analyzed in Eclipse JDT System, it was found that 76.2% of the NOC metric classes have 0 values, and 76.3% of classes have the values 1, 2, and 3 in DIT metric. In addition the experimental results show that eliminating NOC and DIT metrics from clustering process may enhance the results. Then the experiments were reapplied after eliminating NOC and DIT metrics from input.</p><p>In <xref ref-type="table" rid="table6"><xref ref-type="table" rid="table">Table </xref>6</xref>, the experimental attempts of Eclipse JDT system are shown. The SOM grid size was changed many times until find the best one, which was for this dataset is [2 &#215; 2] grid size, because it has the highest average of silhouette. Also the <xref ref-type="table" rid="table">Table </xref>shows that when the grid size is changed, the average of silhouette is changed also.</p><p>The silhouette plot of experiment 8 is shown in <xref ref-type="fig" rid="fig4">Figure 4</xref>. The X-axis illustrates the silhouette values. The value of silhouette coefficient is ranging from −1 to 1. Negative value of silhouette is not preferable because it means that object is related to other cluster more than the cluster that is belonging to. Values approaching to 1 are the desirable value; that means the average distance of object to points in the same cluster is greater than the minimum average distance of object to all other clusters. To measure the goodness of overall clustering process, the average silhouette can be used [<xref ref-type="bibr" rid="scirp.69828-ref55">55</xref>] . The Y-axis defines the number of clusters in the grid.</p><p>The classes in each cluster can be classified into one of three main categories. These categories are summarizing the relationship between CK metrics values and reusability quality factor. The categories are:</p><p> Category One: A High Reusable cluster contains classes that are not exceeding threshold values and have lowest values of CBO, LCOM, RFC, and WMC metrics.</p><table-wrap id="table6" ><label><xref ref-type="table" rid="table6"><xref ref-type="table" rid="table">Table </xref>6</xref></label><caption><title> Eclipse JDT experiments attempts</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Experiment No.</th><th align="center" valign="middle" >Grid Size</th><th align="center" valign="middle" >Average of Silhouette</th></tr></thead><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >[10 &#215; 10]</td><td align="center" valign="middle" >0.4937</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >[8 &#215; 8]</td><td align="center" valign="middle" >0.4607</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >[7 &#215; 7]</td><td align="center" valign="middle" >0.4586</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >[6 &#215; 6]</td><td align="center" valign="middle" >0.4437</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >[5 &#215; 5]</td><td align="center" valign="middle" >0.4971</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >[4 &#215; 4]</td><td align="center" valign="middle" >0.5426</td></tr><tr><td align="center" valign="middle" >7</td><td align="center" valign="middle" >[3 &#215; 3]</td><td align="center" valign="middle" >0.6351</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" >[2 &#215; 2]</td><td align="center" valign="middle" >0.7083</td></tr><tr><td align="center" valign="middle" >9</td><td align="center" valign="middle" >[5 &#215; 4]</td><td align="center" valign="middle" >0.5099</td></tr><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >[4 &#215; 3]</td><td align="center" valign="middle" >0.6303</td></tr><tr><td align="center" valign="middle" >11</td><td align="center" valign="middle" >[3 &#215; 2]</td><td align="center" valign="middle" >0.6185</td></tr></tbody></table></table-wrap><fig id="fig4"  position="float"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> Silhouette result of experiment 8 of eclipse JDT system after eliminating NOC and DIT metrics</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-6101596x17.png"/></fig><p> Category Two: A Medium Reusable cluster contains classes that are around threshold values and have the medium values of CBO, LCOM, RFC, and WMC metrics.</p><p> Category Three: A Low Reusable cluster contains classes that are exceeding threshold values and have highest values of CBO, LCOM, RFC, and WMC metrics.</p><p>Based on that, the analysis of each cluster vectors in experiment 8 is shown in <xref ref-type="table" rid="table">Table </xref>7, where Avg. column is the metric average in each cluster. If the Avg. column of one metric in specific cluster is high, that means the classes that included in this cluster had high values of that metric, so they are become less reusable and vice versa. Ex.% column is the percentage of classes that are exceeding metric threshold values. When the percentage is high, it means that there are many classes in this cluster are exceeding the threshold value, so it become also low reusable and vice versa.</p><p>As shown in <xref ref-type="table" rid="table">Table </xref>7 cluster 3 and 4 are Low Reusable clusters, because almost all of the classes in both clusters exceed the threshold values and their averages are very high. Cluster 2 contains the most properly classes to be reusable; it has the minimum values of all metrics, so it is High Reusable cluster. Cluster 1 is Medium Reusable cluster, because the percentage of the classes that exceeding the threshold and averages is less than clusters 3 and 4, and greater than cluster 2.</p><p>Eclipse PDE and Hibernate systems were experimented many times also in order to find the highest silhouettes average values as done in the Eclipse JDT system. The analysis of the results was based mainly on CK metrics average values for each clusters, and also based on the percentage of classes that are exceeding CK metrics threshold values. The same observations were also found in Eclipse PDE and Hibernate systems (no obvious trend between classes and no common relationship in the same clusters classes). In Eclipse PDE system, NOC metric values had 0 in 82.5% of the classes and 81.7% of classes have the values 1, 2, and 3 in DIT metric. In Hibernate system, NOC metric values have 0 in 83.1% of the classes and 77.6% of classes had the values of 1 and 2 in DIT metric. Therefore, the distribution of NOC and DIT were poor, similar to the results found in [<xref ref-type="bibr" rid="scirp.69828-ref15">15</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref19">19</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref49">49</xref>] [<xref ref-type="bibr" rid="scirp.69828-ref50">50</xref>] . Then NOC and DIT metrics were also discarded from input in the experiments as done in Eclipse JDT.</p><p><xref ref-type="table" rid="table">Table </xref>8 and <xref ref-type="table" rid="table">Table </xref>9 show the experimental attempts of Eclipse PDE and Hibernate systems respectively. The Tables show that the best grid size for both systems is also [2 &#215; 2] grid size as Eclipse JDT system, because it has the highest silhouette average.</p><p>The silhouette plots of experiment 8 for both systems (Eclipse PDE and Hibernate systems) are shown in <xref ref-type="fig" rid="fig5">Figure 5</xref> and <xref ref-type="fig" rid="fig6">Figure 6</xref> respectively.</p><p>The results analysis of experiment 8 for Eclipse PDE system, are shown in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>0. It illustrate that cluster 3</p><fig id="fig5"  position="float"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> Silhouette result of experiment 8 of eclipse PDE system after eliminating NOC and DIT metrics</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-6101596x18.png"/></fig><fig id="fig6"  position="float"><label><xref ref-type="fig" rid="fig6">Figure 6</xref></label><caption><title> Silhouette result of experiment 8 of hibernate system after eliminating NOC and DIT metrics</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-6101596x19.png"/></fig><table-wrap id="table7" ><label><xref ref-type="table" rid="table">Table </xref>7</label><caption><title> Results analysis of experiment 8 of eclipse JDT system</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  ></th><th align="center" valign="middle"  colspan="2"  >CBO</th><th align="center" valign="middle"  colspan="2"  >LCOM</th><th align="center" valign="middle"  colspan="2"  >RFC</th><th align="center" valign="middle"  colspan="2"  >WMC</th><th align="center" valign="middle"  rowspan="2"  >NO. OF CLASSES</th></tr></thead><tr><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td></tr><tr><td align="center" valign="middle" >Cluster 1</td><td align="center" valign="middle" >25.2</td><td align="center" valign="middle" >97.3%</td><td align="center" valign="middle" >100.4</td><td align="center" valign="middle" >48%</td><td align="center" valign="middle" >61.4</td><td align="center" valign="middle" >80.4%</td><td align="center" valign="middle" >79.9</td><td align="center" valign="middle" >96.4%</td><td align="center" valign="middle" >225</td></tr><tr><td align="center" valign="middle" >Cluster 2</td><td align="center" valign="middle" >6.7</td><td align="center" valign="middle" >8.8%</td><td align="center" valign="middle" >16.6</td><td align="center" valign="middle" >15%</td><td align="center" valign="middle" >16.4</td><td align="center" valign="middle" >3.4%</td><td align="center" valign="middle" >16.6</td><td align="center" valign="middle" >29.5%</td><td align="center" valign="middle" >706</td></tr><tr><td align="center" valign="middle" >Cluster 3</td><td align="center" valign="middle" >133.3</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >9050</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >1092.6</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >13</td></tr><tr><td align="center" valign="middle" >Cluster 4</td><td align="center" valign="middle" >54.7</td><td align="center" valign="middle" >98.8%</td><td align="center" valign="middle" >1210.3</td><td align="center" valign="middle" >77.8%</td><td align="center" valign="middle" >155.3</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >258.9</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >72</td></tr><tr><td align="center" valign="middle" >Threshold</td><td align="center" valign="middle"  colspan="2"  >13</td><td align="center" valign="middle"  colspan="2"  >20</td><td align="center" valign="middle"  colspan="2"  >44</td><td align="center" valign="middle"  colspan="2"  >20</td><td align="center" valign="middle" ></td></tr></tbody></table></table-wrap><table-wrap id="table8" ><label><xref ref-type="table" rid="table">Table </xref>8</label><caption><title> Eclipse PDE experiments attempts</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Experiment No.</th><th align="center" valign="middle" >Grid Size</th><th align="center" valign="middle" >Average of Silhouette</th></tr></thead><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >[10 &#215; 10]</td><td align="center" valign="middle" >0.4060</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >[8 &#215; 8]</td><td align="center" valign="middle" >0.3840</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >[7 &#215; 7]</td><td align="center" valign="middle" >0.3878</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >[6 &#215; 6]</td><td align="center" valign="middle" >0.4182</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >[5 &#215; 5]</td><td align="center" valign="middle" >0.4636</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >[4 &#215; 4]</td><td align="center" valign="middle" >0.4839</td></tr><tr><td align="center" valign="middle" >7</td><td align="center" valign="middle" >[3 &#215; 3]</td><td align="center" valign="middle" >0.5733</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" >[2 &#215; 2]</td><td align="center" valign="middle" >0.6565</td></tr><tr><td align="center" valign="middle" >9</td><td align="center" valign="middle" >[5 &#215; 4]</td><td align="center" valign="middle" >0.4483</td></tr><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >[4 &#215; 3]</td><td align="center" valign="middle" >0.5688</td></tr><tr><td align="center" valign="middle" >11</td><td align="center" valign="middle" >[3 &#215; 2]</td><td align="center" valign="middle" >0.6029</td></tr></tbody></table></table-wrap><table-wrap id="table9" ><label><xref ref-type="table" rid="table">Table </xref>9</label><caption><title> Hibernate experiments attempts</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Experiment No.</th><th align="center" valign="middle" >Grid Size</th><th align="center" valign="middle" >Average of Silhouette</th></tr></thead><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >[10 &#215; 10]</td><td align="center" valign="middle" >0.4666</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >[8 &#215; 8]</td><td align="center" valign="middle" >0.4468</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >[7 &#215; 7]</td><td align="center" valign="middle" >0.4250</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >[6 &#215; 6]</td><td align="center" valign="middle" >0.4388</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >[5 &#215; 5]</td><td align="center" valign="middle" >0.5260</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >[4 &#215; 4]</td><td align="center" valign="middle" >0.5296</td></tr><tr><td align="center" valign="middle" >7</td><td align="center" valign="middle" >[3 &#215; 3]</td><td align="center" valign="middle" >0.6131</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" >[2 &#215; 2]</td><td align="center" valign="middle" >0.8003</td></tr><tr><td align="center" valign="middle" >9</td><td align="center" valign="middle" >[5 &#215; 4]</td><td align="center" valign="middle" >0.5200</td></tr><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >[4 &#215; 3]</td><td align="center" valign="middle" >0.5754</td></tr><tr><td align="center" valign="middle" >11</td><td align="center" valign="middle" >[3 &#215; 2]</td><td align="center" valign="middle" >0.7090</td></tr></tbody></table></table-wrap><table-wrap id="table10" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>0</label><caption><title> Results analysis of experiment 8 of eclipse PDE system</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  ></th><th align="center" valign="middle"  colspan="2"  >CBO</th><th align="center" valign="middle"  colspan="2"  >LCOM</th><th align="center" valign="middle"  colspan="2"  >RFC</th><th align="center" valign="middle"  colspan="2"  >WMC</th><th align="center" valign="middle"  rowspan="2"  >NO. OF CLASSES</th></tr></thead><tr><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td></tr><tr><td align="center" valign="middle" >Cluster 1</td><td align="center" valign="middle" >22.5</td><td align="center" valign="middle" >91.6%</td><td align="center" valign="middle" >25.16</td><td align="center" valign="middle" >33.1%</td><td align="center" valign="middle" >44.5</td><td align="center" valign="middle" >44.4%</td><td align="center" valign="middle" >25.2</td><td align="center" valign="middle" >56.4%</td><td align="center" valign="middle" >417</td></tr><tr><td align="center" valign="middle" >Cluster 2</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >11%</td><td align="center" valign="middle" >5.5</td><td align="center" valign="middle" >7.1%</td><td align="center" valign="middle" >12.2</td><td align="center" valign="middle" >0%</td><td align="center" valign="middle" >7.56</td><td align="center" valign="middle" >3.9%</td><td align="center" valign="middle" >861</td></tr><tr><td align="center" valign="middle" >Cluster 3</td><td align="center" valign="middle" >85.5</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >160.9</td><td align="center" valign="middle" >58%</td><td align="center" valign="middle" >198.3</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >155.2</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >31</td></tr><tr><td align="center" valign="middle" >Cluster 4</td><td align="center" valign="middle" >46.7</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >58.7</td><td align="center" valign="middle" >44.8%</td><td align="center" valign="middle" >99.4</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >55.5</td><td align="center" valign="middle" >97.2%</td><td align="center" valign="middle" >145</td></tr><tr><td align="center" valign="middle" >Threshold</td><td align="center" valign="middle"  colspan="2"  >13</td><td align="center" valign="middle"  colspan="2"  >20</td><td align="center" valign="middle"  colspan="2"  >44</td><td align="center" valign="middle"  colspan="2"  >20</td><td align="center" valign="middle" ></td></tr></tbody></table></table-wrap><p>and 4 are Low Reusable clusters. Cluster 2 contains the most properly classes to be High Reusable. Cluster 1 is Medium Reusable cluster.</p><p>The analysis of cluster’s vectors of experiment 8 for Hibernate system is shown in <xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>1. The results show that Cluster 3 has only 2 vectors with very high values for all metrics. Cluster 3 and 4 are Low Reusable clusters. Cluster 2 is a High Reusable cluster, because it has the minimum values of all metrics. Cluster 1 is a Medium</p><table-wrap id="table11" ><label><xref ref-type="table" rid="table1"><xref ref-type="table" rid="table">Table </xref>1</xref>1</label><caption><title> Results analysis of experiment 8 of hibernate system</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  ></th><th align="center" valign="middle"  colspan="2"  >CBO</th><th align="center" valign="middle"  colspan="2"  >LCOM</th><th align="center" valign="middle"  colspan="2"  >RFC</th><th align="center" valign="middle"  colspan="2"  >WMC</th><th align="center" valign="middle"  rowspan="2"  >NO. OF CLASSES</th></tr></thead><tr><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td><td align="center" valign="middle" >Avg.</td><td align="center" valign="middle" >Ex.%</td></tr><tr><td align="center" valign="middle" >Cluster 1</td><td align="center" valign="middle" >27.2</td><td align="center" valign="middle" >98.2%</td><td align="center" valign="middle" >252.8</td><td align="center" valign="middle" >59%</td><td align="center" valign="middle" >70.3</td><td align="center" valign="middle" >78.2%</td><td align="center" valign="middle" >44.6</td><td align="center" valign="middle" >81.4</td><td align="center" valign="middle" >188</td></tr><tr><td align="center" valign="middle" >Cluster 2</td><td align="center" valign="middle" >7.1</td><td align="center" valign="middle" >13.4%</td><td align="center" valign="middle" >11.3</td><td align="center" valign="middle" >12%</td><td align="center" valign="middle" >12.4</td><td align="center" valign="middle" >0.5%</td><td align="center" valign="middle" >8.3</td><td align="center" valign="middle" >6.6%</td><td align="center" valign="middle" >964</td></tr><tr><td align="center" valign="middle" >Cluster 3</td><td align="center" valign="middle" >126.5</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >12954</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >583</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >466</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >2</td></tr><tr><td align="center" valign="middle" >Cluster 4</td><td align="center" valign="middle" >83.9</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >2824.8</td><td align="center" valign="middle" >88.9%</td><td align="center" valign="middle" >273.7</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >220.6</td><td align="center" valign="middle" >100%</td><td align="center" valign="middle" >18</td></tr><tr><td align="center" valign="middle" >Threshold</td><td align="center" valign="middle"  colspan="2"  >13</td><td align="center" valign="middle"  colspan="2"  >20</td><td align="center" valign="middle"  colspan="2"  >44</td><td align="center" valign="middle"  colspan="2"  >20</td><td align="center" valign="middle" ></td></tr></tbody></table></table-wrap><p>Reusable cluster, because the percentage of the classes that exceeding the threshold and its averages is less than clusters 3 and 4, and greater than cluster 2.</p><p>LCOM metric can be used to evaluate the software reusability using SOM, based on used threshold even it has a poor distribution. Unlike statistical methods which discard LCOM metric from finding a clear threshold, because of its poor distribution.</p></sec><sec id="s6"><title>6. Conclusion and Future Work</title><p>This research is based on using the Kohonen’s Self-Organizing Map (SOM) to cluster software metrics (CK metrics suite). The clustering of CK metrics was based on metrics threshold values that proposed in literature. We showed that SOM can be applied to clusters software metrics to visualize the relationship between software metrics and its reusability level (High Reusable, Medium Reusable and Low Reusable). SOM was used in this research according to its powerful ability in clustering data vectors and its property of spatial autocorrelation. This helps in discovering software metrics patterns and its relationship with reusability category. The clustering validity was based on the highest silhouette average value, after we applied many grids sizes and different number of epochs. Initially, we applied SOM on all CK metrics suite, in order to cluster classes to their suitable reusability category, but we found that NOC and DIT metrics dominated the clustering results because of their poor distribution, so it was helpless clustering. The solution was to eliminate NOC and DIT metrics from clustering process. The experimental results show that the clustering becomes more homogenous and meaningful.</p><p>In future, after more investigations in software metrics related to reusability quality factor, SOM can be tested again with different metrics to have better results. This will help the software designers to predict class component reuse level. Furthermore, we could use same datasets of three systems with eliminating three of CK metrics (LCOM, DIT, and NOC) because of its poor distribution; hence the datasets become 3-D, to better visualization.</p><p>We can also define more than three categories for reusability, for example, we can categorize classes into five categories: Not Reusable, Low Reusable, Medium Reusable, Reusable and High Reusable.</p><p>In our work, to gain better results we discarded NOC and DIT metrics from experiments because of their poor distribution. Another solution that can be applied is to change the initial parameters such as inputting initial weights and learning rate values, then reapplying experiments.</p></sec><sec id="s7"><title>Cite this paper</title><p>Amjad Hudaib,Ammar Huneiti,Islam Othman, (2016) Software Reusability Classification and Predication Using Self-Organizing Map (SOM). Communications and Network,08,179-192. doi: 10.4236/cn.2016.83018</p></sec></body><back><ref-list><title>References</title><ref id="scirp.69828-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Sommerville, I. (2011) Software Engineering. 9th Edition, Addison-Wesley, New York.</mixed-citation></ref><ref id="scirp.69828-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Goel, B.M. and Bhatia, P.K. (2013) Analysis of Reusability of Object-Oriented Systems Using Object-Oriented Metrics. ACM SIGSOFT Software Engineering Notes, 38, 1-5. http://dx.doi.org/10.1145/2492248.2492264</mixed-citation></ref><ref id="scirp.69828-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Maggo, S. and Gupta, C. (2014) A Machine Learning Based Efficient Software Reusability Prediction Model for Java Based Object Oriented Software. International Journal of Information Technology and Computer Science (IJITCS), 6, 1. http://dx.doi.org/10.5815/ijitcs.2014.02.01</mixed-citation></ref><ref id="scirp.69828-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Rotaru, O.P. and Dobre, M. (2005) Reusability Metrics for Software Components. Proceedings of the 3rd ACS/IEEE International Conference on Computer Systems and Applications, Cairo, 2005, 24-29.http://dx.doi.org/10.1109/aiccsa.2005.1387023</mixed-citation></ref><ref id="scirp.69828-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Singh, G. (2013) Metrics for Measuring the Quality of Object-Oriented Software. ACM SIGSOFT Software Engineering Notes, 38, 1-5. http://dx.doi.org/10.1145/2507288.2507311</mixed-citation></ref><ref id="scirp.69828-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Chidamber, S.R. and Kemerer, C.F. (1994) A Metrics Suite for Object Oriented Design. IEEE Transactions on Software Engineering, 20, 476-493. http://dx.doi.org/10.1109/32.295895</mixed-citation></ref><ref id="scirp.69828-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Kumar, V., Kumar, R. and Sharma, A. (2013) Applying Neuro-Fuzzy Approach to Build the Reusability Assessment Framework across Software Component Releases—An Empirical Evaluation. International Journal of Computer Applications, 70, 41-47. http://dx.doi.org/10.5120/12041-8047</mixed-citation></ref><ref id="scirp.69828-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Caldiera, G. and Basili, V.R. (1991) Identifying and Qualifying Reusable Software Components. IEEE Software, 24, 61-70. http://dx.doi.org/10.1109/2.67210</mixed-citation></ref><ref id="scirp.69828-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Sametinger, J. (1997) Software Engineering with Reusable Components. Springer Verlag, New York. http://dx.doi.org/10.1007/978-3-662-03345-6</mixed-citation></ref><ref id="scirp.69828-ref10"><label>10</label><mixed-citation publication-type="book" xlink:type="simple">Weinreich, R. and Sametinger, J. (2001) Component Models and Component Services: Concepts and Principles, Component-Based Software Engineering: Putting Pieces Together. In: Heineman, G.T. and Councill, W.T., Eds., Component-Based Software Engineering: Putting Pieces Together, Addison-Wesley, New York, 33-48.</mixed-citation></ref><ref id="scirp.69828-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">He, J., Chen, R. and Gu, W. (2009) A New Method for Component Reuse. The 2nd IEEE International Conference on Computer Science and Information Technology (ICCSIT), Beijing, August 2009, 304-307.</mixed-citation></ref><ref id="scirp.69828-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Smaragdakis, Y. and Batory, D. (1998) Implementing Reusable Object-Oriented Components. Proceedings of the 5th International Conference on Software Reuse, Victoria, 2-5 June 1998, 36-45. http://dx.doi.org/10.1109/icsr.1998.685728</mixed-citation></ref><ref id="scirp.69828-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Rosenberg, L.H. and Hyatt, L.E. (1997) Software Quality Metrics for Object-Oriented Environments. Crosstalk Journal, 10, 1-16.</mixed-citation></ref><ref id="scirp.69828-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Antony, P.J. (2013) Predicting Reliability of Software Using Thresholds of CK Metrics. International Journal of Advanced Networking &amp; Applications, 4, 6.</mixed-citation></ref><ref id="scirp.69828-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Basili, V.R., Briand, L.C. and Melo, W.L. (1996) A Validation of Object-Oriented Design Metrics as Quality Indicators. IEEE Transactions on Software Engineering, 22, 751-761. http://dx.doi.org/10.1109/32.544352</mixed-citation></ref><ref id="scirp.69828-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Succi, G., Pedrycz, W., Stefanovic, M. and Miller, J. (2003) Practical Assessment of the Models for Identification of Defect-Prone Classes in Object-Oriented Commercial Systems Using Design Metrics. Journal of Systems and Software, 65, 1-12. http://dx.doi.org/10.1016/S0164-1212(02)00024-9</mixed-citation></ref><ref id="scirp.69828-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Hudiab, A., Al-Zaghoul, F., Saadeh, M. and Saadeh, H. (2015) ADTEM—Architecture Design Testability Evaluation Model to Assess Software Architecture Based on Testability Metrics. Journal of Software Engineering and Applications, 8, 201-210. http://dx.doi.org/10.4236/jsea.2015.84021</mixed-citation></ref><ref id="scirp.69828-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Gill, N.S. and Sikka, S. (2011) Inheritance Hierarchy Based Reuse &amp; Reusability Metrics in OOSD. International Journal on Computer Science and Engineering, 3, 2300-2309.</mixed-citation></ref><ref id="scirp.69828-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Shatnawi, R. (2010) A Quantitative Investigation of the Acceptable Risk Levels of Object-Oriented Metrics in Open-Source Systems. IEEE Transactions on Software Engineering, 36, 216-225. http://dx.doi.org/10.1109/TSE.2010.9</mixed-citation></ref><ref id="scirp.69828-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Shatnawi, R., Li, W., Swain, J. and Newman, T. (2010) Finding Software Metrics Threshold Values Using ROC Curves. Journal of Software Maintenance and Evolution: Research and Practice, 22, 1-16. http://dx.doi.org/10.1002/smr.404</mixed-citation></ref><ref id="scirp.69828-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Guo, X.L., Wang, H.Y. and Glass, D.H. (2012) A Growing Bayesian Self-Organizing Map for Data Clustering. Proceedings of the International Conference on Machine Learning and Cybernetics (ICMLC), 2, 708-713.http://dx.doi.org/10.1109/icmlc.2012.6359011</mixed-citation></ref><ref id="scirp.69828-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Cho, E.S., Kim, M.S. and Kim, S.D. (2001) Component Metrics to Measure Component Quality. Proceedings of the 8th Asia Pacific Software Engineering Conference (APSEC), Macau, 4-7 December 2001, 419-426.</mixed-citation></ref><ref id="scirp.69828-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">Washizaki, H., Yamamoto, H. and Fukazawa, Y. (2003) A Metrics Suite for Measuring Reusability of Software Components. Proceedings of 9th International Symposium on Software Metrics, Sydney, 3-5 September 2003, 211-223. http://dx.doi.org/10.1109/metric.2003.1232469</mixed-citation></ref><ref id="scirp.69828-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">Sindre, G., Conradi, R. and Karlsson, E.A. (1995) The REBOOT Approach to Software Reuse. Journal of Systems and Software, 30, 201-212. http://dx.doi.org/10.1016/0164-1212(94)00134-9</mixed-citation></ref><ref id="scirp.69828-ref25"><label>25</label><mixed-citation publication-type="other" xlink:type="simple">Sharma, A., Grover, P.S. and Kumar, R. (2009) Reusability Assessment for Software Components. ACM SIGSOFT Software Engineering Notes, 34, 1-6. http://dx.doi.org/10.1145/1507195.1507215</mixed-citation></ref><ref id="scirp.69828-ref26"><label>26</label><mixed-citation publication-type="other" xlink:type="simple">Gandhi, P. and Bhatia, P.K. (2011) Estimation of Generic Reusability for Object-Oriented Software an Empirical Approach. ACM SIGSOFT Software Engineering Notes, 36, 1-4. http://dx.doi.org/10.1145/1968587.1968606</mixed-citation></ref><ref id="scirp.69828-ref27"><label>27</label><mixed-citation publication-type="other" xlink:type="simple">Kulkarni, U.L., Kalshetty, Y.R. and Arde, V.G. (2010) Validation of Ck Metrics for Object Oriented Design Measurement. Proceedings of the 3rd International Conference on Emerging Trends in Engineering and Technology (ICETET), Goa, 19-21 November 2010, 646-651. http://dx.doi.org/10.1109/ICETET.2010.159</mixed-citation></ref><ref id="scirp.69828-ref28"><label>28</label><mixed-citation publication-type="other" xlink:type="simple">Tang, M.H., Kao, M.H. and Chen, M.H. (1999) An Empirical Study on Object Oriented Metrics. Proceedings of the 6th International Software Metrics Symposium, Boca Raton, 4-6 November 1999, 242-249.</mixed-citation></ref><ref id="scirp.69828-ref29"><label>29</label><mixed-citation publication-type="other" xlink:type="simple">Hsu, C.C. (2006) Generalizing Self-Organizing Map for Categorical Data. IEEE Transactions on Neural Networks, 17, 294-304. http://dx.doi.org/10.1109/TNN.2005.863415</mixed-citation></ref><ref id="scirp.69828-ref30"><label>30</label><mixed-citation publication-type="book" xlink:type="simple">Yin, H. (2008) The Self-Organizing Maps: Background, Theories, Extensions and Applications. In: Fulcher, J. and Jain, L.C., Eds., Computational Intelligence: A Compendium, Springer, Berlin, 715-762.http://dx.doi.org/10.1007/978-3-540-78293-3_17</mixed-citation></ref><ref id="scirp.69828-ref31"><label>31</label><mixed-citation publication-type="book" xlink:type="simple">Van Hulle, M.M. (2012) Self-Organizing Maps. In: Rozenberg, G., Back, T. and Kok, J.N., Eds., Handbook of Natural Computing, Springer, Berlin, 585-622. http://dx.doi.org/10.1007/978-3-540-92910-9_19</mixed-citation></ref><ref id="scirp.69828-ref32"><label>32</label><mixed-citation publication-type="other" xlink:type="simple">Kruskal, J.B. and Wish, M. (1978) Multidimensional Scaling. Sage University Paper Series on Quantitative Applications in the Social Sciences, No. 07-011, Sage Publications, Newbury Park.http://dx.doi.org/10.4135/9781412985130</mixed-citation></ref><ref id="scirp.69828-ref33"><label>33</label><mixed-citation publication-type="other" xlink:type="simple">Cottrell, M., Fort, J.C. and Pagés, G. (1997) Theoretical Aspects of the SOM Algorithm. Proceedings of the Workshop on Self-Organizing Maps (WSOM 97), Helsinki University of Technology, Neural Networks Research Centre, Espoo, 4-6 June 1997, 246-267.</mixed-citation></ref><ref id="scirp.69828-ref34"><label>34</label><mixed-citation publication-type="other" xlink:type="simple">Maimon, O. and Rokach, L. (2007) Soft Computing for Knowledge Discovery and Data Mining. Springer Science &amp; Business Media, Berlin</mixed-citation></ref><ref id="scirp.69828-ref35"><label>35</label><mixed-citation publication-type="other" xlink:type="simple">Haykin, S. and Network, N. (2004) Neural Networks: A Comprehensive Foundation. 2nd Edition, Pearson Education, Indian, Bangladesh.</mixed-citation></ref><ref id="scirp.69828-ref36"><label>36</label><mixed-citation publication-type="other" xlink:type="simple">Pedrycz, W., Succi, G., Musilek, P. and Bai, X. (2001) Using Self-Organizing Maps to Analyze Object-Oriented Software Measures. Journal of Systems and Software, 59, 65-82. http://dx.doi.org/10.1016/S0164-1212(01)00049-8</mixed-citation></ref><ref id="scirp.69828-ref37"><label>37</label><mixed-citation publication-type="other" xlink:type="simple">Chang, C.H., Xu, P., Xiao, R. and Srikanthan, T. (2005) New Adaptive Color Quantization Method Based on Self-Organizing Maps. IEEE Transactions on Neural Networks, 16, 237-249. http://dx.doi.org/10.1109/TNN.2004.836543</mixed-citation></ref><ref id="scirp.69828-ref38"><label>38</label><mixed-citation publication-type="other" xlink:type="simple">Dreyfus, G. (2005) Neural Networks: Methodology and Applications. Springer, Berlin.</mixed-citation></ref><ref id="scirp.69828-ref39"><label>39</label><mixed-citation publication-type="other" xlink:type="simple">Mantysalo, J., Torkkola, K. and Kohonen, T. (1994) Mapping Content Dependent Acoustic Information into Context Independent Form by LVQ. Speech Communication, 14, 119-130. http://dx.doi.org/10.1016/0167-6393(94)90003-5</mixed-citation></ref><ref id="scirp.69828-ref40"><label>40</label><mixed-citation publication-type="other" xlink:type="simple">Lapidot, I., Guterman, H. and Cohen, A. (2002) Unsupervised Speaker Recognition Based on Competition between Self-Organizing Maps. IEEE Transactions on Neural Networks, 13, 877-887. http://dx.doi.org/10.1109/TNN.2002.1021888</mixed-citation></ref><ref id="scirp.69828-ref41"><label>41</label><mixed-citation publication-type="other" xlink:type="simple">Simula, O. and Kangas, J. (1995) Process Monitoring and Visualization Using Self-Organizing Maps. Integrated Computer-Aided Engineering, 6, 3-14.</mixed-citation></ref><ref id="scirp.69828-ref42"><label>42</label><mixed-citation publication-type="other" xlink:type="simple">Merkl, D. (1993) Structuring Software for Reuse—The Case of Self-Organizing Maps. Proceedings of the International Joint Conference on Neural Networks (IJCNN), 3, 2468-2471.http://dx.doi.org/10.1109/ijcnn.1993.714224</mixed-citation></ref><ref id="scirp.69828-ref43"><label>43</label><mixed-citation publication-type="other" xlink:type="simple">Veras, R.C., Meira, S.R., Oliveira, A.L. and Melo, B.J. (2007) Comparative Study of Clustering Techniques for the Organization of Software Repositories. 19th IEEE International Conference on Tools with Artificial Intelligence (ICTAI 2007), 1, 210-214. http://dx.doi.org/10.1109/ICTAI.2007.162</mixed-citation></ref><ref id="scirp.69828-ref44"><label>44</label><mixed-citation publication-type="other" xlink:type="simple">Lin, Y. and Ye, H. (2009) Input Data Representation for Self-Organizing Map in Software Classification. Proceedings of the 2nd International Symposium on Knowledge Acquisition and Modeling (KAM), 2, 350-353.http://dx.doi.org/10.1109/kam.2009.151</mixed-citation></ref><ref id="scirp.69828-ref45"><label>45</label><mixed-citation publication-type="other" xlink:type="simple">Acharya, S. and Sadananda, R. (1997) Promoting Software Reuse Using Self-Organizing Maps. Neural Processing Letters, 5, 219-226. http://dx.doi.org/10.1023/A:1009603129257</mixed-citation></ref><ref id="scirp.69828-ref46"><label>46</label><mixed-citation publication-type="other" xlink:type="simple">Kohonen, T. (1982) Self-Organized Formation of Topologically Correct Feature Maps. Biological Cybernetics, 43, 59-69. http://dx.doi.org/10.1007/BF00337288</mixed-citation></ref><ref id="scirp.69828-ref47"><label>47</label><mixed-citation publication-type="other" xlink:type="simple">Kohonen, T. (2013) Essentials of the Self-Organizing Map. Neural Networks, 37, 52-65.http://dx.doi.org/10.1016/j.neunet.2012.09.018</mixed-citation></ref><ref id="scirp.69828-ref48"><label>48</label><mixed-citation publication-type="other" xlink:type="simple">Applied Software Engineering Research Group (ASERG) (2013) http://aserg.labsoft.dcc.ufmg.br/comets/</mixed-citation></ref><ref id="scirp.69828-ref49"><label>49</label><mixed-citation publication-type="other" xlink:type="simple">Zhou, Y. and Leung, H. (2006) Empirical Analysis of Object-Oriented Design Metrics for Predicting High and Low Severity Faults. IEEE Transactions on Software Engineering, 32, 771-789. http://dx.doi.org/10.1109/TSE.2006.102</mixed-citation></ref><ref id="scirp.69828-ref50"><label>50</label><mixed-citation publication-type="other" xlink:type="simple">Tan, P.N., Steinbach, M. and Kumar, V. (2006) Introduction to Data Mining. Pearson: Addison Wesley, Boston.</mixed-citation></ref><ref id="scirp.69828-ref51"><label>51</label><mixed-citation publication-type="other" xlink:type="simple">El Emam, K., Goel, N. and Rai, S. (2000) Thresholds for Object-Oriented Measures. 11th International Symposium on Software Reliability Engineering (ISSRE 2000), San Jose, 8-11 October 2000, 24-38.</mixed-citation></ref><ref id="scirp.69828-ref52"><label>52</label><mixed-citation publication-type="other" xlink:type="simple">Singh, S. and Kahlon, K.S. (2014) Object Oriented Software Metrics Threshold Values at Quantitative Acceptable Risk Level. CSI Transactions on ICT, 2, 191-205. http://dx.doi.org/10.1007/s40012-014-0057-1</mixed-citation></ref><ref id="scirp.69828-ref53"><label>53</label><mixed-citation publication-type="other" xlink:type="simple">Herbold, S., Grabowski, J. and Waack, S. (2011) Calculation and Optimization of Thresholds for Sets of Software Metrics. Empirical Software Engineering, 16, 812-841. http://dx.doi.org/10.1007/s10664-011-9162-z</mixed-citation></ref><ref id="scirp.69828-ref54"><label>54</label><mixed-citation publication-type="other" xlink:type="simple">Mirkin, B. (2012) Clustering: A Data Recovery Approach. CRC Press, Boca Raton. http://dx.doi.org/10.1201/b13101</mixed-citation></ref><ref id="scirp.69828-ref55"><label>55</label><mixed-citation publication-type="other" xlink:type="simple">Jiawei, H. and Kamber, M. (2012) Data Mining: Concepts and Techniques. 3th Edition, Elsevier, San Francisco.</mixed-citation></ref></ref-list></back></article>