38
Indian Institute of Technology, Kharagpur Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp Presented By- Ankur Jain (13CS60D02)

Programing Slicing and Its applications

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Programing Slicing and Its applications

Indian Institute of Technology, Kharagpur

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

Presented By- Ankur Jain (13CS60D02)

Page 2: Programing Slicing and Its applications

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?

Page 3: Programing Slicing and Its applications

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/

Page 4: Programing Slicing and Its applications

Try...

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

Program Slicing!

Page 5: Programing Slicing and Its applications

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

Page 6: Programing Slicing and Its applications

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)

Page 7: Programing Slicing and Its applications

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

Page 8: Programing Slicing and Its applications

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

Page 9: Programing Slicing and Its applications

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.

Page 10: Programing Slicing and Its applications

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.

Page 11: Programing Slicing and Its applications

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

Page 12: Programing Slicing and Its applications

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

Page 13: Programing Slicing and Its applications

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

Page 14: Programing Slicing and Its applications

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)

Page 15: Programing Slicing and Its applications

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

2 1 3

Data Dependency Graph

Page 16: Programing Slicing and Its applications

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

Page 17: Programing Slicing and Its applications

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

Page 18: Programing Slicing and Its applications

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

Page 19: Programing Slicing and Its applications

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

Page 20: Programing Slicing and Its applications

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

Page 21: Programing Slicing and Its applications

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

2 9

3

7

Data dependence Control dependence

Limitation: A PDG can model programs with a single function Not suitable for inter-procedural slicing

Page 22: Programing Slicing and Its applications

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

Page 23: Programing Slicing and Its applications

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;

}

Page 24: Programing Slicing and Its applications

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

Page 25: Programing Slicing and Its applications

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

Page 26: Programing Slicing and Its applications

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

Page 27: Programing Slicing and Its applications

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?

Page 28: Programing Slicing and Its applications

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?

Page 29: Programing Slicing and Its applications

Dynamic Slicing: Example cont…

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

For N=3

Page 30: Programing Slicing and Its applications

The Dynamic Slice w.r.t. (10,s)

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

Page 31: Programing Slicing and Its applications

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

Page 32: Programing Slicing and Its applications

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

Page 33: Programing Slicing and Its applications

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

Page 34: Programing Slicing and Its applications

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

Page 35: Programing Slicing and Its applications

Directions of Research

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

A Novel Fault Localization Technique

Page 36: Programing Slicing and Its applications

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

Page 37: Programing Slicing and Its applications

Questions

Indian Institute of Technology, Kharagpur

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp

Page 38: Programing Slicing and Its applications

Indian Institute of Technology, Kharagpur

Date : 27 March-2014 Ankur Jain, Dept of Computer Sc & Engg., IIT Kgp