|
Softpanorama |
May the source be with you, but remember the KISS principle ;-)
|
| News | Recommended Books | Recommended Links | Compilation | Decompilation | The decomplation of control flow |
| Peephole refactoring | Program understanding | History | Humor | Etc |
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.
Dr. Nikolai Bezroukov
|
|||||||
|
|||||||
[PPT] Static Analysis for Software-Engineering Tools: Problems and ...
| File Format:
Microsoft Powerpoint 97 -
View as HTML Static Analysis for Software-Engineering Tools. Thomas Reps ... single-target MOMP [Sagiv,Reps,Horwitz 96]; magic-sets transformation [Reps 94] ... |
[July 17, 1999] Thomas W. Reps's Home Page
[July 7, 1999] Program Slicing -- [updated link -- page was moved] nice page that is actively maintained by Jens Krinke (jkrinke@gmx.de)
Program Slicing Internet Resources
Home page of the Wisconsin Program-Slicing Project
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 ....
In Memoriam Mark Weiser -- pioneer of program slicing
The Ghinsu Project - An Xwindows program slicing tool - static and dynamic analysis.
Copyright © 1996-2008 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
Standard disclaimer: The statements, views and opinions presented on this web page are those of the author 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.
Last modified: November 08, 2008