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 recently proposed by S. Horwitz, J. Prins, and T. Reps provides a way to create a semantics-based tool for program integration. 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 preserved in the merged program. An integration system based on this algorithm will determine whether the programs incorporate interfering changes, and, if they do not, will automatically create an integrated program that includes all changes as well as all features that are preserved in all variants. In this paper we discuss how an integration tool can illustrate the causes of interference to the user when interference is detected. Our main technical result is an alternative characterization of the integration algorithm's interference criterion that is more suitable for illustrating the causes of interference. We then propose six methods for an integration system to display information to demonstrate the causes of interference to the user.
[1]
Wuu Yang,et al.
The Semantics of Program Slicing
,
1988
.
[2]
Thomas W. Reps,et al.
Integrating noninterfering versions of programs
,
1989,
TOPL.
[3]
Thomas Reps,et al.
The Synthesizer Generator: A System for Constructing Language-Based Editors
,
1988
.
[4]
David A. Padua,et al.
Dependence graphs and compiler optimizations
,
1981,
POPL '81.
[5]
Thomas W. Reps,et al.
The synthesizer generator
,
1984,
SDE 1.
[6]
Joe D. Warren,et al.
The program dependence graph and its use in optimization
,
1987,
TOPL.
[7]
FerranteJeanne,et al.
The program dependence graph and its use in optimization
,
1987
.
[8]
Thomas W. Reps,et al.
Integrating non-intering versions of programs
,
1988,
POPL '88.
[9]
Thomas Reps,et al.
The synthesizer generator
,
1984
.
[10]
Thomas W. Reps,et al.
Support for Integrating Program Variants in an Environment for Programming in the Large
,
1988,
SCM.