@techreport{R-91-19, TITLE = {An Overview and Comparative Classification of Static and Dynamic Program Slicing}, AUTHOR = {Mariam Kamkar}, YEAR = {1991}, NUMBER = {R-91-19}, INSTITUTION = ida, ADDRESS = idaaddr, ABSTRACTURL = {/publications/cgi-bin/tr-fetch.pl?r-91-19+abstr}, ABSTRACT = {Program slicing is a method for decomposing programs into segments or slices. A program slice contains all statements that could have influenced the value of a variable of interest at some program point. The technique of program slicing has up to now been applied within a number of areas such as software maintenance, program verification, program integration, testing, parallel processor distribution and especially program debugging. A slice of a program is computed either by using static information, in which case it is called a static slice, or with the help of dynamic information, in which case it is called a dynamic slice. A static slice of a program contains much broader but less precise information and thus it tends to be much more voluminous than the corresponding dynamic slice. The reason is that for a specified variable in a program the static slice is the collection of all possible computations of values of that variable. A dynamic slice, on the other hand, isolates the unique computation of the value of the specified variable for a certain program execution. Thus, it narrows the size of the computed slice compared to the corresponding static slice.The current literature on slicing is becoming unwieldy with many different notions and methods. This paper attempts to bring order into disorder by identifying and classifying different notions of program slicing and their applications. A new notion of execution slice and a method for interprocedural dynamic slicing are introduced as well.}, IDANR = {LiTH-IDA-R-91-19}