• DocumentCode
    1539598
  • Title

    Computation of dynamic program slices for unstructured programs

  • Author

    Korel, Bogdan

  • Author_Institution
    Dept. of Comput. Sci., Illinois Inst. of Technol., Chicago, IL, USA
  • Volume
    23
  • Issue
    1
  • fYear
    1997
  • fDate
    1/1/1997 12:00:00 AM
  • Firstpage
    17
  • Lastpage
    34
  • Abstract
    A dynamic program slice is an executable part of the program whose behaviour is identical, for the same program input, to that of the original program with respect to a variable(s) of interest at some execution position. The existing algorithms of dynamic slice computation use data and control dependencies to compute dynamic slices. These algorithms are limited to structured programs because they may compute incorrect dynamic slices for unstructured programs, due to the limitations of control dependencies that are used to compute dynamic slices. In this paper, we present a novel approach to dynamic slice computation for unstructured programs. The approach employs the notion of a removable block in finding dynamic program slices. Dynamic slices are derived by identifying not only those parts of program execution that contribute to the computation of the value of a variable of interest, but also those parts of program execution that do not contribute to the computation of the variable value. Data dependencies are used to identify contributing computations, whereas removable blocks are used to identify noncontributing computations. We have proved that the presented dynamic slicing algorithms correctly compute dynamic slices. In addition, these algorithms may compute more accurate dynamic slices compared to existing algorithms that use control dependencies. The presented algorithms have been implemented in a tool that supports dynamic slicing for Pascal programs
  • Keywords
    program control structures; program debugging; program diagnostics; Pascal programs; contributing computations; control dependencies; data dependencies; debugging; dynamic program slice computation; executable part; execution position; execution trace; noncontributing computations; removable block; unstructured programs; variable value computation; Algorithm design and analysis; Heuristic algorithms; Software debugging; Software maintenance; Software testing;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/32.581327
  • Filename
    581327