Programing Slicing and Its applications

956 views

Published on

ankur jain, program slice, static slice, dynamic slice, system dependency graph, slicing, program dependency graph

Published in: Software
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
956
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
49
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Programing Slicing and Its applications

  1. 1. Indian Institute of Technology, Kharagpur Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Presented By- Ankur Jain (13CS60D02)
  2. 2. Programmer’s Nightmare… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp If I change this statement in program: What other statements would be affected? (Impact analysis) What other statement needs to be tested? (Regression test) The values live at this statement: Defined where? Modified Where? (Manual Checking) How can I abstract code?
  3. 3. Studies show…. Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Software testing contributes more then 50% of cost and time of SDLC Maintainers spend nearly 50% of their time trying to understand the program Source: http://www.ece.cmu.edu/~koopman/des_s99/sw_testing/
  4. 4. Try... Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Program Slicing!
  5. 5. Outline Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp  Introduction  Types of Slicing  Program Models  Flow based  Dependency based  Slicing Algorithms  Challenges  Directions of research
  6. 6. Proposed by… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp  Proposed by Mark Weiser in 1981  Chief scientist at Xerox PARC  As his PhD thesis  Father of ubiquitous computing Mark D. Weiser (July 23, 1952 - April 27, 1999)
  7. 7. Basic Concepts… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp “For statement S and variable V, the slice of program P includes only those statements of P needed to capture the behavior of V at S.” Slicing Criterion (SC): <S, V> S = Point of interest in the program (statement) V = Subset of variables used in the program A program slice is a subset of a program
  8. 8. Example… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp 1 begin 2 read(x, y) 3 total := 0.0 4 sum := 0.0 5 if x <= 1 6 then sum := y 7 else begin 8 read(z) 9 total := x*y*z 10 end 11 write(total, sum) 12 end SC = <11, sum> 2 read(x, y) 4 sum := 0.0 5 if x <= 1 6 then sum := y Slicing Criterion
  9. 9. Why is Program Slicing Useful? Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp • Program slices are more manageable for testing and debugging • During testing, debugging, or understanding a program, most of the code in the program is irrelevant to what you are interested in. • Program slicing provides a convenient way of filtering out “irrelevant” code.
  10. 10. Slice Variants… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Types of slices:  Static  Dynamic Direction of slice:  Forward  Backward Executability of slice:  Executable  Non-executable Amorphous, etc.
  11. 11. Froward Slices Vs Backward Slices Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Statements which might affect the value of variables in V Statements which might be affected by the values of variables in V int i, sum, prd; 1. read(i); 2. prd = 1; 3. sum = 0; 4. while (i<10) 5. sum = sum + i; 6. prd = prd * i; 7. i = i + 1; 8. write(sum); 9. write(prd);For SC = <9, prd> Slice: {1, 2, 4, 6, 7} For SC = <2, prd> Slice: {6, 9} Backward Slices: Froward Slices
  12. 12. Static Slice | Dynamic Slice Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Using dynamic information (an execution trace) Debugging Set of all statements that actually affect the value of a variable at a program point Using static information (a source program) Regression Testing Set of all statements that may affect the value of a variable at a program point
  13. 13. Example… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp int i, sum, prd; 1. read(i); 2. prd = 1; 3. sum = 0; 4. while (i<10) 5. sum = sum + i; 6. prd = prd * i; 7. i = i + 1; 8. write(sum); 9. write(prd); Static Slice {1, 2, 4, 6, 7} Dynamic Slice For Input ‘i’ = 15 {2} For Slicing Criteria [SC] = <9, prd> Flow based model: Control flow  Data flow Dependency based model:  Data Dependency  Control Dependency Slicing Criterion
  14. 14. Dependency Based Model Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Program Code Control Flow Graph (CFG) Data Dependency Graph (DDG) Program Dependency Graph (PDG) Forward Dominance Tree Control Dependency Graph (CDG)
  15. 15. Data Dependency Graph (DDG) Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp int a, b, sum; 1. read(a); 2. read(b); 3. sum = 0; 4. while(a<8) 5. sum = sum + b; 6. a = a + 1; 7. write(sum); 8. sum = b; 9. write(sum); 4 5 6 7 8 9 21 3 Data Dependency Graph
  16. 16. Control Flow Graph (CFG) Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp int a, b, sum; 1. read(a); 2. read(b); 3. sum = 0; 4. while(a<8) 5. sum = sum + b; 6. a = a + 1; 7. write(sum); 8. sum = b; 9. write(sum); Start 1 Stop 4 5 3 6 2 8 7 9 True False True True True True True True True True True
  17. 17. Dominance Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Let X and Y be two nodes in a Control flow graph X dominates Y If and only if Every path from Start to Y passes through X Y forward dominates X The forward Dominance Tree (FDT) 1. Vertices represent statement 2. Root node of tree is exit node of the CFG 3. Arcs represent immediate forward dominance
  18. 18. Forward Dominance Tree (FDT): Using CFG Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp 9 4 6 7 5 8 2 3 1 Start 1 Stop 4 5 3 6 2 8 7 9 True False True True True True True True True True True
  19. 19. Control Dependency Graph: Using CFG & FDT Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp 4 5 6 7 8 9 2 1 3 S 1. Y is control dependent on X 2. Path in the CFG from X to Y 3. Doesn’t contain the immediate forward dominator of X Y X X Ifdom(4)=7 X Y
  20. 20. Control Dependency Graph (CDG) Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp int a, b, sum; 1. read(a); 2. read(b); 3. sum = 0; 4. while(a<8) 5. sum = sum + b; 6. a = a + 1; 7. write(sum); 8. sum = b; 9. write(sum); 4 5 6 7 8 9 2 1 3 S
  21. 21. Program Dependency Graph (PDG) Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp int a, b, sum; 1. read(a); 2. read(b); 3. sum = 0; 4. while(a<8) 5. sum = sum + b; 6. a = a + 1; 7. write(sum); 8. sum = b; 9. write(sum); Union of CDG and DDG 1 4 6 5 8 29 3 7 Data dependence Control dependence Limitation: A PDG can model programs with a single function Not suitable for inter-procedural slicing
  22. 22. System Dependency Graph Model: by- Horwitz Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Basic Idea: Connect PDGs with auxiliary dependence edges • Parse source code - one procedure at a time. – Construct the CDG for each procedure including main. • Add actual and formal parameter nodes: – Connect using parameter-in, parameter-out edges • Represent function calls – Using call edges • Find data dependencies: – Perform data flow analysis of the CDGs – Connect data dependence edges • Add summary edges Steps in SDG Construction
  23. 23. System Dependency Graph (SDG) Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Control Dependence Data Dependence Call, Parameter−in, Parameter−out Summary Edge bin = b ain = a entry add Entry main a = 0 b = 1 add(a, b) a =ain b = bin a = a+b c = aout aout = a main(){ int a, b; a = 0; b = 1; c=add(a, b); } void add(int a, int b) { a = a + b; return a; }
  24. 24. Slicing an SDG: Two phase algorithm Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Proposed by Horwitz et al • Pass1: From the slice point: • Traverse backward along all edges except parameter-out edges • Mark the reached vertices • Pass 2: From vertices marked in Pass 1 • Traverse backwards along all edges: • Except call and parameter-in edges
  25. 25. Slicing an SDG: Pass-1 Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Control Dependence Data Dependence Call, Parameter−in, Parameter−out Summary Edge main(){ int a, b; a = 0; b = 1; c=add(a, b); } void add(int a, int b) { a = a + b; return a; } entry main a = 0 b = 1 add(a, b) entry add a =ain b = bin a = a+b aout = a c = aout bin = b ain = a Slice Point Except parameter-out edges
  26. 26. Slicing an SDG: Pass-2 Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Control Dependence Data Dependence Call, Parameter−in, Parameter−out Summary Edge main(){ int a, b; a = 0; b = 1; c=add(a, b); } void add(int a, int b) { a = a + b; return a; } entry main a = 0 b = 1 add(a, b) entry add a =ain b = bin a = a+b aout = a c = aout bin = b ain = a Slice Point Except call and parameter-in edges
  27. 27. Dynamic Slicing: Example cont… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Consider the following program: Computing: product of odd (p), sum of even (s) Execution Trace, N=3 1,2,3,4 //intial 5,6,8,9 //i=1 5,6,7,9 //i=2 5,10 //i=3, end Which part of the program is responsible for computing sum?
  28. 28. Dynamic Slicing: Example cont… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp We need to compute a backward slice with slicing criterion <(10, s)> Dependencies: Dynamic Data Dependence: which variable assignment was propagated to the value of `s' ? Dynamic Control Dependence: which are the conditional branches that executed till line 10 and in what order?
  29. 29. Dynamic Slicing: Example cont… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp For N=3
  30. 30. The Dynamic Slice w.r.t. (10,s) Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp
  31. 31. Slicing Tools Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp • Unravel : Static slicing tool for ANSI C • WET : Whole Execution Traces, dynamic slicing • CodeSurfer : Commercial static slicing tool for C • Performs data flow and control dependence analysis • Indus : Static slicer for Java • Available for Eclipse via Kaveri plugin • JSlice : Dynamic slicing tool for Java • SPYDER: Debugging tool • Performs both static and dynamic slice
  32. 32. Further Reduction in Size of Slice… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Amorphous Slice:  No Syntax Preservation  Retaining the semantic property Applications:  Re-engineering  Component Re-use  Program Comprehension  Testing & Maintenance  Program Integration
  33. 33. Amorphous Slice: Example Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp for(i = 0,sum = a[0], biggest = sum; i<19; sum = a[++i]) if (a[i+1] > biggest) { biggest = a[i+1]; average = sum/20; } Amorphous slice for(i = 1, biggest = a[0]; i<20; ++i) { if (a[i]>biggest) biggest = a[i]; } Traditional slice for(i = 0,sum = a[0], biggest = sum; i<19; sum = a[++i]) if (a[i+1] > biggest) { biggest = a[i+1]; } Slicing Criterion Loop unrolling
  34. 34. Challenges: For further reading… Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp  Slicing Object-Oriented Programs  Effect of Exceptions on Control Flow  Slicing UML Models  Slicing of threaded programs  Slicing Concurrent and Distributed Programs
  35. 35. Directions of Research Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp A Novel Fault Localization Technique
  36. 36. References [1] M Weiser. 1984. “Program slicing” IEEE Transactions on Software Engineering 10(4):352–57 [2] F. Tip. 1995. A survey of program slicing techniques. Journal of Programming Languages 3(3): 121–89 [3] D. P.Mohapatra, R.Mall, and R. Kumar. 2006. “ An overview of slicing techniques for object-oriented programs” Informatica 30(2):253–77 [4] G. B.Mund, R.Mall, and S. Sarkar. 2003. “Computation of intra-procedural dynamic program slices. Information and Software Technology 45(8):499–512. Indian Institute of Technology, Kharagpur Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp
  37. 37. Questions Indian Institute of Technology, Kharagpur Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp
  38. 38. Indian Institute of Technology, Kharagpur Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

×