A Unified Interprocedural Program Representation for a Maintenance Enviornment


Modifying and then validating a program with many interacting modules, such as procedures, is an expensive and complex task: maintenance activities must be performed for changed procedures and for those procedures that directly or indirectly interact with the changed procedure. The problem is further compounded because the maintainer is rarely the author of the code and usually lacks an understanding of the program. Thus, a maintenance environment containing an efficient program representation and tools that access the representation to assist the user in understanding, modifying, analyzing, reengineering, testing and debugging a program are needed. This paper presents our unified interprocedural graph, UIG, that extracts the important features of existing program representations, and adds new information, to provide an integrated representation for maintenance tasks. We adapt previous interprocedural techniques to use the UIG, and we provide sufficient information to accommodate development of new interprocedural techniques. Algorithms that were developed for previous representations were adapted to use the UIG by identifying the subset of nodes and edges in the UIG required for that computation. Newly developed algorithms can use the UIG since it contains data flow, control flow, data dependence and control dependence information. The main benefits of our approach are the reduction in storage space since individual representations are not kept, the savings in maintenance time of a single representation over the individual representations, and the convenience of accessing a single program representation without increase in access time. A single program representation also assists in program understanding since relationships among program elements are incorporated into one graph.

Related research categories:
(1) Control Dependence
(2) Data Flow
(3) Program Analysis

Go To Publications