Software maintenance activity is one of the most important part of software development cycle. Certain regions of a program cause more damage than other regions resulting in errors, if they contain bugs. So, it is important to debug and find those areas. We use slicing criteria to obtain a static backward slice of a program to find these areas. An intermediate graphical representation is obtained for an input source program such as the Program Dependence Graph, the Class Dependence Graph and the System Dependence Graph. Slicing is performed on the System Dependence Graph using a two pass graph reachability algorithm proposed by Horwitz[3], and a static backward slice is obtained. After obtaining static slice, dynamic slice is calculated for the given input variable using an algorithm where in a statement, a set of variables and the input values for these variables are taken as input and a dynamic slice is obtained.
[1]
Mangala Gowri Nanda,et al.
Slicing concurrent programs
,
2000,
ISSTA '00.
[2]
Baowen Xu,et al.
A brief survey of program slicing
,
2005,
SOEN.
[3]
Rajib Mall,et al.
An Overview of Slicing Techniques for Object-Oriented Programs
,
2006,
Informatica.
[4]
Anand Krishnaswamy.
Program Slicing: An Application of Object-oriented Program Dependency Graphs
,
1994
.
[5]
David W. Binkley,et al.
Program slicing
,
2008,
2008 Frontiers of Software Maintenance.
[6]
Joe D. Warren,et al.
The program dependence graph and its use in optimization
,
1984,
TOPL.
[7]
Mary Jean Harrold,et al.
Slicing object-oriented software
,
1996,
Proceedings of IEEE 18th International Conference on Software Engineering.
[8]
David W. Binkley,et al.
Interprocedural slicing using dependence graphs
,
1988,
SIGP.