Program Slicing
Program slicing, pioneered by Mark Weiser in 1981, offers a new approach to decomposing programs automatically. This method generates reduced versions of original programs, focusing only on the necessary expressions for executing specific subsets while preserving the original behavior. By utilizing static analysis and criteria-based statement deletions, program slicing provides valuable insights and alternatives to tackle challenges in software development.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Program Slicing Mark Weiser University of Maryland, College Park IEEE CHI, 1981 Presented by David Gonzalez
Key Insights Slicing is new way of decomposing programs automatically circa 1981 Automates the generation of program slices under sound restrictions based on static analysis. A program slice is reduced version of an original program where only the expressions necessary for executing a subset of it are kept and such execution must reproduce the original behavior. Generating a slice follows criteria to delete non-related statements that include control and data flow analysis. It provides convincing arguments and alternatives to overcome challenges in approach.
Approach Statement deletions based on criteria* Flow graphs Criterion
Approach 1. Takes source code as input and uses an abstract representation flowgraph to enable statement deletion. 2. To allow a minimal set of slices, the definition of window for observing behavior is weakened from all possible inputs to program terminates due to the unsolvability of the former. 3. Under this definition, applies interprocedural dataflow analysis to determine smallest slice by using def-uses as criterion. 4. Also, includes branch statements that control execution of statements within the slice.
Additional contributions Slicing study results: Shows that in half of 63 cases, slices were remembered as relevant to the bug. Slicing Real Programs*: Generalizes program slicing, in contrast to DAVE s slicing approach. Interprocuderal Slicing*: Provides how to handle multiple procedures at once, in contrast to SIMPL. Separate Compilation*: Provides how to slice when there are interprocedural complications, in contrast to SIMPL-D. Slicing Based Metrics: Introduces Coverage, Overlap, Clustering, Parallelism, Tightness for progr. * Goes beyond prior work
Questions? 67% of time spent in maintenance, how about now? Where have you seen program slicing being used? What about the program slicing study? What about feasible paths? What research do you know about program slicing usefulness? What topics do you find related to software testing(SWE637)? Is OO programming an obstacle for inter-procedural techniques?