CHAPTER 2 PROBLEM STATEMENT Software metrics based heuristics support software quality engineering through improved scheduling and project control. It can be a key step towards steering the software testing and improving the effectiveness of the whole process. It enables effective discovery and identification of defects and enables the verification and validation activities focused on critical software components. Software metrics are used to improve software process control and achieve high software reliability. These are used to direct cost-effective quality enhancement efforts to modules that are likely to have a high number of faults. The research investigates ways to help designers with the task of understanding, evaluating and improving their products. Problem Statement Page 27
CHAPTER 2 PROBLEM STATEMENT Quality of a software product is the most important consideration of software developers. Software metrics and heuristics based on them help to improve effectiveness of software product thereby predicting the quality of a product. 2.1 Problem Formulation Science begins with quantification. Physics is impossible without a notion of length and time and thermodynamics is not possible without measuring temperature. All engineering disciplines have metrics, such as metrics for temperature, wavelength, density, pressure and weight to quantify various characteristics of their products (Harrison et al., 1998). The most important question is to measure How big is the program? Without defining what big means, it is obvious that it makes no sense to say, This program will need more testing than that program unless it is known how big they are relative to one another. Planning for software begins much before technical work starts, continues as the software product evolves from concept to reality and culminates only when the software is retired. So, measurement is used throughout a software project to assist in estimation and project control. The aim of Object Oriented (OO) Metrics is to predict the quality of the object oriented software products (Basili et al., 1996). Various attributes which determine the quality of the software include normalized rework, maintainability, fault proneness, defect density, understandability, reusability etc. These are required because in Object Oriented code, complexity lies in interaction between objects and a large portion of code is declarative. Object orientation models real life objects and makes use of important features like classes, objects, inheritance, encapsulation and message passing. Software design and development involves a range of practices with varying levels of formality. Some of the examples include formal methods, test-driven development, design patterns and coding styles. The common goal is to produce high quality software. Problem Statement Page 28
However, quality is a concept that cannot be measured directly. In order to measure and understand quality, it is necessary to relate it to measurable quantities. The field of software metrics deals with the identification of meaningful quantitative measures of specific properties of software. Heuristics methods allow exploiting uncertain and imprecise data in a natural way. Heuristics techniques are very effective if applied correctly on right kind of tasks. Heuristics are based on past experience and in the light of these metrics observations, heuristics provide a more clear and subjective view of software quality. The research investigates ways to help designers with the task of understanding, evaluating and improving their products. While the art of design and the judgment of applying heuristics in a particular way is being viewed as beyond the reach of current technology and it is argued that tools can provide valuable information to assist the designer with these judgments. In the last chapter, an overview of software quality, software metrics and use of heuristics in software engineering was given. The factors motivating to carry out the research in the domain of heuristics, metrics and quality are: 1. Complexity of the software is increasing day by day. 2. Our life is dependent upon the software and its quality. Therefore, in case of failure the consequences are hazardous and catastrophic as evident from the case study of Therac 25, Y2K and Marine I etc. 3. To ensure software quality, software metrics are required. 4. To tackle with the complexity, heuristics are required. Hence, the researchers were motivated to carry out the research in the field of metrics based heuristics in software engineering. 2.2 Objectives The main objectives of the research work are described as follows: 1. To identify the various heuristic approaches used in software engineering specifically in object-oriented engineering. 2. Identification of metric-based heuristics. 3. Developing the metrics and heuristics based models in software engineering. Problem Statement Page 29
4. Providing a framework, in which the metric-based heuristics may be postulated, explored and managed. 2.3 Methodology The methodology consists of the following steps: 1. First of all, find the structural code and design attributes of software systems i.e. software metrics by carrying out the literature survey in the relevant field. 2. To identify the various heuristic approaches used in software engineering specifically in object-oriented engineering. 3. Identification of various heuristics based on metrics. 4. Developing the heuristic-based models and implementing them for validation. 5. Implementing the models and finding the result. 6. Compare the result and give conclusions. 2.4 Implementation Software - MATLAB MATLAB stands for MATrix LABoratory and was developed by Dr. Cleve Moler, Chief Scientist at the MathWorks Inc. MATLAB is a high-level language and provides an interactive environment for numerical computation, visualization, iterative exploration, design, problem solving and programming. MATLAB is used for a wide range of applications including image and video processing, digital signal processing and communications, control systems, neural networks, test and measurement, computational finance, fuzzy logic and computational biology (weblink 2). Mathematical functions for Fourier analysis, linear algebra, statistics, filtering, optimization, numerical integration and solving ordinary differential equations are the key features of using MATLAB. It is used as a language of technical computing by millions of engineers and scientists in industry and academia. MATLAB is also used to analyze data, develop algorithms and create models (weblink 2). The language, tools and built-in math functions enable a developer to explore multiple approaches and reach a solution faster as compared to any other programming languages such as C, Java,.NET and Microsoft Excel. Problem Statement Page 30
In this research, Genetic Algorithms have been implemented to generate test cases using boundary value analysis and equivalence class partioning using MATLAB. Different modules have been developed in MATLAB for various operations of genetic algorithms. The code is general, modular, structural and easy to use. Necessary documentation has been done to make the code readable and understandable. 2.5 Summary Quality of software is increasingly important and testing related issues are becoming crucial for software. Although there is diversity in the definition of software quality, it is widely accepted that a project with many defects lacks quality. Techniques and methodologies which are used for predicting the testing effort, measuring results and monitoring process costs can help in increasing efficiency of software testing. Prediction of fault-prone modules supports software quality engineering through improved scheduling and project control. It is a key step towards steering the software testing process and therefore, helps in improving the effectiveness of the whole process. In order to measure and understand quality, it is necessary to relate it to measurable quantities. Heuristics provide a link between sets of abstract design principles and quantitative software metrics. They are an important part of software design and are becoming more widely used. Effective visualization of heuristics includes quantitative, qualitative and ambient aspects. Visualization of heuristics provides many challenges. Heuristics are likely to be studied both individually and in comparison with others. The research is not primarily concerned with the relevance or validity of individual heuristics, the main focus is on their evaluation and interpretation. The work is intended to provide the basis for an exploratory framework in which heuristics may be postulated, explored and managed. Problem Statement Page 31