This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Design of Flexible Static Program Analyzers with PQL
March 1998 (vol. 24 no. 3)
pp. 197-215

Abstract—Static Program Analyzers (SPA) are interactive tools that enhance program understanding during maintenance by answering queries about programs. Depending on the maintenance task in hand, SPAs must process different source programs and answer different types of program queries. Flexibility is, therefore, a desirable property of SPAs. In this paper, we describe a program query language, called PQL, that facilitates the design of flexible SPAs. PQL is a conceptual level, source language-independent notation to specify program queries and program views. In PQL, we can query global program design as well as search for detail code patterns. PQL queries are answered automatically by a query evaluation mechanism built into an SPA. Program design models and PQL form the core of an SPA conceptual model. We based the SPA's architecture on this conceptual model. By separating the conceptual model from the implementation decisions, we can design SPAs that are customizable to the needs of the maintenance project at hand. Depending on criteria such as efficiency of query evaluation or simplicity of the SPA design, we can implement the same functional specifications of an SPA on a variety of program representations to meet the required criteria. Apart from its role in the design of SPAs, the conceptual model also allows us to rigorously study SPA functionality in the context of the underlying maintenance process and programmer behavior models, in isolation from tool implementation details

[1] A.V. Aho, R. Sethi, and J.D. Ullman, Compilers, Principles, Techniques and Tools.New York: Addison-Wesley, 1985.
[2] S. Burson, G. Kotik, and L. Markosian, "A Program Transformation Approach to Automating Software Re-engineering," Proc. COMPSAC '90, pp. 314-322, 1990.
[3] P.P. Chen, “The Entity‐Relationship Model: Toward a Unified View of Data,” ACM Trans. Database Systems, Vol. 1, No. 1, Jan. 1976, pp. 9–36.
[4] Y. Chen, M. Nishimito, and C. Ramamoorthy, "C Information Abstraction System," IEEE Trans. Software Eng., vol. 16, no. 3, pp. 325-334, Mar. 1990.
[5] C. Date and H.A. Darwen, Guide to the SQL Standard. Addison-Wesley, 1993.
[6] P. Devanbu et al., “LaSSIE: A Knowledge‐Based Software Information System,” Comm. ACM, May 1991, pp. 34‐49.
[7] P. Devanbu, "GENOA—A Customizable, Language and Front-End Independent Code Analyzer," Proc. 14th Int'l Conf. Software Eng., May 1992.
[8] S. Horwitz and T. Teitelbaum, "Relations and Attributes: A Symbiotic Basis for Editing Environments," Proc. ACM SIGPLAN '85, Symp. Language Issues in Programming Environments,Seattle, pp. 93-106, June 1985.
[9] S. Jarzabek, "Specifying and Generating Multilanguage Software Development Environments," Software Eng. J., vol. 5, no. 2, pp. 125-137, Mar. 1990.
[10] S. Jarzabek, H. Shen, and H.C. Chan, "A Hybrid Program Knowledge Base System for Static Program Analyzers," Proc. First Asia Pacific Software Eng. Conf., APSEC '94, Tokyo, pp. 400-409,Los Alamitos, Calif.: IEEE CS Press, Dec. 1994.
[11] S. Jarzabek and P.K. Tan, "Design of a Generic Reverse Engineering Assistant Tool," Proc. Second Working Conf. Reverse Eng., WCRE '95, Toronto, Canada, pp. 61-70,Los Alamitos, Calif.: IEEE CS Press, July 1995.
[12] W. Kozaczynski, J. Ning, and A. Engberts, "Program Concept Recognition and Transformation," IEEE Trans. Software Eng., vol. 18, no. 12, pp. 1,065-1,075, Dec. 1992.
[13] C. Lewerentz, "Extended Programming in the Large in a Software Development Environment," Proc. ACM SIGSOFT/SIGPLAN Software Eng. Symp. Practical Software Development Environments,Boston, Mass., pp. 173-182, Nov. 1988.
[14] M.A. Linton, "Implementing Relational Views of Programs," Proc. ACM SIGSOFT/SIGPLAN Software Eng. Symp. Practical Software Development Environments,Pittsburgh, pp. 65-72, Apr. 1984.
[15] G.C. Murphy and D. Notkin, “Lightweight Lexical Source Model Extraction,” ACM Trans. Programming Languages and Systems, vol. 5, no. 3, pp. 262–292, July 1996.
[16] K.J. Ottenstein and L.M. Ottenstein, ”The Program Dependence Graph in a Software Development Environment,” ACM SIGPLAN Notices, vol. 19, no. 5, pp. 177–184, May 1984.
[17] S. Paul and A. Prakash, "A Framework for Source Code Search Using Program Patterns," IEEE Trans. Software Eng., vol. 20, no. 6, pp. 463-474, June 1994.
[18] S. Paul and A. Prakash, "A Query Algebra for Program Databases," IEEE Trans. Software Eng., vol. 22, no. 3, pp. 202-217, Mar. 1996.
[19] T.W. Reps and T. Teitelbaum, "The Synthesizer Generator," Proc. ACM SIGSOFT/SIGPLAN Software Eng. Symp. Practical Software Development Environments,Pittsburgh, pp. 42-48, Apr. 1984.
[20] T. Reps, "Demand Interprocedural Program Analysis Using Logic Databases," Applications of Logic Databases, R. Ramakrishnan, ed., pp. 163-196.Boston, Mass.: Kluwer Academic, 1994.
[21] W. Roesner, "DESPATH: An ER Manipulation Language," Entity-Relationship Approach, P. Chen, ed., pp. 72-81.Los Alamitos, Calif.: IEEE CS Press, 1985.
[22] C.L. Chang, R.A. Stachowitz, and J.B. Combs, “Validation of Nonmonotonic Knowledge-Based Systems,” Proc. IEEE Int'l Conf. Tools for Artificial Intelligence, Nov. 1990.
[23] C. Seet, "Analyzing and Reverse Engineering COBOL Programs," Proc. Singapore Computer Soc. Silver Jubilee Conf. Software Eng.,Singapore, pp. 175-188, Oct. 1992.
[24] SICS '91, SICStus Prolog User's Manual. Swedish Inst. Computer Science, Oct. 1991.
[25] M. Stonebraker, P. Kreps, and G. Held, "The Design and Implementation of INGRES," ACM Trans. Database Systems vol. 1 no. 3, 1976.
[26] VIA/CENTER tool, by Viasoft Inc.
[27] M. Weiser, "Program Slicing," IEEE Trans. Software Eng., vol. 10, no. 4, pp. 352-357, July 1984.
[28] K. Wong, S. Tilley, H. Muller, and M. Storye, "Structural Redocumentation: A Case Study," IEEE Software, pp. 46-54, Jan. 1995.
[29] H.J. van Zuylen, The REDO Compendium: Reverse Eng. for Software Maintenance. John Wiley&Sons, 1992.

Index Terms:
Program analysis for understanding, program query language, program modeling, reverse engineering, software maintenance, tool generation.
Citation:
Stan Jarzabek, "Design of Flexible Static Program Analyzers with PQL," IEEE Transactions on Software Engineering, vol. 24, no. 3, pp. 197-215, March 1998, doi:10.1109/32.667879
Usage of this product signifies your acceptance of the Terms of Use.