Forward dynamic slicing software systems
Yeong-Tae Song, Dung T. Huynh · 1999
As modern software systems are getting increasingly more complex, decomposing software systems with respect to some criterion is becoming more important in many areas of software engineering. These areas include program understanding, software reverse engineering, software maintenance, program debugging and software testing. By decomposing software systems and providing only the relevant portions of the systems to the software personnel, overall time and effort in developing and maintaining software systems can be significantly reduced. In this dissertation, we study several topics in program slicing, an important technique for decomposing software systems. Among the program slicing methods, we focus our attention on the technique of forward dynamic program slicing. The topics we discuss in this dissertation are: forward program slicing in the presence of structured jump statements, forward interprocedural program slicing, forward slicing object-oriented programs and forward slicing software architectures. In studying forward dynamic slicing in the presence of structured jump statements, we show how to find the variables in a program that are affected by a jump statement when it is executed and their corresponding statements in the program. We then explain various issues in slicing multi-procedured programs (interprocedural program slicing), namely, parameter passings, active function calls, recursive function calls and return variables. In the topic of object-oriented program slicing, we extend the interprocedural program slicing technique and provide two different types of slices—statement level slices and class level slices. In order to compute class level slices, we introduce the so-called dynamic object relationship diagram that isolates dynamic behavior of object-oriented programs with respect to some slicing criterion. Finally, we propose a new way of computing event-driven software architecture slices by taking those components and connectors that are used by the architecture with respect to some event of interest.