Design of Flexible Static Program Analyzers with PQL

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. The author describes 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, one 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 POL form the core of an SPA conceptual model. He based the SPA's architecture on this conceptual model. By separating the conceptual model from the implementation decisions, one 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, one 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 one to rigorously study SPA functionality in the context of the underlying maintenance process and programmer behavior models, in isolation from tool implementation details.

[1]  Thomas W. Reps,et al.  Demand Interprocedural Program Analysis Using Logic Databases , 1993, Workshop on Programming with Logic Databases , ILPS.

[2]  Michael Stonebraker,et al.  The design and implementation of INGRES , 1976, TODS.

[3]  C. J. Date A guide to the SQL standard (2nd ed.) , 1989 .

[4]  T. Teitelbaum,et al.  Relations and attributes: A symbiotic basis for editing environments , 1985, SLIPE '85.

[5]  Claus Lewerentz,et al.  Extended programming in the large in a software development environment , 1988, Software Development Environments.

[6]  Atul Prakash,et al.  A Query Algebra for Program Databases , 1996, IEEE Trans. Software Eng..

[7]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

[8]  Stan Jarzabek,et al.  Design of a generic reverse engineering assistant tool , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[9]  Laurian M. Chirica,et al.  The entity-relationship model: toward a unified view of data , 1975, SIGF.

[10]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[11]  Premkumar T. Devanbu GENOA - A Customizable, Language- And Front-end Independent Code Analyzer , 1992, International Conference on Software Engineering.

[12]  Mark A. Linton,et al.  Implementing relational views of programs , 1984, SDE 1.

[13]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

[14]  Atul Prakash,et al.  A Framework for Source Code Search Using Program Patterns , 1994, IEEE Trans. Software Eng..

[15]  James M. Purtilo,et al.  Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments , 1985 .

[16]  Gordon Kotik,et al.  A program transformation approach to automating software re-engineering , 1990, Proceedings., Fourteenth Annual International Computer Software and Applications Conference.

[17]  H. J. van Zuylen The REDO compendium: reverse engineering for software maintenance , 1993 .

[18]  Wolfgang Roesner,et al.  SESPATH: An ER Manipulation Language , 1985, ER.

[19]  Thomas W. Reps,et al.  The synthesizer generator , 1984, SDE 1.

[20]  Wojtek Kozaczynski,et al.  Program Concept Recognition and Transformation , 1992, IEEE Trans. Software Eng..

[21]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[22]  Premkumar T. Devanbu,et al.  LaSSIE—a knowledge-based software information system , 1991, ICSE '90.

[23]  Han Shen,et al.  A hybrid program knowledge base for static program analyzers , 1994, Proceedings of 1st Asia-Pacific Software Engineering Conference.

[24]  Stan Jarzabek Specifying and generating multilanguage software development environments , 1990, Softw. Eng. J..

[25]  David Notkin,et al.  Lightweight lexical source model extraction , 1996, TSEM.

[26]  Hausi A. Müller,et al.  Structural Redocumentation: A Case Study , 1995, IEEE Softw..

[27]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[28]  C. J. Date A Guide to the SQL Standard , 1987 .

[29]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.