Semi-Automated Tool Support for Identification and Prioritization of Impacted Functions in Software Systems

Semi-Automated Tool Support for Identification and Prioritization of Impacted Functions in Software Systems

Chetna Gupta (Jaypee Institute of Information Technology, India) and Varun Gupta (Amity University, India)
Copyright: © 2018 |Pages: 14
DOI: 10.4018/978-1-5225-5951-1.ch008

Abstract

Change is an integral part of any software system. Predicting the impact of making changes through techniques of change impact analysis helps engineers identify and analyze those parts of the system that will be potentially affected by requested change(s). This chapter presents a semi-automated approach to (a) compute likelihood of impacted functions in a system through identification and analysis of functional dependencies between them and (b) assist software engineers in selective regression testing. This technique first classifies the impact set data into two categories based on their type of impact propagation. Next it performs prioritization on classified data to rank functions into higher and lower levels according to the degree of impact they will make. This prediction will help in lowering maintenance cost and effort of software engineers. Thus, a software engineer can first run those test cases which cover segments with higher impacted priority to minimize regression test selection.
Chapter Preview
Top

Introduction

Software maintenance act as a backbone in supporting change management issues for keeping up with the quality of the software. In this era of time-to-market industry, software evolution and its maintenance emerge as one of the challenging tasks of software engineering. Studies indicate that 90% (Seacord, Plakosh & Lewis, 2003) of all software development is maintenance and more than 50% of the total maintenance cost of software lies in rework i.e. in changing the software (Lee, Offutt & Alexander, 2000; Myres, 1979). Whenever a single part of software is changed, other parts of the software are possibly subject to change as well. Change impact analysis (CIA) helps software developers to analyze and identify artifacts that will be potentially affected by requested or proposed change(s). CIA often called as simply impact analysis (IA), particularly addresses these problems (Bohner & Arnold, 1996; Arnold & Bohner, 1993; Loyall, Mathisen & Satterthwaite, 1997; Pfleeger, 1998; Turver & Munro, 1994). According to IEEE Standard for Software Maintenance (ISO/IEC, 2006) impact analysis is defined as:

impact analysis: Identifies all system and software products that a change request affects and develops an estimate of the resources needed to accomplish the change. This includes determining the scope of the changes to plan and implement work, accurately estimating the resources needed to perform the work and analyzing the requested change’s cost and benefits.

CIA is effective mechanism in reducing the amount of corrective maintenance task by developers by paying focused attention on predicting and maintaining resource estimates, task scheduling, assisting in re-designing of some modules and helping testers in focusing on their resources and other testing activities (Moreton, 1990). Thus predicting impact of incorporating changes is effective way of maintaining software quality. Software maintenance process can only be optimized if precise and unambiguous information is available about the potential ripple effects of a change to an existing system. Whenever a change is made to any part of software system, it is important to gain complete understanding of structure, behaviour and functionality of the system being modified. Making changes to the software without understanding and knowledge of the software component can produce disastrous effects (Bohner & Arnold, 1996) and can lead to degraded software. Bohner (2002) identifies three basic software change activities: understanding software with respect to the change, implementing the change, and retesting the newly modified system.

Broadly impact analysis techniques can be partitioned into two categories: (a) traceability analysis and; (b) dependence analysis (Bohner, 2002). Traceability analysis refers to the ability to define, trace, and document relationships between software lifecycle objects such as requirements, design documents, source code, and other documentation (Cimitile, Fasolino & Visaggio, 1999). Impact analysis techniques based on dependence analysis attempt to assess the effects of change on semantic dependences between program entities, typically by identifying the syntactic dependences (chains of data and control dependences) that may signal the presence of such semantic dependences (Podgurski & Clarke, 1990). If done in a proactive manner, i.e. before the changes are made it can be helpful in predicting the effects of the proposed changes in terms of their affect on the overall system and the corresponding costs while simultaneously providing the maintainer the option to select various alternatives. On the other hand, if applied after modifications, it can help in reducing the risks associated with releasing modified software by alerting engineers to potentially affected program components.

Complete Chapter List

Search this Book:
Reset