Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The C++ programming language
The C programming language
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
The C Information Abstraction System
IEEE Transactions on Software Engineering
Programming perl
LaSSIE: a knowledge-based software information system
Communications of the ACM - Special issue on software engineering
TXL: a rapid prototyping system for programming language dialects
Computer Languages
Software—Practice & Experience
Eiffel: the language
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
Tcl and the Tk toolkit
Managing design trade-offs for a program understanding and transformation tool
Journal of Systems and Software - Double issue on reengineering complex systems
An empirical study of static call graph extractors
Proceedings of the 18th international conference on Software engineering
Automating the detection of reusable parts in existing software
ICSE '93 Proceedings of the 15th international conference on Software Engineering
The Field Programming Environment: A Friendly Integrated Environment for Learning and Development
The Field Programming Environment: A Friendly Integrated Environment for Learning and Development
ICON Programmng Language
Structural Redocumentation: A Case Study
IEEE Software
A": A Language for Implementing Language Processors
IEEE Transactions on Software Engineering
Formalizing Design Spaces: Implicit Invocation Mechanisms
VDM '91 Proceedings of the 4th International Symposium of VDM Europe on Formal Software Development-Volume I: Conference Contributions - Volume I
Fast, Flexible Syntactic Pattern Matching and Processing
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
Queries and views of programs using a relational database system
Queries and views of programs using a relational database system
Architecture of the XL C++ browser
CASCON '92 Proceedings of the 1992 conference of the Centre for Advanced Studies on Collaborative research - Volume 1
Design of Flexible Static Program Analyzers with PQL
IEEE Transactions on Software Engineering
An empirical study of static call graph extractors
ACM Transactions on Software Engineering and Methodology (TOSEM)
IBM Systems Journal
An Extensible System for Source Code Analysis
IEEE Transactions on Software Engineering
Pattern-based design recovery of Java software
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
The perils of reconstructing architectures
ISAW '98 Proceedings of the third international workshop on Software architecture
Architecture-level dependence analysis in support of software maintenance
ISAW '98 Proceedings of the third international workshop on Software architecture
Lightweight extraction of object models from bytecode
Proceedings of the 21st international conference on Software engineering
Call-mark slicing: an efficient and economical way of reducing slice
Proceedings of the 21st international conference on Software engineering
GENOA—a customizable, front-end-retargetable source code analysis framework
ACM Transactions on Software Engineering and Methodology (TOSEM)
Analysis and Testing of Programs with Exception Handling Constructs
IEEE Transactions on Software Engineering
Interprocedural control dependence
ACM Transactions on Software Engineering and Methodology (TOSEM)
Lightweight Extraction of Object Models from Bytecode
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Advances in software engineering
Browsing and searching source code of applications written using a GUI framework
Proceedings of the 24th International Conference on Software Engineering
Playing Detective: Reconstructing Software Architecture from Available Evidence
Automated Software Engineering
An Approach for Recovering Distributed System Architectures
Automated Software Engineering
Software Reflexion Models: Bridging the Gap between Design and Implementation
IEEE Transactions on Software Engineering
Nordic Journal of Computing
Tool Support for Testing and Documenting Framework-Based Software
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Cost-Effective Maintenance Tools for Proprietary Languages
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
CVSSearch: Searching through Source Code using CVS Comments
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
View Extraction and View Fusion in Architectural Understanding
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
DiscoTect: A System for Discovering Architectures from Running Systems
Proceedings of the 26th International Conference on Software Engineering
Effective pattern matching of source code using abstract syntax patterns
Software—Practice & Experience
A lightweight approach to technical risk estimation via probabilistic impact analysis
Proceedings of the 2006 international workshop on Mining software repositories
An infrastructure to support interoperability in reverse engineering
Information and Software Technology
Generalizing recognition of an individual dialect in program analysis and transformation
Proceedings of the 2007 ACM symposium on Applied computing
Improving change descriptions with change contexts
Proceedings of the 2008 international working conference on Mining software repositories
Detecting Coordination Problems in Collaborative Software Development Environments
Information Systems Management
Science of Computer Programming
Learning from 6,000 projects: lightweight cross-project anomaly detection
Proceedings of the 19th international symposium on Software testing and analysis
Redocumentation of a legacy banking system: an experience report
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
DSketch: lightweight, adaptable dependency analysis
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Information Systems Frontiers
How Well Do Search Engines Support Code Retrieval on the Web?
ACM Transactions on Software Engineering and Methodology (TOSEM)
Impact analysis for distributed event-based systems
Proceedings of the 6th ACM International Conference on Distributed Event-Based Systems
Identifying message flow in distributed event-based systems
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.01 |
Software engineers maintaining an existing software system often depend on the mechanized extraction of information from system artifacts. Some useful kinds of information—source models—are well known: call graphs, file dependences, etc. Predicting every kind of source model that a software engineer may need is impossible. We have developed a lightweight approach for generating flexible and tolerant source model extractors from lexical specifications. The approach is lightweight in that the specifications are relatively small and easy to write. It is flexible in that there are few constraints on the kinds of artifacts from which source models are extracted (e.g., we can extract from source code, structured data files, documentation, etc.). It is tolerant in that there are few constraints on the condition of the artifacts. For example, we can extract from source that cannot necessarily be compiled. Our approach extended the kinds of source models that can be easily produced from lexical information while avoiding the constraints and brittleness of most parser-based approaches. We have developed tools to support this approach and applied the tools to the extraction of a number of different source models (file dependences, event interactions, call graphs) from a variety of system artifacts (C, C++, CLOS, Eiffel. TCL, structured data). We discuss our approach and describe its application to extract source models not available using existing systems; for example, we compute the implicitly-invokes relation over Field tools. We compare and contrast our approach to the conventional lexical and syntactic approaches of generating source models.