Abstract
Measurement in software is a basic process in all parts of the software development life cycle because it helps to express the quality of a software. But in software engineering, measurement is difficult and not precise. However, researchers accept that any measure is better than zero measure. In this chapter, the software metrics are explained, and some software testing tools are introduced. The software metric sets of Chidamber and Kemerer Metric Set (CK Metric Set), MOOD Metric Set (Brito e Abreu Metric Set), QMOOD Metric Set (Bansiya and Davis Software Metric Set), Rosenberg and Hyatt Metric Set, Lorenz and Kidd Metric Set (L&K Metric Set) are explained. The software testing tools such as Understand, Sonargraph, Findbugs, Metrics, PMD, Coverlipse, Checkstyle, SDMetrics, and Coverity are introduced. Also, 17 literature studies are summarized.
TopBackground
In the literature, there are many studies that investigate software metrics in different software sets. Table 1 shows a summary about these studies.
Table 1. A summary about software metric studies
Reference | Dataset | Metric Set | Methods |
Briand et al., 1993
| 146 components of an ADA system (260,000 lines of code) | Library Unit Aggregation metrics, Compilation unit metrics | applied logistic regression, classification trees, OSR |
Lanubile et al., 1995
| 27 academic projects in University of Bari | 11 method level metrics which include Halstead, McCabe, and Henry and Kafura information flow metrics | component analysis, logistic regression, logical classification approaches, NN, holographic networks |
Khoshgoftaar et al., 1997
| 13 million lines of code | Type-I, Type-II, and overall misclassification rates | NN and discriminant model |
Ohlsson et al.,1998 | Ericsson telecommunications system | Misclassification rate | PCA, applied discriminant analysis for classification |
Menzies et al., 2004
| public NASA datasets | method level metrics | LSR, model trees, ROCKY and Delphi detectors |
Kanmani et al, 2004
| Pondicherry Engineering College | 64 metrics | GRNN |
Koru& Liu, 2005
| NASA datasets | class level metrics | J48, K-Star, and Random Forests |
Challagulla et al., 2005
| NASA datasets | level metrics | linear regression, SVR, NN, support vector logistic regression, Naive Bayes, IBL, J48, and 1-R techniques |
Gyimothy et al., 2005
| -. | object oriented metrics | logistic regression, linear regression, decision trees, NN |
Hassan & Holt, 2005
| 6 open source projects | APA metrics | MFM, MRM, MFF, MRF |
Zhou & Leung, 2006
| NASA’s KC1 dataset | Chidamber–Kemerer metrics | Logistic regression, Naive Bayes, Random Forests |
Boetticher, 2006
| NASA public datasets | Performance evluation metrics | J48 and naive bayes |
Mertik et al., 2006
| Nasa dataset | level metrics | C4.5, unprunned C4.5, multimethod, SVM |
Bibi et al., 2008
| Pekka dataset of Finland bank | Disk usage processor usage number of users document quality | Regression |
Li & Reformat, 2007
| JM1 dataset | level metrics and accuracy parameter | SimBoost |
Pai & Dugan, 2007
| NASA datasets | Chidamber–Kemerer metrics and lines of code metric | linear regression, Poisson regression, logic regression |
Cukic & Ma, 2007
| JM1 dataset | level metrics | - |
where, OSR is Optimized Set Reduction, LSR is Linear Standard Regression, GRNN is General Regression Neural Networks, SVR is Support Vector Regression, NN is Neural Network, IBL is Instance Based Learning, MFM is Frequently Modified, MRM is Most Recently Modified, MFF is Most Frequently Fixed, MRF is Most Recently Fixed and PCA is Principal Component Analysis.
Key Terms in this Chapter
Software Development Life Cycle (SDLC): Software development life cycle (SDLC) is a process that produces software with the highest quality and lowest cost in the shortest time. SDLC includes a detailed plan for how to develop, alter, maintain, and replace a software system.
Software Metric: A software metric is a standard of measure of a degree to which a software system or process possesses some property.
Software Testing Tool: Software testing tool is an automation, a program or another software that provides a quick and reliable software test.
Software Testing: Software testing is a process, to evaluate the functionality of a software application with an intent to find whether the developed software met the specified requirements or not and to identify the defects to ensure that the product is defect free in order to produce the quality product.
Object-Oriented Programming (OOP): Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which can contain data, in the form of fields (often known as attributes), and code, in the form of procedures (often known as methods).
Line of Code (LOC): Line of code (LOC) is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program's source code.
Software Complexity: Software complexity is a way to describe a specific set of characteristics of a code. Software complexity is a natural byproduct of the functional complexity that the code is attempting to enable.