Utilizing the notion of removable blocks to enhance program slicing algorithms

Abstract

Program slicing is a program decomposition technique that transforms a large program into a smaller one that contains only statements relevant to the computation of a selected function. Applications of program slicing can be found in software testing, debugging and maintenance where program slicing essentially reduces the amount of data that has to be analyzed in order to comprehend a program or parts of its functionality. In this thesis, two program slicing algorithms based on the notion of removable blocks are presented and they are (1) a general static program slicing algorithm and (2) criterion based hybrid program slicing algorithm. The thesis introduced new syntax tree representation using removable blocks and theorized a new navigation technique for the same. The new static slicing algorithm combined with the enhanced dynamic slicing algorithm is used to derive the criterion based hybrid slicing algorithm. The hybrid program slicing algorithm allows the user to define the range of accuracy between static and dynamic program slicing. These algorithms compute slices that are executable for structured and object-oriented programs. It uses the executable property of new static slicing to reduce the input source code to dynamic slicing to save the time and space. The introduced program slicing approaches are part of M[barbelow]ontreal O[barbelow]bject-O[barbelow]riented S[barbelow]licing E[barbelow]nvironment (MOOSE). MOOSE utilizes the information derived from the program slicing algorithms to enhance the functionality and usability of the framework. The preliminary tests with the basic hybrid program slicing algorithm indicate that hybrid program slicing can reduce the algorithmic time and space for the slice computation as compared to the dynamic program slicing

    Similar works