Multi-procedure program integration
暂无分享,去创建一个
The magnitude and complexity of existing and future software systems heightens the need for tools that assist programmers with the task of maintaining and developing software. One recurring problem that arises in system development is the need to reconcile multiple divergent lines of program development. When solved by hand, this reconciliation or integration process is often tedious and error prone. A better solution is the use of a program integration tool--a tool that takes as input several variants of a base program, automatically determines the changes in each variant with respect to the base program, and incorporates these changes, along with the portion of the base program preserved in all the variants, into a merged program.
Previous algorithms that solve the program-integration problem include text-based approaches, such as that used by the U scNIX diff3 utility. However, the text-based approach is unsatisfactory since it fails to guarantee any relationship between the behavior of the integrated program and the behaviors of the base program and its variants. In contrast, semantics-based approaches to program integration can exploit knowledge of a language's semantics to provide such a guarantee.
Previous semantics-based algorithms, however, have been limited to single-procedure programs. This dissertation extends one of these algorithms to handle programs that consist of multiple (possibly mutually recursive) procedures. In doing so it makes the following three major contributions.
(1) Definition of the system dependence graph. This graph extends previous dependence representations to incorporate collections of procedures and the interconnections between them.
(2) New algorithms for interprocedural slicing. These algorithms compute several kinds of interprocedural slices (i.e., slices that cross the boundaries between procedures). By solving the calling-context problem the algorithms described in this dissertation produce smaller (i.e., better) slices than previous algorithms.
(3) A semantics-based algorithm for multi-procedure integration. As with slicing, the chief difficulty in multi-procedure integration is correctly accounting for calling context. The algorithm makes use of the system dependence graph, interprocedural slicing, and some additional preprocessing of the system dependence graph to correctly account for calling context.