Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Metrics and software structure
Information and Software Technology
Web Structures: A Tool for Representing and Manipulating Programs
IEEE Transactions on Software Engineering
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
The C Information Abstraction System
IEEE Transactions on Software Engineering
Measures of testability as a basis for quality assurance
Software Engineering Journal
Telos: representing knowledge about information systems
ACM Transactions on Information Systems (TOIS)
Reverse engineering: algorithms for program graph production
Software—Practice & Experience
Software—Practice & Experience
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Visualizing and querying software structures
ICSE '92 Proceedings of the 14th international conference on Software engineering
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
A Logic-Based Approach to Reverse Engineering Tools Production
IEEE Transactions on Software Engineering - Special issue on software maintenance
A Unified Interprocedural Program Representation for a Maintenance Environment
IEEE Transactions on Software Engineering
Software salvaging and the call dominance tree
Journal of Systems and Software
Managing design trade-offs for a program understanding and transformation tool
Journal of Systems and Software - Double issue on reengineering complex systems
Identification of Dynamic Comprehension Processes During Large Scale Maintenance
IEEE Transactions on Software Engineering - Special issue: best papers of the 17th International Conference on Software Engineering (ICSE-17)
Lightweight lexical source model extraction
ACM Transactions on Software Engineering and Methodology (TOSEM)
Assessing modular structure of legacy code based on mathematical concept analysis
ICSE '97 Proceedings of the 19th international conference on Software engineering
Automated construction of testing and analysis tools
ICSE '94 Proceedings of the 16th international conference on Software engineering
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
A Technique for Drawing Directed Graphs
IEEE Transactions on Software Engineering
A Query Algebra for Program Databases
IEEE Transactions on Software Engineering
A Framework for Partial Data Flow Analysis
ICSM '94 Proceedings of the International Conference on Software Maintenance
Understanding C Programs Using the Combined C Graph Representation
ICSM '94 Proceedings of the International Conference on Software Maintenance
A Cliche'-Based Environment to Support Architectural Reverse Engineering
ICSM '96 Proceedings of the 1996 International Conference on Software Maintenance
Identifying modules via concept analysis
ICSM '97 Proceedings of the International Conference on Software Maintenance
Function Recovery Based on Program Slicing
ICSM '93 Proceedings of the Conference on Software Maintenance
Implementing relational views of programs
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
Creating a Research Infrastructure for Reengineering
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Understanding Function Behaviors through Program Slicing
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
Derivation and Presentation of an Abstract Program Space for Ada
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
Ciao: a graphical navigator for software and document repositories
ICSM '95 Proceedings of the International Conference on Software Maintenance
Concern graphs: finding and describing concerns using structural program dependencies
Proceedings of the 24th International Conference on Software Engineering
A System for Generating Reverse Engineering Tools: A Case Study of Software Modularisation
Automated Software Engineering
Automatic generation of interprocedural data-flow analyzers and optimizers
Journal of Computer Science and Technology
Software—Practice & Experience
A Visual Framework for the Definition and Execution of Reverse Engineering Processes
VISUAL '08 Proceedings of the 10th international conference on Visual Information Systems: Web-Based Visual Information Search and Management
Code analyzer for an online course management system
Journal of Systems and Software
Hi-index | 0.00 |
Constructing code analyzers may be costly and error prone if inadequate technologies and tools are used. If they are written in a conventional programming language, for instance, several thousand lines of code may be required even for relatively simple analyses. One way of facilitating the development of code analyzers is to define a very high-level domain-oriented language and implement an application generator that creates the analyzers from the specification of the analyses they are intended to perform. This paper presents a system for developing code analyzers that uses a database to store both a no-loss fine-grained intermediate representation and the results of the analyses. The system uses an algebraic representation, called F(p), as the user-visible intermediate representation. Analyzers are specified in a declarative language, called $F(p)-\ell,$ which enables an analysis to be specified in the form of a traversal of an algebraic expression, with access to, and storage of, the database information the algebraic expression indices. A foreign language interface allows the analyzers to be embedded in C programs. This is useful for implementing the user interface of an analyzer, for example, or to facilitate interoperation of the generated analyzers with pre-existing tools. The paper evaluates the strengths and limitations of the proposed system, and compares it to other related approaches.