Results 1 
5 of
5
Static program slicing algorithms are minimal for free liberal program schemas
 The Computer Journal
, 2006
"... Program slicing is an automated source code extraction technique that has been applied to a number of problems including testing, debugging, maintenance, reverse engineering, program comprehension, reuse and program integration. In all these applications the size of the slice is crucial; the smaller ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
Program slicing is an automated source code extraction technique that has been applied to a number of problems including testing, debugging, maintenance, reverse engineering, program comprehension, reuse and program integration. In all these applications the size of the slice is crucial; the smaller the better. It is known that statement minimal slices are not computable, but the question of dataflow minimal slicing has remained open since Weiser posed it in 1979. This paper proves that static slicing algorithms produce dataflow minimal end slices for programs which can be represented as schemas which are free and liberal. 1.
A Trajectorybased Strict Semantics for Program Slicing
"... We define a program semantics that is preserved by dependencebased slicing algorithms. It is a natural extension, to nonterminating programs, of the semantics introduced by Weiser (which only considered terminating ones) and, as such, is an accurate characterisation of the semantic relationship be ..."
Abstract
 Add to MetaCart
We define a program semantics that is preserved by dependencebased slicing algorithms. It is a natural extension, to nonterminating programs, of the semantics introduced by Weiser (which only considered terminating ones) and, as such, is an accurate characterisation of the semantic relationship between a program and the slice produced by these algorithms. Unlike other approaches, apart from Weiser’s original one, it is based on strict standard semantics which models the ‘normal ’ execution of programs on a von Neumann machine and, thus, has the advantage of being intuitive. This is essential since one of the main applications of slicing is program comprehension. Although our semantics handles nontermination, it is defined wholly in terms of finite trajectories, without having to resort to complex, counterintuitive, nonstandard models of computation. As well as being simpler, unlike other approaches to this problem, our semantics is substitutive. Substitutivity is an important property because it greatly enhances the ability to reason about correctness of meaningpreserving
Characterizing Minimal Semanticspreserving Slices of predicatelinear, Free, Liberal Program Schemas
"... Aprogramschemadefinesaclassofprograms,allofwhichhaveidenticalstatement structure, but whose functions and predicates may differ. A schema thus defines an entire class of programs according to how its symbols are interpreted. A slice of a schema is obtained from a schema by deleting some of its state ..."
Abstract
 Add to MetaCart
Aprogramschemadefinesaclassofprograms,allofwhichhaveidenticalstatement structure, but whose functions and predicates may differ. A schema thus defines an entire class of programs according to how its symbols are interpreted. A slice of a schema is obtained from a schema by deleting some of its statements. We prove that given a schema S which is predicatelinear, free and liberal, such that the true and false parts of every if predicate satisfy a simple additional condition, and a slicing Preprint submitted to Elsevier Sciencecriterion defined by the final value of a given variable after execution of any program defined by S, theminimalsliceofSwhich respects this slicing criterion contains all the symbols ‘needed ’ by the variable according to the data dependence and control dependence relations used in program slicing, which is the symbol set given by Weiser’s static slicing algorithm. Thus this algorithm gives predicateminimal slices for classes of programs represented by schemas satisfying our set of conditions. We also give an example to show that the corresponding result with respect to the slicing criterion defined by termination behaviour is incorrect. This strengthens a recent result in which S was required to be linear, free and liberal, and termination behaviour as a slicing criterion was not considered.
Under consideration for publication in Math. Struct. in Comp. Science On the computational complexity of dynamic slicing problems for program schemas
, 2010
"... Given a program, a quotient can be obtained from it by deleting zero or more statements. The field of program slicing is concerned with computing a quotient of a program which preserves part of the behaviour of the original program. All program slicing algorithms take account of the structural prope ..."
Abstract
 Add to MetaCart
Given a program, a quotient can be obtained from it by deleting zero or more statements. The field of program slicing is concerned with computing a quotient of a program which preserves part of the behaviour of the original program. All program slicing algorithms take account of the structural properties of a program such as control dependence and data dependence rather than the semantics of its functions and predicates, and thus work, in effect, with program schemas. The dynamic slicing criterion of Korel and Laski requires only that program behaviour is preserved in cases where the original program follows a particular path, and that the slice/quotient follows this path. In this paper we formalise Korel and Laski’s definition of a dynamic slice as applied to linear schemas, and also formulate a less restrictive definition in which the path through the original program need not be preserved by the slice. The less restrictive definition has the benefit of leading to smaller slices. For both definitions, we compute complexity bounds for the problems of establishing whether a given slice of a linear schema is a dynamic slice and whether a linear schema has a nontrivial dynamic slice and prove that the latter problem is NPhard in both cases. We also give an example to prove that minimal dynamic slices (whether or not they preserve the original path) need not be unique. 1.