Program Slicing for Large Systems: Slide 7 of 15.


Click slide for next, or goto previous, first, last slides or back to thumbnail layout.

Click slide for next, or goto previous, or back to thumbnail layout.

Technically speaking, everything that is transitively control dependent or data dependent on the slicing criterion is included into the slice.
Control dependences represent more or less the nesting structure of the program. Each statement of a nested statement sequence is control dependent on the nesting statement. The predicate of the WHILE loop is included into the slice because the slicing criterion, that is the statement INC(i), is control dependent on the predicate of the LOOP. Control dependences are depicted on this slide with small arrows.
Data dependences point from variable usages to variable definitions. During the first iteration of the loop, the first definition of i (i := 0) is a reaching definition for INC(i), for all other iterations of the loop, the definition due to INC(i) itself is the only reaching definition. Therefore we have two data dependence edges from INC(i): one to itself and one to "i := 0". The predicate of the WHILE loop uses the variables i and len. There are two reaching definitions for i and there is one reaching definition for len. All local variables and parameters are assumed to have initial values. Therefore we have data dependences to the declarations of the local variables and parameters if they are accessed by parts of the slice.