Thresholds Derivation of Software Code Metrics for God Class Detection Using Metaheuristic Approaches

preprint OA: closed
Full text JSON View at publisher
Full text 134,692 characters · extracted from preprint-html · click to expand
Thresholds Derivation of Software Code Metrics for God Class Detection Using Metaheuristic Approaches | Research Square window.SnipcartSettings = { analytics: { enabled: false } }; (function() { var accessVector = localStorage.getItem('access_vector') || ''; window.dataLayer = window.dataLayer || []; if (accessVector) { window.dataLayer.push({ user: { profile: { profileInfo: { snid: accessVector } } } }); } })(); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-K279D39R'); Browse Preprints In Review Journals COVID-19 Preprints AJE Video Bytes Research Tools Research Promotion AJE Professional Editing AJE Rubriq About Preprint Platform In Review Editorial Policies Our Team Advisory Board Help Center Sign In Submit a Preprint Cite Share Download PDF Research Article Thresholds Derivation of Software Code Metrics for God Class Detection Using Metaheuristic Approaches Kapil Sharma, Jitender Kumar Chhabra This is a preprint; it has not been peer reviewed by a journal. https://doi.org/ 10.21203/rs.3.rs-6255844/v1 This work is licensed under a CC BY 4.0 License Status: Posted Version 1 posted You are reading this latest preprint version Abstract Code smell is an indicator of the suboptimal design of the source code. The presence of code smell in the source code signifies that the developer has not given utmost attention while designing the source code, which may result in a high maintenance cost for the software. Detection of these smells is crucial in the early phase of software development to reduce maintenance costs. Out of all code smells, the God class is the most prominently studied and considered undesirable from an object-oriented design perspective. This paper proposes a detection technique for God-class smell based on the threshold of software metrics. The paper finds four metrics relevant to God class detection based on the AUC score. Various methods can detect God-class code smell, but we have opted for a threshold detection method due to its ease of automation and faster speed. We have derived thresholds of software metrics (CK metrics) for God class detection using metaheuristic optimizers. The optimizers include genetic algorithms, particle swarm optimizers, differential evolution, and artificial bee colony optimizers. The proposed technique has been tested on sixteen open-source object-oriented Java projects. Results show that the artificial bee colony optimizer yields better results than other used optimizers. Code Smell God Class Metaheuristic Software Metrics Thresholds Figures Figure 1 Figure 2 Figure 3 1. Introduction The software system should be fault-free and of high quality. Maintaining software with faults can be a tedious process and may incur additional financial burden [ 1 ]. A fault may occur when the designer deviates from typical design behaviour while designing the source code. The suboptimal design of source code is referred as code smell. Which was coined by Martin Fowler. The presence of code smells in the software does not guarantee that the system is faulty, but it is an early indicator of faults in the near future. Therefore, detecting code smells in the software helps in the minimization of faults in the software and maintaining its high quality. Developers can identify these flaws with the help of quality models and techniques [ 2 ]. These model use source code metrics to detect classes having code smells and being prone to changes and faults. While the effectiveness of fault prediction systems based on software metrics has been demonstrated by [ 3 ], fault prediction does not talk about any equivalent corrective action. The corrective action can be identified through detecting type code smell; hence, code smell detection is a better option than fault prediction. God class is considered a smell that has a significant detrimental impact on various aspects of software quality, including maintainability, understandability, changeability, stability, complexity, reusability, and evolvability and centralizes the whole functionality of system in a single class [ 4 ]. Hence, our primary goal in this article is to detect God class code smell using the appropriate thresholds of the software metrics. Riel [ 5 ] defines the God Class as a class that supersedes all logic and accomplishes all functions. The God class, also referred to as the blob anti-pattern [ 6 ], God Class disharmony [ 7 ], and large class smell, which means it is a sizable and intricate class. Several studies have focused on this issue, including those by [ 7 ], [ 8 ], [ 9 ], and [ 10 ]. Software metrics provide a quantifiable assessment of software quality. Extraction of metrics value from software systems is usually economical. For this purpose, there are several automated tools available [ 11 ]. Therefore, adopting metrics for predicting code smells may be more advantageous than applying complex techniques like machine learning and manual source code inspection [ 12 ]. Metrics threshold values were used to detect God class code smell, thresholds are defined as specific points that act as boundaries between two distinct groupings of data. In this context, the software metrics’ threshold value segregates the classes with code smells (smelly classes) from those that do not have code smells (non-smelly classes). These thresholds are calculated only for monitoring and assessing the presence of code smells in software components to maintain the quality of software. There are many software metrics suits are available to predict the quality of the software. In this study, we choose CK metric suite [ 13 ] for empirical analysis. The reason behind the selection of the CK metric suite is well explained in the next section. The primary contribution of this paper is that the authors have derived the optimal thresholds of software metrics for God Class detection. The software metrics used for detection are CK metric and LOC (size metric). The selection of relevant metrics for God class from these software metrics was made based on the AUC score of each metric. The thresholds for the software metrics have been derived using the metaheuristic algorithm, and then these derived threshold values have been tested for detection accuracy on sixteen open-source object-oriented Java-based software projects. The paper organizes the remaining sections as follows: In section 2, we look at several research papers that discuss threshold derivation methods, code smell detection methods, and fault prediction using code smells and other features. section 3 describes the research methodology. section 4 discusses the experimentation details, and section 5 discusses the analysis for the metrics selection. Section 6 interprets the results of the findings, section 7 outlines the challenges to the validity of the used techniques, while section 8 concludes the key contributions of this study and the scope of future work. 2. Literature Review Software metrics play a pivotal role in assessing software quality with object-oriented features. Researchers have suggested many software metrics suites to predict the quality of programs. The Chidamber and Kemerer suite [ 13 ], MOOD metrics [ 2 ], QMOOD metrics [ 14 ], and Lorenz and Kidd's metrics [ 15 ] are regarded as valuable metric sets designed to evaluate the quality of software in object-oriented systems. Jabangwe et al. [ 16 ] looked at 99 published articles to find out how metrics relate to quality criteria like functionality, dependability, and maintainability. They concluded that the CK metric suite is the best among all and widely used in previous research. In addition to these metrics, a new set of metrics was proposed by Singh & Chhabra [ 17 ] for improvement in software fault prediction using machine learning. Using a combination of different source code metrics and quantitative analysis, many studies have looked into the links between source code and predicting code smell, fault proneness, and change proneness of software components. Isong & Obeten [ 14 ] conducted a recent study and examined the correlations between code metrics and design flaws. They conducted a comprehensive analysis of research papers that utilized object-oriented metrics to predict the likelihood of faults. Isong & Obeten‘s analysis reveals that a significant number of studies lack replication by other researchers. The authors observed that multiple studies often recycle the frequently employed datasets. As a result, it is advisable to use datasets and methodologies that have previously been used in other research projects, allowing researchers to compare their findings with those of others. In addition to the metrics threshold derivation approach for code smell detection, there are many other types of detection methods for code smells. The automatic tool based detection technique by [ 18 ] is the primary method for detecting smells. The manual approach by [ 19 ] identifies code smells and design flaws based on human perception and follows detection guidelines. However, this method is time-consuming and prone to human error. Furthermore, it is extremely difficult and inefficient to detect smells of software applications of a large scale. The search-based technique by Rasool & Arshad [ 11 ] employs several algorithms and heuristics to identify code smells. The search process primarily employs machine learning (ML) techniques, where an ML classifier chooses a set of predictors for prediction. The quality of a well-balanced dataset and the accuracy of the training model determine the effectiveness of ML approaches [ 20 ]. By analyzing the source code, the change history-based analysis examines how code elements evolve and identifies code smells. The process involves mining the commit log of versioned repositories and searching for instances of the word ”refactor” in the logs [ 21 ]. Strategy-based approach by [ 22 ] leverages measurements, logical expressions, and rules to identify and detect smells without following any standardized set of criteria. Visualization-based approach by [ 22 ] integrates humans’ manual detection of code smells with an automated detection approach. This approach cannot handle large-scale projects and necessitates manual work by developers, which can lead to human mistakes. The cooperative-based approach by [ 22 ] is an innovative approach that employs a variety of actions to improve the detection process’s precision. They use various parallel techniques, such as genetic algorithms, to reduce the search area and speed up the search procedure. Bigonha et al . [ 4 ] proposed the detection of bad smell based on metrics and threshold values, evaluated metrics at the class level for fault prediction, and identified the fault-prone classes using these metrics values. This study provides support for software quality assurance activities. Gradišnik et al. [ 23 ] proposed a methodology for fault prediction using God class code smells and developed methods for automatically determining the code smell thresholds. Using Grid Search techniques, they define the God-class threshold and predict defects in open-source Java projects. Khan & Ashraf [ 24 ] conducted a literature review on the prediction of software faults using code metrics, code smells, and an ensemble deep learning method. They explain the clustering and pseudo-labelling techniques used in dataset labelling. Um-E-Safia & Khan [ 25 ] proposed the impact of code smells at both the class and method levels in a fault prediction model. Boucher & Badri [ 26 ] proposed a strategy for threshold derivation; they derived thresholds based on the ROC, Alves Ranking, and Bayes network and compared all the techniques concerning fault-prone class prediction. They argue that the Alves ranking method is ineffective for fault-prone module prediction, whereas the ROC curve method is partially effective for fault-proneness prediction on a few datasets. Sotto-Mayor & Kalech [ 27 ] proposed a fault prediction model that uses smell as a predictor to identify defect-prone classes and optimizes testing phases by predicting software defects. In software fault prediction, they discovered that code smell outperformed code metrics as a predictor. On ROC AUC, the code-smell-based prediction model improves performance by 6.50%. Shatnawi et al . [ 28 ] utilize ROC curves to establish thresholds for code metrics. A Receiver Operating Characteristic (ROC) curve evaluates an independent variable’s categorization performance by testing various threshold values and observing its performance at different levels. Bender introduced the VARL method (value of an acceptable risk level) as an alternative approach for calculating the threshold. This approach involves converting a univariate logistic regression model into threshold values using a precise mathematical procedure. Several studies [ 29 ],[ 30 ] have examined its potential to predict fault-proneness, despite not initially developing it for software engineering. This research’s results show that the VARL approach produces certain acceptable threshold values Malhotra & Bansal [ 31 ], but other reports suggest that this method fails to identify suitable threshold values for a particular dataset or system. Ferreira et al. [ 32 ] introduced an alternative method for determining source code metrics thresholds, which involved fitting the distributions of these metrics to an optimal probability distribution. They subsequently established three categories for each source code metric: excellent, acceptable, and poor. Oliveira et al. [ 33 ] devised a method for calculating relative threshold values in source code metrics for fault prediction. They utilized a statistical method to establish thresholds derived from the distribution of measurements. Singh & Chhabra [ 17 ] used metaheuristic algorithms to derive thresholds of software metrics for software fault prediction. They proved that ROC-based techniques proposed by [ 28 ] to find thresholds are not as effective as using their metaheuristics, which prompts us to use metaheuristics for thresholds derivation of code metrics for God Class code smell. Threshold derivation of software metrics for fault proneness and change proneness have been suggested in the existing literature by Kaur & Singh [ 12 ], but similar research and experiments have not been performed to the best of our knowledge; no study used the CK metric suite to derive thresholds of software metrics for code smell detection. Referring to the literature, we discovered that software prediction models based on thresholds are faster than models based on machine learning. Once the threshold value for the code metric is determined, it can be used on software projects to detect code smells and faulty modules. In this case, metrics thresholds have been used. This saves time and effort for the testing team. Hence, for our study, we are looking at four different metaheuristic threshold derivation techniques. We assumed that the algorithms of genetic algorithm (GA), particle swarm optimization (PSO), differential evolution (DE), and artificial bee colony (ABC) would be the most effective. 3. Research Methodology This section illustrates the threshold derivation model using the metaheuristic algorithm. We apply four metaheuristic algorithms: Genetic Algorithm (GA), Particle Swarm Optimization (PSO), Artificial Bee Colony (ABC), and Differential Evolution (DE) to derive optimal thresholds of code metrics for God-class smell detection. The objective function is to maximize the combined value of sensitivity and specificity. Fig. 1 illustrates the comprehensive framework of the proposed model using a block diagram. The phases of the proposed methodology are explained below. Prepare the dataset by extracting code metrics for software projects as predictors and label each class as 0 or 1, label-1 for classes having God Class smell, and label-0 for classes that do not have God Class smell. Normalize the code metrics value in the range of 0 and 1. Select the relevant metrics by calculating the AUC score using a logistic regression classifier and drop those metrics with an AUC value of less than 0.7. Split the dataset into a training set for threshold derivation and a testing set for performance evaluation of the generated threshold value. Use the training dataset to find the optimal thresholds using the metaheuristic algorithms (GA, PSO, ABC, DE). Each algorithm tries to find optimal thresholds iteratively until convergence to maximize the objective function (specificity + sensitivity). After deriving the thresholds using metaheuristic algorithms, the threshold values are returned in denormalized form and validated on the testing dataset for empirical evaluation, and classification metric accuracy is computed on the testing dataset. 4. Experimentation 4.1. Data Collection In this section, the software projects used for the analysis, how metrics were extracted, and how classes were labelled to frame the dataset have been described in brief. The summary of the software project used and smell distribution in each software project has been depicted in Table 1. Camel 1.4 has the least smelly classes with 3.44% and Ant 1.6 has the most smelly classes with 14.82%. The authors chose these software projects because of their widespread use in fault prediction and to ensure replication and comparison of our findings. The authors conducted experiments on eight object-oriented systems (16 versions) built in Java to establish threshold values. We extracted the metrics for the software project from the Ckjm 1 metrics tool and used the static analyser PMD 2 (Programming Mistake Detector) to label the smells in the classes. The above-mentioned tools have been widely used in previous research. 4.2. Parameter Configuration In this section brief description of how the parameters for the used metaheuristic algorithms were set up. For GA (pop size = 50, num generations = 100, num parents = 20, and mutation rate = 0.1), for PSO (pop size = 50, num iterations = 100, inertia weight = 0.5, cognitive const = 1.5, and social const = 1.5), parameters for DE are (pop size = 50, num iterations = 100, F(scaling factor) = 0.4, CR(crossover probability) = 0.5), and for ABC (pop size = 50, num iterations = 100, limit = 10). In the next section, we will interpret our results and discuss them. Table 1 : Description of Software Projects used for Analysis. Software Versions Total Classes Smell Percentage (God Class) Ant 1.6 351 14.82% 1.7 745 14.63% Camel 1.4 872 3.44% 1.6 965 3.73% jEdit 4.1 312 8.33% 4.2 367 11.71% Poi 2.5 385 5.19% 3.0 442 6.78% Synapse 1.1 222 5.85% 1.2 256 8.59% Velocity 1.5 214 3.73% 1.6 229 4.80% Xalan 2.5 803 11.08% 2.6 885 10.50% Xerces 1.3 453 6.62% 1.4 588 9.18% 4.3. Evaluation metrics The performance of the proposed model is evaluated using accuracy [34] as a comparative criterion and the optimizer’s effectiveness. Accuracy can be calculated using the formula in Equation 1. 5. Metrics selection for God class This section discusses the analysis of metrics selection. The authors have finalized the dataset after collecting metrics and labelling of the classes. The authors performed normalization of the software metrics in the range between 0 and 1, computed the AUC value of each metric, and discarded metrics with an AUC value less than 0.7 for further analysis due to their low discriminating power. The AUC value of the selected metrics among all the datasets has been depicted in Fig. 2. Fig. 2(a) shows the AUC value of the LOC metric across all the software projects; all software projects have the AUC value greater than 0.7; Xalan 2.6 has the least AUC value of 0.86. Fig. 2(b) shows the AUC value for the CBO metric across all the software projects; Velocity 1.6 has the least value of 0.74. Fig. 2(c) shows the AUC value of the RFC metric for all the software projects, and Fig. 2(d) demonstrates the AUC value of the WMC metric for all the software projects used for analysis. Bender [9] provides a clear explanation for selecting the AUC value 0.7 as the cutoff. After framing the dataset, it is split into two parts for training and testing purposes in the ratio of 80 and 20, respectively. The metaheuristic algorithms utilize the training dataset to generate optimal thresholds, which they then validate on the testing dataset. After calculating the AUC value, the first assumption we can make is that the LOC, CBO, RFC, and WMC metrics are useful indicators of God Class code smells. These metrics, based on the AUC score, fall into the fair and acceptable classification. 6. Result and discussion This section presents and discusses the findings of the experiment. The results of the classification accuracy of God Class code smell detection based on derived thresholds, along with the thresholds of selected metrics are depicted in the tabular form. Tables 2 and 3 illustrate the accuracy of the threshold derivation and threshold value of each metric for each software system used in this study. Table 2 shows the results for GA and PSO, while Table 3 demonstrates the results for DE and ABC. The results show that threshold values are not universal but rather project-specific, meaning they vary for each project. The threshold value for the LOC metric ranges from [104-407], CBO [08-69], RFC [38-95], and WMC [18-72]. If any selected metric value exceeds the derived threshold value of the metric, we will declare the particular class as a God class. For example, suppose an optimizer (Genetic Algorithm) derives thresholds Th (LOC) = 183, Th (CBO) = 42, Th (RFC) = 54, and Th (WMC) = 43 for Ant 1.6 if any class of this software project has any metric value greater than these thresholds than that class will be a God class based on the threshold derived by GA optimizer. For Camel 1.4 every optimizer gives their best accuracy, GA optimizer gives the best accuracy of 95.83% while for Xerces 1.3 GA optimizer gives the least accuracy, PSO gives the best accuracy of 96.52% for the Camel 1.4 and least accuracy of 81.96% for Jedit 4.2, DE also shows best accuracy of 96.87% for the same project while least accuracy of 81.11% for Jedit 4.2, and ABC also gives the best accuracy of 99.30% for Camel 1.4 while least accuracy of 89.86% for Xalan 2.6. Table 2 : Accuracy and Metrics Threshold Using GA & PSO. Dataset GA PSO LOC CBO RFC WMC Accuracy LOC CBO RFC WMC Accuracy Ant-1.6 183 42 54 43 0.9137 173 33 56 27 0.9310 Ant-1.7 308 54 53 26 0.9230 282 17 68 28 0.9271 Camel-1.4 241 54 83 47 0.9583 262 42 74 29 0.9652 Camel-1.6 247 56 94 38 0.9529 255 32 75 32 0.9247 Jedit-4.1 171 41 80 37 0.9134 177 45 91 45 0.9326 Jedit-4.2 212 50 83 41 0.9010 211 23 52 42 0.8196 POI-2.5 211 23 52 42 0.8196 241 17 62 41 0.9453 POI-3.0 205 39 80 52 0.8698 210 25 62 46 0.9109 Synapse-1.1 139 37 69 28 0.9324 138 29 71‘ 18 0.9336 Synapse-1.2 155 39 62 26 0.9058 169 29 47 20 0.9176 Velocity-1.5 108 34 61 35 0.8873 126 20 48 18 0.9295 Velocity-1.6 125 37 61 31 0.8815 122 38 57 15 0.9602 Xalan-2.5 403 71 47 59 0.8619 266 61 68 46 0.8656 Xalan-2.6 279 69 95 72 0.8666 289 53 122 67 0.8933 Xerces-1.3 206 08 38 54 0.8066 124 30 74 55 0.8266 Xerces-1.4 158 43 73 43 0.8820 192 19 83 35 0.9333 Table 3 : Accuracy and Metrics Threshold Using DE & ABC. Dataset DE ABC LOC CBO RFC WMC Accuracy LOC CBO RFC WMC Accuracy Ant-1.6 184 40 82 38 0.9568 188 43 59 42 0.9655 Ant-1.7 345 55 71 18 0.9352 327 17 132 52 0.9514 Camel-1.4 259 50 77 46 0.9687 242 54 69 51 0.9930 Camel-1.6 304 52 74 31 0.9529 243 57 93 47 0.9843 Jedit-4.1 177 38 78 39 0.9230 178 38 90 30 0.9423 Jedit-4.2 177 46 56 30 0.8114 211 43 74 47 0.9262 POI-2.5 246 28 67 28 0.9375 218 22 84 47 0.9453 POI-3.0 211 28 61 29 0.9315 207 40 78 54 0.9383 Synapse-1.1 161 37 66 19 0.9458 143‘ 38 71 29 0.9864 Synapse-1.2 156‘ 39 72 19 0.9529 162 40 59 31 0.9647 Velocity-1.5 104 36 47 25 0.9014 127 38 62 36 0.9718 Velocity-1.6 131 37 48 30 0.9605 132 38 53 25 0.9473 Xalan-2.5 383 65 45 67 0.9029 411 73 47 60 0.9104 Xalan-2.6 407 69 42 39 0.8880 417 71 42 75 0.8986 Xerces-1.3 165 8 72 44 0.8666 207 32 37 48 0.9200 Xerces-1.4 158 38 49 45 0.9230 175 44 83 32 0.9282 Fig.3 compares the accuracy of all the optimizers used across all datasets. The metaheuristic algorithm’s accuracy varies from one optimizer to another. ABC outperforms all the dataset in accuracy measurement except Velocity 1.6, and Xerces 1.4. Cumulatively, for majority of datasets ABC is giving the better results, followed by DE, PSO, and GA. The minimum accuracy for the proposed model is 0.8066 for Xerces 1.3 using GA, and the best accuracy is 0.9655 for Ant 1.6 using ABC. The accuracy of each optimizer depends on various factors; dataset size and smell distribution are also factors contributing to accuracy. 7. Threats to validity Numerous factors influence software production, including the software process type, application domain, and additional elements. Consequently, we cannot assert that these thresholds are applicable to all systems. Furthermore, it is not appropriate to generalize the threshold values determined in this research article. Furthermore, the thresholds determined by metaheuristic algorithms are not perfect in all scenarios. Metaheuristics consistently provide approximate solutions. 8. Conclusion and Future Scope This research article proposed a new metaheuristic-based threshold derivation technique for God class code smell detection. GA, PSO, DE, and ABC optimizers were used to derive thresholds of software metrics for God class detection. Based on the AUC score for sixteen open-source object-oriented Java projects, useful software metrics for God class code smells have been selected; then thresholds for these selected metrics were used for God class detection. On comparing the accuracy results of all the used optimizers, it was observed that ABC optimizer performs better than all other metaheuristic optimizers used in this analysis. In future research, this metaheuristic technique may be applied for threshold derivation of additional code smells such as Long Method, Feature Envy, and Data Class, which are extensively used in software engineering research for reducing maintenance efforts. Declarations Conflicts of interests The author asserts that they possess no conflicts of interest. Author Contribution Kapil Sharma – Implemented the proposed methodology and wrote the original draft.Jitender Kumar Chhabra – Supervision, review, and editing. Data availability Data will be provided on a fair request to the associated author. References Alenezi, M.: Internal quality evolution of open-source software systems. Appl. Sci. 11, 5690 (2021). Bansiya, J., Davis, C.G.: A hierarchical model for object-oriented design quality assessment. IEEE Trans. Softw. Eng. 28, 4–17 (2002). Elish, M.O., Aljamaan, H., Ahmad, I.: Three empirical studies on predicting software maintainability using ensemble methods. Soft Comput. 19, 2511–2524 (2015). Bigonha, M.A.S., Ferreira, K., Souza, P., Sousa, B., Januário, M., Lima, D.: The usefulness of software metric thresholds for detection of bad smells and fault prediction. Inf. Softw. Technol. 115, 79–92 (2019). Riel, A.J.: Object-oriented design heuristics. Addison-Wesley Longman Publishing Co., Inc. (1996). Brown, W.H., Malveau, R.C., McCormick, H.W.S., Mowbray, T.J.: AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley \& Sons, Inc. (1998). Counsell, S., Mendes, E.: Size and frequency of class change from a refactoring perspective. In: Third International IEEE Workshop on Software Evolvability 2007. pp. 23–28 (2007). Yamashita, A., Moonen, L.: Exploring the impact of inter-smell relations on software maintainability: An empirical study. In: 2013 35th International Conference on Software Engineering (ICSE). pp. 682–691 (2013). Bender, R.: Quantitative risk assessment in epidemiological studies investigating threshold effects. Biometrical J. J. Math. Methods Biosci. 41, 305–319 (1999). Moha, N.: Detection and correction of design defects in object-oriented designs. In: Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion. pp. 949–950 (2007). Rasool, G., Arshad, Z.: A review of code smell mining techniques. J. Softw. Evol. Process. 27, 867–895 (2015). Kaur, N., Singh, H.: An empirical assessment of threshold techniques to discriminate the fault status of software. J. King Saud Univ. Inf. Sci. 34, 6339–6353 (2022). Chidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Trans. Softw. Eng. 20, 476–493 (1994). Isong, B., Obeten, E.: A systematic review of the empirical validation of object-oriented metrics towards fault-proneness prediction. Int. J. Softw. Eng. Knowl. Eng. 23, 1513–1540 (2013). Lorenz, M., Kidd, J.: Object-oriented software metrics: a practical guide. Prentice-Hall, Inc. (1994). Jabangwe, R., Börstler, J., Šmite, D., Wohlin, C.: Empirical evidence on the link between object-oriented measures and external quality attributes: a systematic literature review. Empir. Softw. Eng. 20, 640–693 (2015). Singh, M., Chhabra, J.K.: Improved Software Fault Prediction Model Based on Optimal Features Set and Threshold Values Using Metaheuristic Approach. SN Comput. Sci. 4, 770 (2023). Vidal, S., Berra, I., Zulliani, S., Marcos, C., Pace, J.A.D.: Assessing the refactoring of brain methods. ACM Trans. Softw. Eng. Methodol. 27, 1–43 (2018). Lacerda, G., Petrillo, F., Pimenta, M., Guéhéneuc, Y.G.: Code smells and refactoring: A tertiary systematic review of challenges and observations. J. Syst. Softw. 167, 110610 (2020). Di Nucci, D., Palomba, F., Tamburri, D.A., Serebrenik, A., De Lucia, A.: Detecting code smells using machine learning techniques: Are we there yet? In: 2018 ieee 25th international conference on software analysis, evolution and reengineering (saner). pp. 612–621 (2018). Palomba, F., Bavota, G., Di Penta, M., Oliveto, R., De Lucia, A., Poshyvanyk, D.: Detecting bad smells in source code using change history information. In: 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE). pp. 268–278 (2013). AbuHassan, A., Alshayeb, M., Ghouti, L.: Software smell detection techniques: A systematic literature review. J. Softw. Evol. Process. 33, e2320 (2021). Gradišnik, M., Beranič, T., Karakatič, S., Mausaš, G.: Adapting God Class thresholds for software defect prediction: A case study. In: 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO). pp. 1537–1542 (2019). Khan, T.A., Ashraf, M.: Software Fault Prediction Using Combinations of Code Smells, Code Metrics, and Code Smell Metrics With Ensemble and Deep Learning. (2023). Um-E-Safia, U.-E., Khan, T.A.: Impact Of Code Smells On Software Fault Prediction At Class Level And Method Level. In: 2022 International Conference on Frontiers of Information Technology (FIT). pp. 326–331 (2022). Boucher, A., Badri, M.: Using software metrics thresholds to predict fault-prone classes in object-oriented software. In: 2016 4th Intl Conf on Applied Computing and Information Technology/3rd Intl Conf on Computational Science/Intelligence and Applied Informatics/1st Intl Conf on Big Data, Cloud Computing, Data Science \& Engineering (ACIT-CSII-BCD). pp. 169–176 (2016). Sotto-Mayor, B., Kalech, M.: Cross-project smell-based defect prediction. Soft Comput. 25, 14171–14181 (2021). Shatnawi, R., Li, W., Swain, J., Newman, T.: Finding software metrics threshold values using ROC curves. J. Softw. Maint. Evol. Res. Pract. 22, 1–16 (2010). Catal, C., Sevim, U., Diri, B.: Clustering and metrics thresholds based software fault prediction of unlabeled program modules. In: 2009 Sixth international conference on information technology: new generations. pp. 199–204 (2009). Rosenberg, L.: Applying and interpreting object oriented metrics. In: Software technology conference, Utah, April 1998 (1998). Malhotra, R., Bansal, A.J.: Fault prediction considering threshold effects of object-oriented metrics. Expert Syst. 32, 203–219 (2015). Ferreira, K.A.M., Bigonha, M.A.S., Bigonha, R.S., Mendes, L.F.O., Almeida, H.C.: Identifying thresholds for object-oriented software metrics. J. Syst. Softw. 85, 244–257 (2012). Oliveira, P., Valente, M.T., Lima, F.P.: Extracting relative thresholds for source code metrics. In: 2014 Software Evolution Week-IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE). pp. 254–263 (2014). Stallings, W.M., Gillmore, G.M.: A note on “accuracy” and “precision.” J. Educ. Meas. 8, 127–129 (1971). Footnotes https://github.com/dspinellis/ckjm https://pmd.github.io/ Additional Declarations No competing interests reported. Cite Share Download PDF Status: Posted Version 1 posted You are reading this latest preprint version Research Square lets you share your work early, gain feedback from the community, and start making changes to your manuscript prior to peer review in a journal. As a division of Research Square Company, we’re committed to making research communication faster, fairer, and more useful. We do this by developing innovative software and high quality services for the global research community. Our growing team is made up of researchers and industry professionals working together to solve the most critical problems facing scientific publishing. Also discoverable on Platform About Our Team In Review Editorial Policies Advisory Board Help Center Resources Author Services Accessibility API Access RSS feed Manage Cookie Preferences © Research Square 2026 | ISSN 2693-5015 (online) Privacy Policy Terms of Service Do Not Sell My Personal Information {"props":{"pageProps":{"initialData":{"identity":"rs-6255844","acceptedTermsAndConditions":true,"allowDirectSubmit":true,"archivedVersions":[],"articleType":"Research Article","associatedPublications":[],"authors":[{"id":435604182,"identity":"0bbec97b-7eff-4417-b479-5ffb2192d688","order_by":0,"name":"Kapil Sharma","email":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAAyAQMAAABI0h/eAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABGklEQVRIie2PMUvDQBTHLwSuS+Q2eSVov8KTQCxY6Fe5LOea0c2AayVrih/BJRAouB0IcQpZL2RxsVtBcClYrHe6iCTpKni/4XgP/r977xFisfxBgFD94pSg6ZyP/XVqCh4fVOBbIdR1lolR8JBCfii5NMWAMk7L6C2OYX4+ql7yrUfdoL6PXp+RTNix7FR8EI9+hhA9LC7DZgEeDdWmAL3Y2fKOdyqnMEp8D3VGCqp04YWqyo3Cse1R2NPNu07OsV7TZscRgqwqtkOKT0Rppji5ErT1JEdkt6vBKeNMiAtzS67WtD1JJAd1tJrqab23QF0Gbbyb6cUEbTZaYWlVNNur2YT53YrB/fXLVxJ64x0Kk4Npi8Vi+X98AinKXWn7+ItAAAAAAElFTkSuQmCC","orcid":"","institution":"National Institute of Technology Kurukshetra","correspondingAuthor":true,"prefix":"","firstName":"Kapil","middleName":"","lastName":"Sharma","suffix":""},{"id":435604183,"identity":"b5c44d71-c6ee-4109-8a7e-941a2945c759","order_by":1,"name":"Jitender Kumar Chhabra","email":"","orcid":"","institution":"National Institute of Technology","correspondingAuthor":false,"prefix":"","firstName":"Jitender","middleName":"Kumar","lastName":"Chhabra","suffix":""}],"badges":[],"createdAt":"2025-03-18 19:23:08","currentVersionCode":1,"declarations":"","doi":"10.21203/rs.3.rs-6255844/v1","doiUrl":"https://doi.org/10.21203/rs.3.rs-6255844/v1","draftVersion":[],"editorialEvents":[],"editorialNote":"","failedWorkflow":false,"files":[{"id":79654937,"identity":"c265d2a5-7d43-4def-9995-2980b315dd4f","added_by":"auto","created_at":"2025-04-01 08:42:22","extension":"png","order_by":1,"title":"Figure 1","display":"","copyAsset":false,"role":"figure","size":137703,"visible":true,"origin":"","legend":"\u003cp\u003eBlock Diagram for the Proposed Model of Threshold Derivation.\u003c/p\u003e","description":"","filename":"1.png","url":"https://assets-eu.researchsquare.com/files/rs-6255844/v1/56caa7b747eb494ae17870a5.png"},{"id":79654936,"identity":"16732964-f717-49e9-acb7-d829c40d4c4f","added_by":"auto","created_at":"2025-04-01 08:42:22","extension":"png","order_by":2,"title":"Figure 2","display":"","copyAsset":false,"role":"figure","size":260850,"visible":true,"origin":"","legend":"\u003cp\u003eAUC Score of Selected Metrics Across All Datasets\u003c/p\u003e","description":"","filename":"2.png","url":"https://assets-eu.researchsquare.com/files/rs-6255844/v1/dfc5ed0fe3d1c11ffd62efb1.png"},{"id":79654939,"identity":"66dd82fc-eb29-4314-b5b2-bb365096bc07","added_by":"auto","created_at":"2025-04-01 08:42:22","extension":"png","order_by":3,"title":"Figure 3","display":"","copyAsset":false,"role":"figure","size":263354,"visible":true,"origin":"","legend":"\u003cp\u003eAccuracy Comparison of All the Applied Metaheuristic Algorithms Across All Datasets.\u003c/p\u003e","description":"","filename":"3.png","url":"https://assets-eu.researchsquare.com/files/rs-6255844/v1/409c20c691f45bbcfbd60359.png"},{"id":83630966,"identity":"416b8246-b684-46a1-a038-ad6ffb982f05","added_by":"auto","created_at":"2025-05-29 19:16:39","extension":"pdf","order_by":0,"title":"","display":"","copyAsset":false,"role":"manuscript-pdf","size":1431969,"visible":true,"origin":"","legend":"","description":"","filename":"manuscript.pdf","url":"https://assets-eu.researchsquare.com/files/rs-6255844/v1/3f3c82b5-6cee-40ab-ae70-6acbbf7ce9cb.pdf"}],"financialInterests":"No competing interests reported.","formattedTitle":"Thresholds Derivation of Software Code Metrics for God Class Detection Using Metaheuristic Approaches","fulltext":[{"header":"1. Introduction","content":"\u003cp\u003eThe software system should be fault-free and of high quality. Maintaining software with faults can be a tedious process and may incur additional financial burden [\u003cspan citationid=\"CR1\" class=\"CitationRef\"\u003e1\u003c/span\u003e]. A fault may occur when the designer deviates from typical design behaviour while designing the source code. The suboptimal design of source code is referred as code smell. Which was coined by Martin Fowler. The presence of code smells in the software does not guarantee that the system is faulty, but it is an early indicator of faults in the near future. Therefore, detecting code smells in the software helps in the minimization of faults in the software and maintaining its high quality. Developers can identify these flaws with the help of quality models and techniques [\u003cspan citationid=\"CR2\" class=\"CitationRef\"\u003e2\u003c/span\u003e]. These model use source code metrics to detect classes having code smells and being prone to changes and faults. While the effectiveness of fault prediction systems based on software metrics has been demonstrated by [\u003cspan citationid=\"CR3\" class=\"CitationRef\"\u003e3\u003c/span\u003e], fault prediction does not talk about any equivalent corrective action. The corrective action can be identified through detecting type code smell; hence, code smell detection is a better option than fault prediction. God class is considered a smell that has a significant detrimental impact on various aspects of software quality, including maintainability, understandability, changeability, stability, complexity, reusability, and evolvability and centralizes the whole functionality of system in a single class [\u003cspan citationid=\"CR4\" class=\"CitationRef\"\u003e4\u003c/span\u003e]. Hence, our primary goal in this article is to detect God class code smell using the appropriate thresholds of the software metrics. Riel [\u003cspan citationid=\"CR5\" class=\"CitationRef\"\u003e5\u003c/span\u003e] defines the God Class as a class that supersedes all logic and accomplishes all functions. The God class, also referred to as the blob anti-pattern [\u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e], God Class disharmony [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e], and large class smell, which means it is a sizable and intricate class. Several studies have focused on this issue, including those by [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e], [\u003cspan citationid=\"CR8\" class=\"CitationRef\"\u003e8\u003c/span\u003e], [\u003cspan citationid=\"CR9\" class=\"CitationRef\"\u003e9\u003c/span\u003e], and [\u003cspan citationid=\"CR10\" class=\"CitationRef\"\u003e10\u003c/span\u003e].\u003c/p\u003e \u003cp\u003eSoftware metrics provide a quantifiable assessment of software quality. Extraction of metrics value from software systems is usually economical. For this purpose, there are several automated tools available [\u003cspan citationid=\"CR11\" class=\"CitationRef\"\u003e11\u003c/span\u003e]. Therefore, adopting metrics for predicting code smells may be more advantageous than applying complex techniques like machine learning and manual source code inspection [\u003cspan citationid=\"CR12\" class=\"CitationRef\"\u003e12\u003c/span\u003e]. Metrics threshold values were used to detect God class code smell, thresholds are defined as specific points that act as boundaries between two distinct groupings of data. In this context, the software metrics\u0026rsquo; threshold value segregates the classes with code smells (smelly classes) from those that do not have code smells (non-smelly classes). These thresholds are calculated only for monitoring and assessing the presence of code smells in software components to maintain the quality of software. There are many software metrics suits are available to predict the quality of the software. In this study, we choose CK metric suite [\u003cspan citationid=\"CR13\" class=\"CitationRef\"\u003e13\u003c/span\u003e] for empirical analysis. The reason behind the selection of the CK metric suite is well explained in the next section.\u003c/p\u003e \u003cp\u003eThe primary contribution of this paper is that the authors have derived the optimal thresholds of software metrics for God Class detection. The software metrics used for detection are CK metric and LOC (size metric). The selection of relevant metrics for God class from these software metrics was made based on the AUC score of each metric. The thresholds for the software metrics have been derived using the metaheuristic algorithm, and then these derived threshold values have been tested for detection accuracy on sixteen open-source object-oriented Java-based software projects.\u003c/p\u003e \u003cp\u003eThe paper organizes the remaining sections as follows: In section 2, we look at several research papers that discuss threshold derivation methods, code smell detection methods, and fault prediction using code smells and other features. section 3 describes the research methodology. section 4 discusses the experimentation details, and section 5 discusses the analysis for the metrics selection. Section 6 interprets the results of the findings, section 7 outlines the challenges to the validity of the used techniques, while section 8 concludes the key contributions of this study and the scope of future work.\u003c/p\u003e"},{"header":"2. Literature Review","content":"\u003cp\u003eSoftware metrics play a pivotal role in assessing software quality with object-oriented features. Researchers have suggested many software metrics suites to predict the quality of programs. The Chidamber and Kemerer suite [\u003cspan citationid=\"CR13\" class=\"CitationRef\"\u003e13\u003c/span\u003e], MOOD metrics [\u003cspan citationid=\"CR2\" class=\"CitationRef\"\u003e2\u003c/span\u003e], QMOOD metrics [\u003cspan citationid=\"CR14\" class=\"CitationRef\"\u003e14\u003c/span\u003e], and Lorenz and Kidd's metrics [\u003cspan citationid=\"CR15\" class=\"CitationRef\"\u003e15\u003c/span\u003e] are regarded as valuable metric sets designed to evaluate the quality of software in object-oriented systems. Jabangwe \u003cem\u003eet al.\u003c/em\u003e [\u003cspan citationid=\"CR16\" class=\"CitationRef\"\u003e16\u003c/span\u003e] looked at 99 published articles to find out how metrics relate to quality criteria like functionality, dependability, and maintainability. They concluded that the CK metric suite is the best among all and widely used in previous research. In addition to these metrics, a new set of metrics was proposed by Singh \u0026amp; Chhabra [\u003cspan citationid=\"CR17\" class=\"CitationRef\"\u003e17\u003c/span\u003e] for improvement in software fault prediction using machine learning. Using a combination of different source code metrics and quantitative analysis, many studies have looked into the links between source code and predicting code smell, fault proneness, and change proneness of software components. Isong \u0026amp; Obeten [\u003cspan citationid=\"CR14\" class=\"CitationRef\"\u003e14\u003c/span\u003e] conducted a recent study and examined the correlations between code metrics and design flaws. They conducted a comprehensive analysis of research papers that utilized object-oriented metrics to predict the likelihood of faults. Isong \u0026amp; Obeten\u0026lsquo;s analysis reveals that a significant number of studies lack replication by other researchers. The authors observed that multiple studies often recycle the frequently employed datasets. As a result, it is advisable to use datasets and methodologies that have previously been used in other research projects, allowing researchers to compare their findings with those of others.\u003c/p\u003e \u003cp\u003eIn addition to the metrics threshold derivation approach for code smell detection, there are many other types of detection methods for code smells. The automatic tool based detection technique by [\u003cspan citationid=\"CR18\" class=\"CitationRef\"\u003e18\u003c/span\u003e] is the primary method for detecting smells. The manual approach by [\u003cspan citationid=\"CR19\" class=\"CitationRef\"\u003e19\u003c/span\u003e] identifies code smells and design flaws based on human perception and follows detection guidelines. However, this method is time-consuming and prone to human error. Furthermore, it is extremely difficult and inefficient to detect smells of software applications of a large scale. The search-based technique by Rasool \u0026amp; Arshad [\u003cspan citationid=\"CR11\" class=\"CitationRef\"\u003e11\u003c/span\u003e] employs several algorithms and heuristics to identify code smells. The search process primarily employs machine learning (ML) techniques, where an ML classifier chooses a set of predictors for prediction. The quality of a well-balanced dataset and the accuracy of the training model determine the effectiveness of ML approaches [\u003cspan citationid=\"CR20\" class=\"CitationRef\"\u003e20\u003c/span\u003e]. By analyzing the source code, the change history-based analysis examines how code elements evolve and identifies code smells. The process involves mining the commit log of versioned repositories and searching for instances of the word \u0026rdquo;refactor\u0026rdquo; in the logs [\u003cspan citationid=\"CR21\" class=\"CitationRef\"\u003e21\u003c/span\u003e]. Strategy-based approach by [\u003cspan citationid=\"CR22\" class=\"CitationRef\"\u003e22\u003c/span\u003e] leverages measurements, logical expressions, and rules to identify and detect smells without following any standardized set of criteria. Visualization-based approach by [\u003cspan citationid=\"CR22\" class=\"CitationRef\"\u003e22\u003c/span\u003e] integrates humans\u0026rsquo; manual detection of code smells with an automated detection approach. This approach cannot handle large-scale projects and necessitates manual work by developers, which can lead to human mistakes. The cooperative-based approach by [\u003cspan citationid=\"CR22\" class=\"CitationRef\"\u003e22\u003c/span\u003e] is an innovative approach that employs a variety of actions to improve the detection process\u0026rsquo;s precision. They use various parallel techniques, such as genetic algorithms, to reduce the search area and speed up the search procedure.\u003c/p\u003e \u003cp\u003eBigonha \u003cem\u003eet al\u003c/em\u003e. [\u003cspan citationid=\"CR4\" class=\"CitationRef\"\u003e4\u003c/span\u003e] proposed the detection of bad smell based on metrics and threshold values, evaluated metrics at the class level for fault prediction, and identified the fault-prone classes using these metrics values. This study provides support for software quality assurance activities. Gradišnik \u003cem\u003eet al.\u003c/em\u003e [\u003cspan citationid=\"CR23\" class=\"CitationRef\"\u003e23\u003c/span\u003e] proposed a methodology for fault prediction using God class code smells and developed methods for automatically determining the code smell thresholds. Using Grid Search techniques, they define the God-class threshold and predict defects in open-source Java projects. Khan \u0026amp; Ashraf [\u003cspan citationid=\"CR24\" class=\"CitationRef\"\u003e24\u003c/span\u003e] conducted a literature review on the prediction of software faults using code metrics, code smells, and an ensemble deep learning method. They explain the clustering and pseudo-labelling techniques used in dataset labelling. Um-E-Safia \u0026amp; Khan [\u003cspan citationid=\"CR25\" class=\"CitationRef\"\u003e25\u003c/span\u003e] proposed the impact of code smells at both the class and method levels in a fault prediction model. Boucher \u0026amp; Badri [\u003cspan citationid=\"CR26\" class=\"CitationRef\"\u003e26\u003c/span\u003e] proposed a strategy for threshold derivation; they derived thresholds based on the ROC, Alves Ranking, and Bayes network and compared all the techniques concerning fault-prone class prediction. They argue that the Alves ranking method is ineffective for fault-prone module prediction, whereas the ROC curve method is partially effective for fault-proneness prediction on a few datasets. Sotto-Mayor \u0026amp; Kalech [\u003cspan citationid=\"CR27\" class=\"CitationRef\"\u003e27\u003c/span\u003e] proposed a fault prediction model that uses smell as a predictor to identify defect-prone classes and optimizes testing phases by predicting software defects. In software fault prediction, they discovered that code smell outperformed code metrics as a predictor. On ROC AUC, the code-smell-based prediction model improves performance by 6.50%.\u003c/p\u003e \u003cp\u003eShatnawi \u003cem\u003eet al\u003c/em\u003e. [\u003cspan citationid=\"CR28\" class=\"CitationRef\"\u003e28\u003c/span\u003e] utilize ROC curves to establish thresholds for code metrics. A Receiver Operating Characteristic (ROC) curve evaluates an independent variable\u0026rsquo;s categorization performance by testing various threshold values and observing its performance at different levels. Bender introduced the VARL method (value of an acceptable risk level) as an alternative approach for calculating the threshold. This approach involves converting a univariate logistic regression model into threshold values using a precise mathematical procedure. Several studies [\u003cspan citationid=\"CR29\" class=\"CitationRef\"\u003e29\u003c/span\u003e],[\u003cspan citationid=\"CR30\" class=\"CitationRef\"\u003e30\u003c/span\u003e] have examined its potential to predict fault-proneness, despite not initially developing it for software engineering. This research\u0026rsquo;s results show that the VARL approach produces certain acceptable threshold values Malhotra \u0026amp; Bansal [\u003cspan citationid=\"CR31\" class=\"CitationRef\"\u003e31\u003c/span\u003e], but other reports suggest that this method fails to identify suitable threshold values for a particular dataset or system. Ferreira \u003cem\u003eet al.\u003c/em\u003e [\u003cspan citationid=\"CR32\" class=\"CitationRef\"\u003e32\u003c/span\u003e] introduced an alternative method for determining source code metrics thresholds, which involved fitting the distributions of these metrics to an optimal probability distribution. They subsequently established three categories for each source code metric: excellent, acceptable, and poor. Oliveira \u003cem\u003eet al.\u003c/em\u003e [\u003cspan citationid=\"CR33\" class=\"CitationRef\"\u003e33\u003c/span\u003e] devised a method for calculating relative threshold values in source code metrics for fault prediction. They utilized a statistical method to establish thresholds derived from the distribution of measurements. Singh \u0026amp; Chhabra [\u003cspan citationid=\"CR17\" class=\"CitationRef\"\u003e17\u003c/span\u003e] used metaheuristic algorithms to derive thresholds of software metrics for software fault prediction. They proved that ROC-based techniques proposed by [\u003cspan citationid=\"CR28\" class=\"CitationRef\"\u003e28\u003c/span\u003e] to find thresholds are not as effective as using their metaheuristics, which prompts us to use metaheuristics for thresholds derivation of code metrics for God Class code smell. Threshold derivation of software metrics for fault proneness and change proneness have been suggested in the existing literature by Kaur \u0026amp; Singh [\u003cspan citationid=\"CR12\" class=\"CitationRef\"\u003e12\u003c/span\u003e], but similar research and experiments have not been performed to the best of our knowledge; no study used the CK metric suite to derive thresholds of software metrics for code smell detection.\u003c/p\u003e \u003cp\u003eReferring to the literature, we discovered that software prediction models based on thresholds are faster than models based on machine learning. Once the threshold value for the code metric is determined, it can be used on software projects to detect code smells and faulty modules. In this case, metrics thresholds have been used. This saves time and effort for the testing team. Hence, for our study, we are looking at four different metaheuristic threshold derivation techniques. We assumed that the algorithms of genetic algorithm (GA), particle swarm optimization (PSO), differential evolution (DE), and artificial bee colony (ABC) would be the most effective.\u003c/p\u003e"},{"header":"3. Research Methodology","content":"\u003cp\u003eThis section illustrates the threshold derivation model using the metaheuristic algorithm. We apply four metaheuristic algorithms: Genetic Algorithm (GA), Particle Swarm Optimization (PSO), Artificial Bee Colony (ABC), and Differential Evolution (DE) to derive optimal thresholds of code metrics for God-class smell detection. The objective function is to maximize the combined value of sensitivity and specificity. Fig. 1 illustrates the comprehensive framework of the proposed model using a block diagram. The phases of the proposed methodology are explained below. \u0026nbsp;\u003c/p\u003e\n\u003col\u003e\n \u003cli\u003ePrepare the dataset by extracting code metrics for software projects as predictors and label each class as 0 or 1, label-1 for classes having God Class smell, and label-0 for classes that do not have God Class smell.\u003c/li\u003e\n \u003cli\u003eNormalize the code metrics value in the range of 0 and 1.\u003c/li\u003e\n \u003cli\u003eSelect the relevant metrics by calculating the AUC score using a logistic regression classifier and drop those metrics with an AUC value of less than 0.7.\u003c/li\u003e\n \u003cli\u003eSplit the dataset into a training set for threshold derivation and a testing set for performance evaluation of the generated threshold value.\u003c/li\u003e\n \u003cli\u003eUse the training dataset to find the optimal thresholds using the metaheuristic algorithms (GA, PSO, ABC, DE). Each algorithm tries to find optimal thresholds iteratively until convergence to maximize the objective function (specificity + sensitivity).\u0026nbsp;\u003c/li\u003e\n \u003cli\u003eAfter deriving the thresholds using metaheuristic algorithms, the threshold values are returned in denormalized form and validated on the testing dataset for empirical evaluation, and classification metric accuracy is computed on the testing dataset.\u003c/li\u003e\n\u003c/ol\u003e"},{"header":"4.\tExperimentation","content":"\u003cp\u003e\u003cstrong\u003e4.1. Data Collection\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn this section, the software projects used for the analysis, how metrics were extracted, and how classes were labelled to frame the dataset have been described in brief. The summary of the software project used and smell distribution in each software project has been depicted in Table 1. Camel 1.4 has the least smelly classes with 3.44% and Ant 1.6 has the most smelly classes with 14.82%. The authors chose these software projects because of their widespread use in fault prediction and to ensure replication and comparison of our findings. The authors conducted experiments on eight object-oriented systems (16 versions) built in Java to establish threshold values. We extracted the metrics for the software project from the Ckjm\u003ca href=\"#_ftn1\" name=\"_ftnref1\" title=\"\"\u003e\u003c/a\u003e\u003csup\u003e1\u003c/sup\u003e metrics tool and used the static analyser PMD\u003ca href=\"#_ftn2\" name=\"_ftnref2\" title=\"\"\u003e\u003c/a\u003e\u003csup\u003e2\u003c/sup\u003e (Programming Mistake Detector) to label the smells in the classes. The above-mentioned tools have been widely used in previous research.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.2. Parameter Configuration\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn this section brief description of how the parameters for the used metaheuristic algorithms were set up. For GA (pop size = 50, num generations = 100, num parents = 20, and mutation rate = 0.1), for PSO (pop size = 50, num iterations = 100, inertia weight = 0.5, cognitive const = 1.5, and social const = 1.5), parameters for DE are (pop size = 50, num iterations = 100, F(scaling factor) = 0.4, CR(crossover probability) = 0.5), and for ABC (pop size = 50, num iterations = 100, limit = 10). In the next section, we will interpret our results and discuss them.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTable\u0026nbsp;\u003c/strong\u003e\u003cstrong\u003e1\u003c/strong\u003e\u003cstrong\u003e:\u003c/strong\u003e Description of Software Projects used for Analysis.\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eSoftware\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eVersions\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eTotal Classes\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eSmell Percentage\u003c/strong\u003e\u003c/p\u003e\n \u003cp\u003e(God Class)\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003eAnt\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e351\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e14.82%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.7\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e745\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e14.63%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003eCamel\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.4\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e872\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e3.44%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e965\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e3.73%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003ejEdit\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e4.1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e312\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e8.33%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e4.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e367\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e11.71%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003ePoi\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e2.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e385\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e5.19%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e3.0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e442\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e6.78%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003eSynapse\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e222\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e5.85%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e256\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e8.59%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003eVelocity\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e214\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e3.73%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e229\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e4.80%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003eXalan\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e2.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e803\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e11.08%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e2.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e885\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e10.50%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" style=\"width: 19px;\"\u003e\n \u003cp\u003eXerces\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.3\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e453\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e6.62%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 19px;\"\u003e\n \u003cp\u003e1.4\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 26px;\"\u003e\n \u003cp\u003e588\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 33px;\"\u003e\n \u003cp\u003e9.18%\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e4.3. Evaluation metrics\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe performance of the proposed model is evaluated using accuracy [34] as a comparative criterion and the optimizer\u0026rsquo;s effectiveness. Accuracy can be calculated using the formula in Equation 1.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"data:image/png;base64,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\" width=\"513\" height=\"75\"\u003e\u003c/p\u003e"},{"header":"5. Metrics selection for God class","content":"\u003cp\u003eThis section discusses the analysis of metrics selection. The authors have finalized the dataset after collecting metrics and labelling of the classes. The authors performed normalization of the software metrics in the range between 0 and 1, computed the AUC value of each metric, and discarded metrics with an AUC value less than 0.7 for further analysis due to their low discriminating power. The AUC value of the selected metrics among all the datasets has been depicted in Fig. 2. Fig. 2(a) shows the AUC value of the LOC metric across all the software projects; all software projects have the AUC value greater than 0.7; Xalan 2.6 has the least AUC value of 0.86. Fig. 2(b) shows the AUC value for the CBO metric across all the software projects; Velocity 1.6 has the least value of 0.74. Fig. 2(c) shows the AUC value of the RFC metric for all the software projects, and Fig. 2(d) demonstrates the AUC value of the WMC metric for all the software projects used for analysis. Bender [9] provides a clear explanation for selecting the AUC value 0.7 as the cutoff. After framing the dataset, it is split into two parts for training and testing purposes in the ratio of 80 and 20, respectively. The metaheuristic algorithms utilize the training dataset to generate optimal thresholds, which they then validate on the testing dataset. After calculating the AUC value, the first assumption we can make is that the LOC, CBO, RFC, and WMC metrics are useful indicators of God Class code smells. These metrics, based on the AUC score, fall into the fair and acceptable classification.\u0026nbsp;\u003c/p\u003e"},{"header":"6. Result and discussion","content":"\u003cp\u003eThis section presents and discusses the findings of the experiment. The results of the classification accuracy of God Class code smell detection based on derived thresholds, along with the thresholds of selected metrics are depicted in the tabular form.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eTables 2 and 3 illustrate the accuracy of the threshold derivation and threshold value of each metric for each software system used in this study. Table 2 shows the results for GA and PSO, while Table 3 demonstrates the results for DE and ABC. The results show that threshold values are not universal but rather project-specific, meaning they vary for each project. The threshold value for the LOC metric ranges from [104-407], CBO [08-69], RFC [38-95], and WMC [18-72]. If any selected metric value exceeds the derived threshold value of the metric, we will declare the particular class as a God class. For example, suppose an optimizer (Genetic Algorithm) derives thresholds Th (LOC) = 183, Th (CBO) = 42, Th (RFC) = 54, and Th (WMC) = 43 for Ant 1.6 if any class of this software project has any metric value greater than these thresholds than that class will be a God class based on the threshold derived by GA optimizer. For Camel 1.4 every optimizer gives their best accuracy, GA optimizer gives the best accuracy of 95.83% while for Xerces 1.3 GA optimizer gives the least accuracy, PSO gives the best accuracy of 96.52% for the Camel 1.4 and least accuracy of 81.96% for Jedit 4.2, DE also shows best accuracy of 96.87% for the same project while least accuracy of 81.11% for Jedit 4.2, and ABC also gives the best accuracy of 99.30% for Camel 1.4 while least accuracy of 89.86% for Xalan 2.6.\u003cstrong\u003e\u0026nbsp;\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTable\u0026nbsp;\u003c/strong\u003e\u003cstrong\u003e2\u003c/strong\u003e\u003cstrong\u003e:\u0026nbsp;\u003c/strong\u003eAccuracy and Metrics Threshold Using GA \u0026amp; PSO.\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eDataset\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd colspan=\"4\" valign=\"top\" style=\"width: 30px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eGA\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd colspan=\"5\" valign=\"top\" style=\"width: 42px;\"\u003e\n \u003cp\u003e\u003cstrong\u003ePSO\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eLOC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eCBO\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eRFC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e\u003cem\u003eWMC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e\u003cem\u003eAccuracy\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eLOC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eCBO\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eRFC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e\u003cem\u003eWMC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e\u003cem\u003eAccuracy\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eAnt-1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e183\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e54\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e43\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9137\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e173\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e33\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e56\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e27\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9310\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eAnt-1.7\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e308\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e54\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e53\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e26\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9230\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e282\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e17\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e68\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e28\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9271\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eCamel-1.4\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e241\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e54\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e83\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9583\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e262\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e74\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e29\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9652\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eCamel-1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e247\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e56\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e94\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9529\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e255\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e32\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e75\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e32\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9247\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eJedit-4.1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e171\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e41\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e80\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e37\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9134\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e177\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e45\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e91\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e45\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9326\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eJedit-4.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e212\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e50\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e83\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e41\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9010\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e211\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e23\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e52\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8196\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003ePOI-2.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e211\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e23\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e52\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8196\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e241\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e17\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e62\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e41\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9453\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003ePOI-3.0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e205\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e39\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e80\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e52\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8698\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e210\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e25\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e62\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e46\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9109\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eSynapse-1.1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e139\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e37\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e69\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e28\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9324\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e138\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e29\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e71\u0026lsquo;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e18\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9336\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eSynapse-1.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e155\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e39\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e62\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e26\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9058\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e169\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e29\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e20\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9176\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eVelocity-1.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e108\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e34\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e61\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e35\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8873\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e126\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e20\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e48\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e18\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9295\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eVelocity-1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e125\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e37\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e61\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e31\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8815\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e122\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e57\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e15\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9602\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eXalan-2.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e403\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e71\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e59\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8619\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e266\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e61\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e68\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e46\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8656\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eXalan-2.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e279\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e69\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e95\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e72\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8666\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e289\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e53\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e122\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e67\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8933\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eXerces-1.3\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e206\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e08\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e54\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8066\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e124\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e30\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e74\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e55\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8266\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 16px;\"\u003e\n \u003cp\u003eXerces-1.4\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e158\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e43\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e73\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e43\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8820\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e192\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e19\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e83\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e35\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9333\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026nbsp;\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTable\u0026nbsp;\u003c/strong\u003e\u003cstrong\u003e3\u003c/strong\u003e\u003cstrong\u003e:\u0026nbsp;\u003c/strong\u003eAccuracy and Metrics Threshold Using DE \u0026amp; ABC.\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n \u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd rowspan=\"2\" valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eDataset\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd colspan=\"4\" valign=\"top\" style=\"width: 30px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eDE\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u0026nbsp;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd colspan=\"5\" valign=\"top\" style=\"width: 42px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eABC\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eLOC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eCBO\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eRFC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e\u003cem\u003eWMC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e\u003cem\u003eAccuracy\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eLOC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eCBO\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e\u003cem\u003eRFC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e\u003cem\u003eWMC\u003c/em\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e\u003cem\u003eAccuracy\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eAnt-1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e184\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e40\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e82\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9568\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e188\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e43\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e59\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9655\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eAnt-1.7\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e345\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e55\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e71\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e18\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9352\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e327\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e17\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e132\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e52\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9514\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eCamel-1.4\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e259\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e50\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e77\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e46\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9687\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e242\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e54\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e69\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e51\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9930\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eCamel-1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e304\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e52\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e74\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e31\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9529\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e243\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e57\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e93\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9843\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eJedit-4.1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e177\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e78\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e39\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9230\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e178\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e90\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e30\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9423\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eJedit-4.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e177\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e46\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e56\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e30\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8114\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e211\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e43\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e74\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9262\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003ePOI-2.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e246\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e28\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e67\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e28\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9375\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e218\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e22\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e84\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9453\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003ePOI-3.0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e211\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e28\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e61\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e29\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9315\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e207\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e40\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e78\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e54\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9383\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eSynapse-1.1\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e161\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e37\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e66\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e19\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9458\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e143\u0026lsquo;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e71\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e29\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9864\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eSynapse-1.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e156\u0026lsquo;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e39\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e72\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e19\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9529\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e162\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e40\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e59\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e31\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9647\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eVelocity-1.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e104\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e36\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e25\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9014\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e127\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e62\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e36\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9718\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eVelocity-1.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e131\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e37\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e48\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e30\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9605\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e132\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e53\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e25\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9473\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eXalan-2.5\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e383\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e65\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e45\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e67\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9029\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e411\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e73\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e47\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e60\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9104\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eXalan-2.6\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e407\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e69\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e39\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8880\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e417\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e71\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e42\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e75\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.8986\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eXerces-1.3\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e165\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e8\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e72\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e44\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.8666\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e207\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e32\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e37\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e48\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e\u003cstrong\u003e0.9200\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd valign=\"top\" style=\"width: 15px;\"\u003e\n \u003cp\u003eXerces-1.4\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e158\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e38\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e49\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e45\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9230\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e175\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e44\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 7px;\"\u003e\n \u003cp\u003e83\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 8px;\"\u003e\n \u003cp\u003e32\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd valign=\"top\" style=\"width: 11px;\"\u003e\n \u003cp\u003e0.9282\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n \u003c/table\u003e\n\u003c/div\u003e\n\u003cp\u003eFig.3 compares the accuracy of all the optimizers used across all datasets. The metaheuristic algorithm\u0026rsquo;s accuracy varies from one optimizer to another. ABC outperforms all the dataset in accuracy measurement except Velocity 1.6, and Xerces 1.4. Cumulatively, for majority of datasets ABC is giving the better results, followed by DE, PSO, and GA. The minimum accuracy for the proposed model is 0.8066 for Xerces 1.3 using GA, and the best accuracy is 0.9655 for Ant 1.6 using ABC. The accuracy of each optimizer depends on various factors; dataset size and smell distribution are also factors contributing to accuracy.\u0026nbsp;\u003c/p\u003e"},{"header":"7. Threats to validity","content":"\u003cp\u003eNumerous factors influence software production, including the software process type, application domain, and additional elements. Consequently, we cannot assert that these thresholds are applicable to all systems. Furthermore, it is not appropriate to generalize the threshold values determined in this research article. Furthermore, the thresholds determined by metaheuristic algorithms are not perfect in all scenarios. Metaheuristics consistently provide approximate solutions.\u003c/p\u003e"},{"header":"8. Conclusion and Future Scope","content":"\u003cp\u003eThis research article proposed a new metaheuristic-based threshold derivation technique for God class code smell detection. GA, PSO, DE, and ABC optimizers were used to derive thresholds of software metrics for God class detection. Based on the AUC score for sixteen open-source object-oriented Java projects, useful software metrics for God class code smells have been selected; then thresholds for these selected metrics were used for God class detection. On comparing the accuracy results of all the used optimizers, it was observed that ABC optimizer performs better than all other metaheuristic optimizers used in this analysis. In future research, this metaheuristic technique may be applied for threshold derivation of additional code smells such as Long Method, Feature Envy, and Data Class, which are extensively used in software engineering research for reducing maintenance efforts.\u003c/p\u003e"},{"header":"Declarations","content":"\u003ch2\u003eConflicts of interests\u003c/h2\u003e\n\u003cp\u003eThe author asserts that they possess no conflicts of interest.\u003c/p\u003e\n\u003ch2\u003eAuthor Contribution\u003c/h2\u003e\n\u003cp\u003eKapil Sharma \u0026ndash; Implemented the proposed methodology and wrote the original draft.Jitender Kumar Chhabra \u0026ndash; Supervision, review, and editing.\u003c/p\u003e\n\u003ch2\u003eData availability\u003c/h2\u003e\n\u003cp\u003eData will be provided on a fair request to the associated author.\u003c/p\u003e"},{"header":"References","content":"\u003col\u003e\n\u003cli\u003eAlenezi, M.: Internal quality evolution of open-source software systems. Appl. Sci. 11, 5690 (2021).\u003c/li\u003e\n\u003cli\u003eBansiya, J., Davis, C.G.: A hierarchical model for object-oriented design quality assessment. IEEE Trans. Softw. Eng. 28, 4\u0026ndash;17 (2002).\u003c/li\u003e\n\u003cli\u003eElish, M.O., Aljamaan, H., Ahmad, I.: Three empirical studies on predicting software maintainability using ensemble methods. Soft Comput. 19, 2511\u0026ndash;2524 (2015).\u003c/li\u003e\n\u003cli\u003eBigonha, M.A.S., Ferreira, K., Souza, P., Sousa, B., Janu\u0026aacute;rio, M., Lima, D.: The usefulness of software metric thresholds for detection of bad smells and fault prediction. Inf. Softw. Technol. 115, 79\u0026ndash;92 (2019).\u003c/li\u003e\n\u003cli\u003eRiel, A.J.: Object-oriented design heuristics. Addison-Wesley Longman Publishing Co., Inc. (1996).\u003c/li\u003e\n\u003cli\u003eBrown, W.H., Malveau, R.C., McCormick, H.W.S., Mowbray, T.J.: AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley \\\u0026amp; Sons, Inc. (1998).\u003c/li\u003e\n\u003cli\u003eCounsell, S., Mendes, E.: Size and frequency of class change from a refactoring perspective. In: Third International IEEE Workshop on Software Evolvability 2007. pp. 23\u0026ndash;28 (2007).\u003c/li\u003e\n\u003cli\u003eYamashita, A., Moonen, L.: Exploring the impact of inter-smell relations on software maintainability: An empirical study. In: 2013 35th International Conference on Software Engineering (ICSE). pp. 682\u0026ndash;691 (2013).\u003c/li\u003e\n\u003cli\u003eBender, R.: Quantitative risk assessment in epidemiological studies investigating threshold effects. Biometrical J. J. Math. Methods Biosci. 41, 305\u0026ndash;319 (1999).\u003c/li\u003e\n\u003cli\u003eMoha, N.: Detection and correction of design defects in object-oriented designs. In: Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion. pp. 949\u0026ndash;950 (2007).\u003c/li\u003e\n\u003cli\u003eRasool, G., Arshad, Z.: A review of code smell mining techniques. J. Softw. Evol. Process. 27, 867\u0026ndash;895 (2015).\u003c/li\u003e\n\u003cli\u003eKaur, N., Singh, H.: An empirical assessment of threshold techniques to discriminate the fault status of software. J. King Saud Univ. Inf. Sci. 34, 6339\u0026ndash;6353 (2022).\u003c/li\u003e\n\u003cli\u003eChidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Trans. Softw. Eng. 20, 476\u0026ndash;493 (1994).\u003c/li\u003e\n\u003cli\u003eIsong, B., Obeten, E.: A systematic review of the empirical validation of object-oriented metrics towards fault-proneness prediction. Int. J. Softw. Eng. Knowl. Eng. 23, 1513\u0026ndash;1540 (2013).\u003c/li\u003e\n\u003cli\u003eLorenz, M., Kidd, J.: Object-oriented software metrics: a practical guide. Prentice-Hall, Inc. (1994).\u003c/li\u003e\n\u003cli\u003eJabangwe, R., B\u0026ouml;rstler, J., \u0026Scaron;mite, D., Wohlin, C.: Empirical evidence on the link between object-oriented measures and external quality attributes: a systematic literature review. Empir. Softw. Eng. 20, 640\u0026ndash;693 (2015).\u003c/li\u003e\n\u003cli\u003eSingh, M., Chhabra, J.K.: Improved Software Fault Prediction Model Based on Optimal Features Set and Threshold Values Using Metaheuristic Approach. SN Comput. Sci. 4, 770 (2023).\u003c/li\u003e\n\u003cli\u003eVidal, S., Berra, I., Zulliani, S., Marcos, C., Pace, J.A.D.: Assessing the refactoring of brain methods. ACM Trans. Softw. Eng. Methodol. 27, 1\u0026ndash;43 (2018).\u003c/li\u003e\n\u003cli\u003eLacerda, G., Petrillo, F., Pimenta, M., Gu\u0026eacute;h\u0026eacute;neuc, Y.G.: Code smells and refactoring: A tertiary systematic review of challenges and observations. J. Syst. Softw. 167, 110610 (2020).\u003c/li\u003e\n\u003cli\u003eDi Nucci, D., Palomba, F., Tamburri, D.A., Serebrenik, A., De Lucia, A.: Detecting code smells using machine learning techniques: Are we there yet? In: 2018 ieee 25th international conference on software analysis, evolution and reengineering (saner). pp. 612\u0026ndash;621 (2018).\u003c/li\u003e\n\u003cli\u003ePalomba, F., Bavota, G., Di Penta, M., Oliveto, R., De Lucia, A., Poshyvanyk, D.: Detecting bad smells in source code using change history information. In: 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE). pp. 268\u0026ndash;278 (2013).\u003c/li\u003e\n\u003cli\u003eAbuHassan, A., Alshayeb, M., Ghouti, L.: Software smell detection techniques: A systematic literature review. J. Softw. Evol. Process. 33, e2320 (2021).\u003c/li\u003e\n\u003cli\u003eGradi\u0026scaron;nik, M., Beranič, T., Karakatič, S., Mausa\u0026scaron;, G.: Adapting God Class thresholds for software defect prediction: A case study. In: 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO). pp. 1537\u0026ndash;1542 (2019).\u003c/li\u003e\n\u003cli\u003eKhan, T.A., Ashraf, M.: Software Fault Prediction Using Combinations of Code Smells, Code Metrics, and Code Smell Metrics With Ensemble and Deep Learning. (2023).\u003c/li\u003e\n\u003cli\u003eUm-E-Safia, U.-E., Khan, T.A.: Impact Of Code Smells On Software Fault Prediction At Class Level And Method Level. In: 2022 International Conference on Frontiers of Information Technology (FIT). pp. 326\u0026ndash;331 (2022).\u003c/li\u003e\n\u003cli\u003eBoucher, A., Badri, M.: Using software metrics thresholds to predict fault-prone classes in object-oriented software. In: 2016 4th Intl Conf on Applied Computing and Information Technology/3rd Intl Conf on Computational Science/Intelligence and Applied Informatics/1st Intl Conf on Big Data, Cloud Computing, Data Science \\\u0026amp; Engineering (ACIT-CSII-BCD). pp. 169\u0026ndash;176 (2016).\u003c/li\u003e\n\u003cli\u003eSotto-Mayor, B., Kalech, M.: Cross-project smell-based defect prediction. Soft Comput. 25, 14171\u0026ndash;14181 (2021).\u003c/li\u003e\n\u003cli\u003eShatnawi, R., Li, W., Swain, J., Newman, T.: Finding software metrics threshold values using ROC curves. J. Softw. Maint. Evol. Res. Pract. 22, 1\u0026ndash;16 (2010).\u003c/li\u003e\n\u003cli\u003eCatal, C., Sevim, U., Diri, B.: Clustering and metrics thresholds based software fault prediction of unlabeled program modules. In: 2009 Sixth international conference on information technology: new generations. pp. 199\u0026ndash;204 (2009).\u003c/li\u003e\n\u003cli\u003eRosenberg, L.: Applying and interpreting object oriented metrics. In: Software technology conference, Utah, April 1998 (1998).\u003c/li\u003e\n\u003cli\u003eMalhotra, R., Bansal, A.J.: Fault prediction considering threshold effects of object-oriented metrics. Expert Syst. 32, 203\u0026ndash;219 (2015).\u003c/li\u003e\n\u003cli\u003eFerreira, K.A.M., Bigonha, M.A.S., Bigonha, R.S., Mendes, L.F.O., Almeida, H.C.: Identifying thresholds for object-oriented software metrics. J. Syst. Softw. 85, 244\u0026ndash;257 (2012).\u003c/li\u003e\n\u003cli\u003eOliveira, P., Valente, M.T., Lima, F.P.: Extracting relative thresholds for source code metrics. In: 2014 Software Evolution Week-IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE). pp. 254\u0026ndash;263 (2014).\u003c/li\u003e\n\u003cli\u003eStallings, W.M., Gillmore, G.M.: A note on \u0026ldquo;accuracy\u0026rdquo; and \u0026ldquo;precision.\u0026rdquo; J. Educ. Meas. 8, 127\u0026ndash;129 (1971).\u003c/li\u003e\n\u003c/ol\u003e"},{"header":"Footnotes","content":"\u003col\u003e\u003cli\u003e\u003cspan\u003e \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://github.com/dspinellis/ckjm\u003c/span\u003e\u003cspan address=\"https://github.com/dspinellis/ckjm\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003cspan\u003e \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://pmd.github.io/\u003c/span\u003e\u003cspan address=\"https://pmd.github.io/\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ol\u003e"}],"fulltextSource":"","fullText":"","funders":[],"hasAdminPriorityOnWorkflow":false,"hasManuscriptDocX":true,"hasOptedInToPreprint":true,"hasPassedJournalQc":"","hasAnyPriority":false,"hideJournal":true,"highlight":"","institution":"","isAcceptedByJournal":false,"isAuthorSuppliedPdf":false,"isDeskRejected":"","isHiddenFromSearch":false,"isInQc":false,"isInWorkflow":false,"isPdf":false,"isPdfUpToDate":true,"isWithdrawnOrRetracted":false,"journal":{"display":true,"email":"[email protected]","identity":"researchsquare","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":true,"externalIdentity":"","sideBox":"","snPcode":"","submissionUrl":"/submission","title":"Research Square","twitterHandle":"researchsquare","acdcEnabled":true,"dfaEnabled":false,"editorialSystem":"","reportingPortfolio":"","inReviewEnabled":false,"inReviewRevisionsEnabled":true},"keywords":"Code Smell, God Class, Metaheuristic, Software Metrics, Thresholds","lastPublishedDoi":"10.21203/rs.3.rs-6255844/v1","lastPublishedDoiUrl":"https://doi.org/10.21203/rs.3.rs-6255844/v1","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"manuscriptAbstract":"\u003cp\u003eCode smell is an indicator of the suboptimal design of the source code. The presence of code smell in the source code signifies that the developer has not given utmost attention while designing the source code, which may result in a high maintenance cost for the software. Detection of these smells is crucial in the early phase of software development to reduce maintenance costs. Out of all code smells, the God class is the most prominently studied and considered undesirable from an object-oriented design perspective. This paper proposes a detection technique for God-class smell based on the threshold of software metrics. The paper finds four metrics relevant to God class detection based on the AUC score. Various methods can detect God-class code smell, but we have opted for a threshold detection method due to its ease of automation and faster speed. We have derived thresholds of software metrics (CK metrics) for God class detection using metaheuristic optimizers. The optimizers include genetic algorithms, particle swarm optimizers, differential evolution, and artificial bee colony optimizers. The proposed technique has been tested on sixteen open-source object-oriented Java projects. Results show that the artificial bee colony optimizer yields better results than other used optimizers.\u003c/p\u003e","manuscriptTitle":"Thresholds Derivation of Software Code Metrics for God Class Detection Using Metaheuristic Approaches","msid":"","msnumber":"","nonDraftVersions":[{"code":1,"date":"2025-04-01 08:42:17","doi":"10.21203/rs.3.rs-6255844/v1","editorialEvents":[{"type":"communityComments","content":0}],"status":"published","journal":{"display":true,"email":"[email protected]","identity":"researchsquare","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":true,"externalIdentity":"","sideBox":"","snPcode":"","submissionUrl":"/submission","title":"Research Square","twitterHandle":"researchsquare","acdcEnabled":true,"dfaEnabled":false,"editorialSystem":"","reportingPortfolio":"","inReviewEnabled":false,"inReviewRevisionsEnabled":true}}],"origin":"","ownerIdentity":"fcd0815e-5120-439f-a265-a3fd1a1198ab","owner":[],"postedDate":"April 1st, 2025","published":true,"recentEditorialEvents":[],"rejectedJournal":[],"revision":"","amendment":"","status":"posted","subjectAreas":[],"tags":[],"updatedAt":"2025-05-29T19:08:32+00:00","versionOfRecord":[],"versionCreatedAt":"2025-04-01 08:42:17","video":"","vorDoi":"","vorDoiUrl":"","workflowStages":[]},"version":"v1","identity":"rs-6255844","journalConfig":"researchsquare"},"__N_SSP":true},"page":"/article/[identity]/[[...version]]","query":{"redirect":"/article/rs-6255844","identity":"rs-6255844","version":["v1"]},"buildId":"8U1c8b4HqxoKbykW_rLl7","isFallback":false,"isExperimentalCompile":false,"dynamicIds":[84888],"gssp":true,"scriptLoader":[]}

Text is read by the "Ask this paper" AI Q&A widget below. Extraction quality varies by source — PMC NXML preserves structure cleanly, OA-HTML may include some navigation residue, and OA-PDF can have broken hyphenation. The publisher copy (via DOI) is the canonical version.

My notes (saved in your browser only)

Ask this paper AI returns verbatim quotes from the full text · source: preprint-html

Answers must be backed by verbatim quotes from this paper's full text. Hallucinated quotes are dropped automatically; if no verbatim passage answers the question, we say so. How this works

Citation neighborhood (no data yet)

We don't have any in-corpus citations linked to this paper yet. This is a recent paper (2025) — citers typically take a year or two to land, and the OpenAlex reference graph may still be filling in.

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00