CIAFP: A Change Impact Analysis with Fault Prediction for Object-Oriented Software

CIAFP: A Change Impact Analysis with Fault Prediction for Object-Oriented Software

Dharmveer Kumar Yadav, Chandrashekhar Azad, Jagannath Singh, Dibya Ranjan Das Adhikary
Copyright: © 2022 |Pages: 19
DOI: 10.4018/IJSI.301224
OnDemand:
(Individual Articles)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

Object-oriented (OO) code has many dependencies among the classes and different types of changes that often have an impact during the maintenance of the software. In this paper, we proposed a technique for change impact analysis (CIA) with fault prediction (FP) using machine learning techniques for OO software. In proposed method an intermediate OO program representation is proposed using a graph which detects the difference between the original program and the modified program. For fault prediction, class level metrics are extracted from KC1 data set and 14 machine learning algorithms are trained on dataset. The genetic algorithm (GA) and correlation are used to extract significant features from the dataset. Trained prediction models are evaluated using classification accuracy (Acc). Our proposed approach consider various types of changes possible in the program, and test cases are selected to test the modified code during regression testing and finds the fault in classes. Among the 14 machine learning algorithms random forest (RF) giving best accuracy than other algorithms.
Article Preview
Top

1. Introduction

Maintenance of software is the most expensive and difficult step in the life cycle of software. It is very difficult to maintain the software when software has large numbers of module. A small change in module will cause the system to impact to other module of software. For example, adding new functionality to an existing class which may affect all its dependent class throughout the program. Whenever a program is changed, then it is required to retest to determine whether modifications have been performed correctly or not to the system. Sometimes modification adversely affects the behaviour of the program. In such cases testing process is a very expensive as well as tedious activity. According to (Rothermel & Harrold, 1996) more than 50% of the effort of the development in a software life cycle is spent on testing, and approximately two-thirds effort is required when maintenance is included. Therefore, to minimize the time and effort to perform retesting, several selective retesting techniques have been developed (Biswas et al., 2011). In this work we focused on how to identify changes and its impact in OO program. As we know in C++ and Java programming have key concepts such as inheritance, polymorphism, encapsulation etc. Due to such concept modules are dependent to each other, which cause the process to find the impact in the system is called change impact analysis (CIA) (Law & Rothermel, 2003; Orso et al., 2003; Rajlich & Gosavi,2004). The CIA technique will be beneficial for programmer/ tester to make a strategy for code modification as well as its implementation. If the programmer knows the effects of changes before implementing the actual changes, then it becomes easy to perform the change correctly and more effectively during development and maintenance phase. CIA technique is widely used in regression testing, tester rerun the test cases after modifications done in the code. In regression testing tester executes only those set of test cases which are affected by the changes and minimize the testing time and effort of testing (Ren et al.,2006). Regression testing is done after requirement changes, as well as it ensures modified code does not affect other functions of the program. Regression testing is one of the important parts in the maintenance phase of software. Testing is one of the essential steps in the SDLC (Pressman, 2017). Under the project deadline, therefore, the tester cannot carry out exhaustive testing because tester takes a lot of time and effort. Therefore, the tester will know that test cases are more important to find errors quickly to reduce the testing time. However, if we want to determine a program error, then test cases that find errors are selected early. Testing detects faults in the program and improves the quality of code. For many reasons software needs to be modified if the user requested to add new requirements, change in technology, fix errors, etc. Once code is modified, then the developer should ensure that the enhanced code does not affect the software behaviour.

In this paper, we present change impact analysis (CIA) with fault prediction (PF) technique called CIAPF. This work presents change impact analysis with fault prediction (CIAPF) technique. The our CIAPF model use intermediate graph representation of program which detects the difference between the original program and the modified program. This approach reduces the retesting time and effort in regression testing. We have considered some of the OO features of the Java program and considered various types of changes possible in the OO program. Our proposed approach selects the minimum number of test cases to test the modified code during regression testing. To assess the effectiveness of the proposed algorithm, benchmark program is considered for change impact analysis. Additionally fault prediction model is trained to identify the fault classes with OO metrics in OO software. Proposed CIAPF technique predict the faulty classes which helps us to make early decision, before the actual code need to be modified in the program.

The paper is organized as follows: In section 2 related work is presented. Section 3 describes the materials and methods used for proposed work. Section 4 describes proposed method. In section 5 results and discussion is discussed. In section 6 comparison with related work is presented. Finally in section 7 conclusion and future work is described.

Complete Article List

Search this Journal:
Reset
Volume 12: 1 Issue (2024)
Volume 11: 1 Issue (2023)
Volume 10: 4 Issues (2022): 2 Released, 2 Forthcoming
Volume 9: 4 Issues (2021)
Volume 8: 4 Issues (2020)
Volume 7: 4 Issues (2019)
Volume 6: 4 Issues (2018)
Volume 5: 4 Issues (2017)
Volume 4: 4 Issues (2016)
Volume 3: 4 Issues (2015)
Volume 2: 4 Issues (2014)
Volume 1: 4 Issues (2013)
View Complete Journal Contents Listing