Program Slicing as Decomplation/Program Reconstruction Technique

The concept of program slicing was introduced by Mark Weiser (Computer Science
Department University of Maryland College Park, MD 20742). In his paper he noted:

Program slicing is a method used by experienced computer programmers for
abstracting from pro- grams. Starting from a subset of a program's behavior,
slicing reduces that program to a minimal form which still produces that
behavior. The reduced program, called a "slice", is an independent program
guaranteed to faithfully represent the original program within the domain of
the specified subset of behavior. Finding a slice is in general unsolvable.
A dataflow algorithm is presented for approximating slices when the behavior
subset is specified as the values of a set of variables at a statement. Experimental
evidence is presented that these slices are used by programmers during
debugging. Experience with two automatic slicing tools is summarized.
New measures of program complexity are suggested based on the organization of
a program's slices.

Slicing is applied to programs after they are written, and is therefore useful
reconstruction of the logic of the program. Slicing starts with the observation
that these are times when only a portion of a program's produces a subset of
program behavior that needs to be understood, improved or replaced. In these
cases, a programmer starts from the program behavior and proceeds to find and
modify the corresponding portions of program code. Code not having to do with
behavior of interest is ignored.

A programmer maintaining a large, unfamiliar program would almost have to
use this behavior- first approach to the code. Understanding an entire system
to change only a small piece would take too much time. Since most program maintenance
is done by persons other than the program designers, and since 67% of programming
effort goes into maintenance (Zelkowitz, Shaw, and Gannon 1979), decomposing
programs by behavior must be a common occurrence. Automatic slicing requires
that behavior be specified in a certain form. If the behavior of interest can
be expressed as the values of some sets of variables at some set oi statements,
then this specification is said to be a criterion. Dataflow analysis (Hecht
1977] can find all the program code which might have influenced the specified
behavior, and this code is called a slice of the program. A slice is itself
an executable program, whose behavior must be identical to the specified subset
of the original program's behavior. Figure 1 gives examples of some slicing
criteria and their corresponding slices. There are usually many different
slices for a given program and slicing criterion, depending on how minimal a
slice is desired. The issue of minimality is discussed further below.
There is always at least one slice--the program itself. The interesting
slices are the ones which, compared to the original program, are significantly
smaller and simpler.

J.A. Bergstra, T.B. Dinesh, John Field, and J. Heering,
A Complete Transformational Toolkit for Compilers, In Proceedings
of the European Symposium on Programming (ESOP'96), (Linkoping,
Sweden, April 1996), Springer-Verlag LNCS Vol. 1058, extended version
to appear in ACM Transactions on Programming Languages and Systems.

Softpanorama hot topic of the month

Softpanorama Recommended

Abstract: A program slice consists of the parts
of a program that (potentially) affect the values computed at some point
of interest, referred to as a slicing criterion. The task of computing program
slices is called program slicing. The original definition of a program slice
was presented by Weiser in 1979. Since then, various slightly different
notions of program slices have been proposed, as well as a number of methods
to compute them. An important distinction is that between a static and a
dynamic...
(Update)

This paper addresses the inverse problem: we define an
algorithm that, given a control dependence graph C, finds a corresponding
control-flow graph G (i.e., a graph G such that CDG(G) is isomorphic to
C), or determines that no such control-flow graph exists. We call this process
CDG-reconstitution
(Update)

....is based on data flow analysis. It is suggested in [27] that a
program depen dence graph representation can be used to compute slices more
eciently and precisely. An algorithm for computing slices using a program
dependence graph representation is presented by Horwitz, Reps, and Binkley [16]
[31]. A slice is obtained by walking
backwards over the program dependence graph to obtain all nodes which have an
effect on the value of the variable of interest. Similarly, a forward
slice [16] can be obtained by walking forward over the program dependence graph
to obtain all nodes which are ....

FAIR USE NOTICE This site contains
copyrighted material the use of which has not always been specifically
authorized by the copyright owner. We are making such material available
in our efforts to advance understanding of environmental, political,
human rights, economic, democracy, scientific, and social justice
issues, etc. We believe this constitutes a 'fair use' of any such
copyrighted material as provided for in section 107 of the US Copyright
Law. In accordance with Title 17 U.S.C. Section 107, the material on
this site is distributed without profit exclusivly for research and educational purposes. If you wish to use
copyrighted material from this site for purposes of your own that go
beyond 'fair use', you must obtain permission from the copyright owner.

ABUSE: IPs or network segments from which we detect a stream of probes might be blocked for no
less then 90 days. Multiple types of probes increase this period.

The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be
tracked by Google please disable Javascript for this site. This site is perfectly usable without
Javascript.

Original materials copyright belong
to respective owners. Quotes are made for educational purposes only
in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains
copyrighted material the use of which has not always been specifically
authorized by the copyright owner. We are making such material available
to advance understanding of computer science, IT technology, economic, scientific, and social
issues. We believe this constitutes a 'fair use' of any such
copyrighted material as provided by section 107 of the US Copyright Law according to which
such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free)
site written by people for whom English is not a native language. Grammar and spelling errors should
be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting development
of this site and speed up access. In case softpanorama.org is down you can use the at softpanorama.info

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or
referenced source) and are
not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with.We do not warrant the correctness
of the information provided or its fitness for any purpose.