A Cache-Based Natural Language Model for Speech Recognition
IEEE Transactions on Pattern Analysis and Machine Intelligence
Program understanding and the concept assignment problem
Communications of the ACM
Software Metrics: A Rigorous Approach
Software Metrics: A Rigorous Approach
Software Metrics: A Practitioner's Guide to Improved Product Development
Software Metrics: A Practitioner's Guide to Improved Product Development
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
A Framework for Source Code Search Using Program Patterns
IEEE Transactions on Software Engineering
Domain-Retargetable Reverse Engineering II: Personalized User Interfaces
ICSM '94 Proceedings of the International Conference on Software Maintenance
Localization of Design Concepts in Legacy Systems
ICSM '94 Proceedings of the International Conference on Software Maintenance
Legacy System Cataloging Facility
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Comparison and Evaluation of Clone Detection Tools
IEEE Transactions on Software Engineering
Empirical-based recovery and maintenance of input error-correction features
Journal of Software Maintenance and Evolution: Research and Practice
Applying static analysis for automated extraction of database interactions in web applications
Information and Software Technology
An approach for the maintenance of input validation
Information and Software Technology
Assessing technical debt by identifying design flaws in software systems
IBM Journal of Research and Development
Hi-index | 0.00 |
The effective synergy of a number of different techniques is the key to the successful development of an efficient reverse engineering environment. Compiler technology, pattern matching techniques, visualization tools, and software repositories play an important role for the identification of procedural, data, and abstract-data-type related concepts in the source code. This paper describes a number of techniques used for the development of a distributed reverse engineering environments. Design recovery is investigated through code-to-code and abstract-descriptions-to-code pattern matching techniques used to locate code that may implement a particular plan or algorithm. The code-to-code matching uses dynamic programming techniques to locate similar code fragments and is targeted for large software systems (1MLOC). Patterns are specified either as source code or as a sequence of abstract statements written in an concept language developed for this purpose. Markov models are used to compute similarity measures between an abstract description and or code fragment in terms of the probability that a given abstract statement can generate a given code fragment. The abstract-description-to-code matcher is under implementation and early experiments show it is a promising technique.