Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Extended programming in the large in a software development environment
SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The C Information Abstraction System
IEEE Transactions on Software Engineering
Specifying and generating multilanguage software development environments
Software Engineering Journal
LaSSIE: a knowledge-based software information system
Communications of the ACM - Special issue on software engineering
Object-oriented modeling and design
Object-oriented modeling and design
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
The REDO compendium: reverse engineering for software maintenance
The REDO compendium: reverse engineering for software maintenance
Lightweight lexical source model extraction
ACM Transactions on Software Engineering and Methodology (TOSEM)
The entity-relationship model—toward a unified view of data
ACM Transactions on Database Systems (TODS) - Special issue: papers from the international conference on very large data bases: September 22–24, 1975, Framingham, MA
The design and implementation of INGRES
ACM Transactions on Database Systems (TODS)
Structural Redocumentation: A Case Study
IEEE Software
A Framework for Source Code Search Using Program Patterns
IEEE Transactions on Software Engineering
A Query Algebra for Program Databases
IEEE Transactions on Software Engineering
SESPATH: An ER Manipulation Language
Proceedings of the Fourth International Conference on Entity-Relationship Approach
Relations and attributes: A symbiotic basis for editing environments
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Implementing relational views of programs
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Design of a generic reverse engineering assistant tool
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Using view-based models to formalize architecture description
ISAW '98 Proceedings of the third international workshop on Software architecture
P3: a code and design conventions preprocessor for Java
Software—Practice & Experience
A model independent source code repository
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Representing and Accessing Extracted Information
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
CodeQuest: querying source code with datalog
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
.QL: Object-Oriented Queries Made Easy
Generative and Transformational Techniques in Software Engineering II
CodeQuest: scalable source code queries with datalog
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
FATES'06/RV'06 Proceedings of the First combined international conference on Formal Approaches to Software Testing and Runtime Verification
LPAR'12 Proceedings of the 18th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Hi-index | 0.01 |
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