program slicing (was Re: random software speculations)
Bradley M. Kuhn
bkuhn@ebb.org
Sat, 7 Aug 1999 16:12:33 -0400
Kragen Sitaker wrote:
[..lots of stuff about program slicing deleted...]
> This same kind of analysis can be used to follow the effects of a variable
> assignment or initialization downstream. (Brad, wc? Tell us more!)
I assume you are talking about the DSDS that I wrote in college. This was
based on the PhD thesis of one of the faculty at my undergrad institution
(Keith Gallagher: http://www.cs.loyola.edu/~kbg).
What you are talking about is all stuff that has been researched heavily.
Look into program slicing, and how it can be used for software engineering.
There is a group at Wisconsin-Madison lead by Reps and Horawitz doing a lot
of work in this area. There is a group at NIST doing work in this area, as
well. I am sure there are others but a lot of key research comes out of
there.
Decomposition slicing (invented by Keith Gallagher) seemed to me when I was
reading the literature to be the only piece of work directly applied to do
doing the kind of things you are talking about with program slicing.
I don't know the state of kbg's slicing tool. His tool is described at
http://www.cs.loyola.edu/~kbg/Surgeon/
In 1995, the only thing it had ever sliced was the wc(1) program. I don't
know if anything else has ever been sliced. :)
I tried to talk him into releasing it as free software once, and he scoffed
at me because he feared people in the proprietary software realm would do
bad things. I didn't understand the GPL well enough at the time to make the
canonical argument.
Kragen, if you are interested in this, I can contact him again and ask him
to do so. Let me know.
(I could release the DSDS as free software, as I own the copyright on most
of it; however, it's useless without the Surgeon's Assistant's output.)
> - what basic blocks pass control to what other basic blocks
> - what statements or expressions change the values of what variables
> - what statements or expressions get aliases to what variables, and where
> they put them
Most slicing tools get this information by building a PDG and getting
def-use edge information.
Aliasing is the hard problem.
> Why Doesn't Somebody modify gcc to output this information? It has to
> compute most of it anyway.
Another faculty member from where I went undergraduate, David Binkley
(http://www.cs.loyola.edu/~binkley), was working on just that at one point.
I don't know how far he got. If you are interested, I could ask him.
> [0] Look Brad, no killfile!
Well, you should've kill-filed yourself. :) Using a curse word in a post.
ecommitt would have had you for lunch. :0
--
- bkuhn@ebb.org - Bradley M. Kuhn - bkuhn@gnu.org -
http://www.ebb.org/bkuhn