Results 1 -
6 of
6
The Use of Program Dependence Graphs in Software Engineering
, 1992
"... This paper describes a language-independent program representation-the program dependence graph—and &mCusses how program dependence graphs, together with operations such as program slicing, can provide the basis for powerfid programming tools that address important software-engineering problems, suc ..."
Abstract
-
Cited by 92 (1 self)
- Add to MetaCart
This paper describes a language-independent program representation-the program dependence graph—and &mCusses how program dependence graphs, together with operations such as program slicing, can provide the basis for powerfid programming tools that address important software-engineering problems, such as understanding what an existing program does and how it works, understanding the differences between several versions of a program, and creating new programs by combining pieces of old programs. The paper primarily surveys work in this mea that has been czried out at the University of Wisconsin during the past five years.
Low-cost, Concurrent Checking of Pointer and Array Accesses in C Programs
"... Execution Shadow processing was motivated, in part, by a tool called AE that supports abstract execution [17]. AE is used for efficient generation of detailed program traces. A source program, in C, is instrumented to record a small set of key events during execution. After execution these events s ..."
Abstract
-
Cited by 53 (1 self)
- Add to MetaCart
Execution Shadow processing was motivated, in part, by a tool called AE that supports abstract execution [17]. AE is used for efficient generation of detailed program traces. A source program, in C, is instrumented to record a small set of key events during execution. After execution these events serve as input to an abstract version of the original program that can recreate a full trace of the original program. The events recorded by the original program include control flow decisions. These are essentially the same data needed by a shadow process to follow a main process. AE is a post-run technique that shifts some of the costs involved in tracing certain incidents during a program's execution to the program that uses those incidents. In contrast, shadow processing is a run-time technique that removes expensive tracing from the critical execution path of a program and shifts it to another processor. Table 7: Concurrent Guarding using Shadow Processing: (user + system) time Program ...
Program Integration for Languages with Procedure Calls
- ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY
, 1995
"... ..."
Efficient Run-time Monitoring Using Shadow Processing
, 1995
"... General purpose multiprocessors are becoming increasingly common. We propose using pairs of processors, one running an ordinary application program and the other monitoring the application's execution. We call the processor doing the monitoring a "shadow processor, " as it "shadows" the main proc ..."
Abstract
-
Cited by 41 (2 self)
- Add to MetaCart
General purpose multiprocessors are becoming increasingly common. We propose using pairs of processors, one running an ordinary application program and the other monitoring the application's execution. We call the processor doing the monitoring a "shadow processor, " as it "shadows" the main processor's execution. We have developed a prototype shadow processing system which supports full-size programs written in C. Our system instruments an executable user program in C to obtain a "main process" and a "shadow process." The main process performs computations from the original program, occasionally communicating a few key values to the shadow process. The shadow process follows the main process, checking pointer and array accesses and detecting memory leaks. The overhead to the main process is very low --- almost always less than 10%. Further, since the shadow process avoids repeating some of the computations from the input program, it runs much faster than a single process pe...
Algebraic properties of program integration
- Science of Computer Programming
, 1991
"... Abstract. The need to integrate several versions of a program into a common one arises frequently, but it is a tedious and time consuming task to merge programs by hand. The program-integration algorithm proposed by Horwitz, Prins, and Reps provides a way to create a semantics-based tool for integra ..."
Abstract
-
Cited by 20 (4 self)
- Add to MetaCart
Abstract. The need to integrate several versions of a program into a common one arises frequently, but it is a tedious and time consuming task to merge programs by hand. The program-integration algorithm proposed by Horwitz, Prins, and Reps provides a way to create a semantics-based tool for integrating a base program with two or more variants. The integration algorithm is based on the assumption that any change in the behavior, rather than the text, of a program variant is significant and must be incorporated in the merged program. An integration system based on this algorithm will determine whether the variants incorporate interfering changes, and, if they do not, create an integrated program that includes all changes as well as all features of the base program that are preserved in all variants. To determine this information, the algorithm employs a program representation that is similar to the program dependence graphs that have been used previously in vectorizing and parallelizing compilers. This paper studies the algebraic properties of the program-integration operation, such as whether there are laws of associativity and distributivity. (For example, in this context associativity means: “If three variants of a given base are to be integrated by a pair of two-variant integrations, the same result is produced no matter which two variants are integrated first.”) To answer such questions, we reformulate the Horwitz-Prins-Reps integration algorithm as an operation in a Brouwerian algebra constructed from sets of dependence graphs. (A Brouwerian algebra is a distributive lattice with an operation a. − b characterized by a. ¡ ¢
Efficient Comparison of Program Slices
- ACTA INFORMATICA
, 1991
"... ... This paper presents a linear-time algorithm for determining whether two slices of a program dependence graph are isomorphic. ..."
Abstract
-
Cited by 19 (6 self)
- Add to MetaCart
... This paper presents a linear-time algorithm for determining whether two slices of a program dependence graph are isomorphic.

