TY - GEN
T1 - Beyond traditional program slicing
AU - Sloane, Anthony M.
AU - Holdsworth, Jason
PY - 1996
Y1 - 1996
N2 - Traditional program slices are based on variables and statements. Slices consist of statements that potentially affect (or are affected by) the value of a particular variable at a given statement. Two assumptions are implicit in this definition: 1) that variables and statements are concepts of the programming language in which the program is written, and 2) that slices consist solely of statements. Generalised slicing is an extension of traditional slicing where variables are replaced by arbitrary named program entities and statements by arbitrary program constructs. A model of generalised slicing is presented that allows the essence of any slicing tool to be reduced to a node marking process operating on a program syntax tree. Slicing tools can thus be implemented in a straight-forward way using tree-based techniques such as attribute grammars.A variety of useful program decompositions are shown to be instances of generalised slicing including: call graph generation, interface extraction, slicing of object-oriented inheritance hierarchies and slices based on type dependences. Examples are also given of how slicing can enhance understanding of formal compiler specifications and aid the creation of subset language specifications.
AB - Traditional program slices are based on variables and statements. Slices consist of statements that potentially affect (or are affected by) the value of a particular variable at a given statement. Two assumptions are implicit in this definition: 1) that variables and statements are concepts of the programming language in which the program is written, and 2) that slices consist solely of statements. Generalised slicing is an extension of traditional slicing where variables are replaced by arbitrary named program entities and statements by arbitrary program constructs. A model of generalised slicing is presented that allows the essence of any slicing tool to be reduced to a node marking process operating on a program syntax tree. Slicing tools can thus be implemented in a straight-forward way using tree-based techniques such as attribute grammars.A variety of useful program decompositions are shown to be instances of generalised slicing including: call graph generation, interface extraction, slicing of object-oriented inheritance hierarchies and slices based on type dependences. Examples are also given of how slicing can enhance understanding of formal compiler specifications and aid the creation of subset language specifications.
U2 - 10.1145/229000.226315
DO - 10.1145/229000.226315
M3 - Conference proceeding contribution
SN - 0897917871
T3 - ISSTA '96
SP - 180
EP - 186
BT - Proceedings of the 1996 ACM SIGSOFT International Symposium on Software Testing and Analysis
PB - ACM
CY - New York, NY, USA
ER -