Direct update of data flow representations for a meaning-preserving program restructuring tool

  • Authors:
  • William G. Griswold

  • Affiliations:
  • -

  • Venue:
  • SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
  • Year:
  • 1993

Quantified Score

Hi-index 0.00

Visualization

Abstract

Automated assistance for meaning-preserving global restructuring is an approach for helping software engineers improve the structure of programs, thus lowering the costs of maintenance. The consturction of a restructuing tool encounters many conflicting goals---such as simplicity. extensibility, and good performance---that cannot be met without some compromise. In particular, the current technique for assisting restructuring uses a costly program representation---a Program Dependence Graph (PDG) with alias information---that is not practical to recompute from scratch after each restructuring transformation. There are at least two possible solutions. A commonly suggested approach for efficiently updating data flow representations is to use a generic incremental algorithm that does not make use of the special nature of the restructuring. This approach is general, but it does not yet handle aliasing fully. By taking advantage of the special nature of the restructuring transformations it is possible to implement a more efficient update than generic update that also handles aliasing. The idea is to implement direct updates to the PDG that are analogous to the changes on the program text. The downsides to direct update are that it is application-specific, applies only to semantically restricted applications like restructuring, and may be more complex. The choice between the two techniques requires an understanding of the current and future needs of the tool's users.This paper describes the direct approach of updating the PDG and related representations for restructuring, provides techniques for managing its complexity, critiques its advantages and shortcomings relative to generic incremental update, and presents performance results.