Program views are useful aids that can help programmers in understanding aspects of existing programs that they may need to extend or modify. Most views describe detailed information about program components or provide abstractions of relationships between components. Programmers, however, often need abstracted views of delocalized programming plans to understand how various components throughout a program can be interrelated in different ways to achieve specific goals or program effects. This requires the "weaving" together of diverse information sources that current tools do not adequately support. This paper presents a new methodology for automatically abstracting delocalized programming plans from programs, and describes automatic abstractors for three specific plans: the calling pattern of a set of functions in a program, the program-wide occurrence of a global variable and the modification effects of a call site. We show how these abstractors can extract instances of programming plans, present them as an integrated set of abstract program views, and support programmer interaction with these views. A framework for constructing automatic abstractors is described, that allows abstractors for a class of delocalized programming plans to be easily constructed. Descriptive Keywords: program understanding, delocalized programming plans, abstracted program views, system constructors, data flow analysis

Date of this Version

September 1993