I've just been introduced to the term "program slicing." It makes perfect sense that one would want such functionality, but does it exist anywhere?
The term is 20 years old now, and I see there are lots of publications, research papers, etc. But where are the actual tools? Are people actually putting this concept into practice, or just studying it academically?
What's out there, and for what languages?
Edit: I guess what I'm looking for, what I'd reward as an Accepted answer, is a reference to some publication/organization/etc that's particularly geared towards program slicing and maintains a list of tools/techniques/etc.
Program slicing is a program analysis technique. It is mainly used during debugging and reengineering. It tries to eliminate all parts from the program that are not currently of interest to the programmer.
In computer programming, program slicing is the computation of the set of program statements, the program slice, that may affect the values at some point of interest, referred to as a slicing criterion. Program slicing can be used in debugging to locate source of errors more easily.
Dynamic program slicing☆ A dynamic program slice is an executable subset of the original program that produces the same computations on a subset of selected variables and inputs. It differs from the static slice (Weiser, 1982, 1984) in that it is entirely defined on the basis of a computation.
Program slicing works by finding the parts of a program relevant to the value of a chosen set of variables at some chosen point in a program. A slice is constructed by deleting the parts of the program that are irrelevant to those values.
[EDIT] (in reponse to OP revised question)
I've been following the literature for quite a long time. I don't think there's a "program slicing" central that has a list of the kind you want. Most of the program slicers that have been built were some kind of university experiment (means they didn't work in production and aren't available for practical purposes). You can find out about them by searching scholar.google.com with the term, guess what, "program slicing"; I suspect you already know this. The "biggies" I think you already have here.
This survey is bit old but done by a stellar researcher: http://www.cse.buffalo.edu/LRG/CSE605/Papers/slicing-survey-tip.pdf. This one is more recent: http://dl.acm.org/citation.cfm?id=1050865.
CodeSurfer is a commercial tool for performing static slicing on C programs. I believe they also handle C++. A significant plus not available with other tools is a UI for exploring code slices interactively.
Indus is University research tool for doing static code slicing on Java. I'm not sure if this is still under active development.
There seem to be a variety of "dynamic" program slicing tools for Java built by universities. None of them are under active development or use that I know about.
My company offers the DMS Software Reengineering Toolkit, which contains general machinery for program control and data flow analysis including building custom static code slicers. DMS has been used to build slices of large C programs as well as industrial process control programs. (I'd provide a link, but SO people seem to hate it when I do).
The Frama-C platform, which is dedicated to the analysis of C code, has a full-fledged interprocedural slicing plugin. See for example this page, where an user uses this plugin to simplify a program he was analyzing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With