Program slicing: Difference between revisions

Content deleted Content added
mNo edit summary
mNo edit summary
Line 3:
In [[computer programming]], '''program slicing''' is the computation of a program slice. The '''program slice''' consists of the parts of a program that may affect the values computed 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. Other applications of slicing include [[software maintenance]], [[Optimization (computer science)|optimization]], and [[Program analysis (computer science)|program analysis]].
 
Slicing techniques has been seeing a rapid development since the original definition by [[Mark Weiser]]. At first, the slicing was only static, i.e. applied on the source code with no other information than the source code. [[Bogdan Korel]] and [[Janusz Laski]] introduced ''dynamic slicing'', which works on a specific execution of the program (for a given execution trace). Other forms of slicing exist, for instance path slicing.
 
== Static slicing ==
 
Based on the original definition of Weiser, informally, a static program slice S consists of all statements in program P that may affect the value of variable v at some point p. The slice is defined for a slicing criterion C=(x,V), where x is a statement in program P and V is a subset of variables in P. A static slicingslice includes all the statements that affect variable v for a set of all possible inputs at the point of interest (i.e. at the statement x). Static slices are computed by finding consecutive sets of indirectly relevant statements, according to [[data dependency|data]] and control dependencies.
 
=== Example ===