Abstract:
For maintainers involved in understanding and reengineering large software, locating source code fragments that match certain patterns is a critical task. Existing solutions to the problem are few, and they either involve manual, painstaking scans of the source code using tools based on regular expressions, or the use of large, integrated software engineering environments that include simple patternbased query processors in their toolkits. We present a framework in which pattern languages are used to specify interesting code features. The pattern languages are derived by extending the source programming language with pattern-matching symbols. We describe SCRUPLE, a finite state machine-based source code search tool, that efficiently implements this framework. We also present experimental performance results obtained from a SCRUPLE prototype, and the user interface of a source code browser built on top of SCRUPLE. Keywords: Reverse engineering, software maintenance, software reengineer...
Citations
|
2870
|
Introduction to automata theory, languages and computation
– Hopcroft, Ullman
- 1979
|
|
1052
|
The C Programming Language
– Kerighan, Ritchie
- 1978
|
|
530
|
A complexity measure
– McCabe
- 1976
|
|
457
|
Fast pattern matching in strings
– Knuth, Morris, et al.
- 1977
|
|
393
|
A fast string searching algorithm
– Boyer, Moore
- 1977
|
|
201
|
Efficient randomized pattern-matching algorithms
– Karp, Rabin
- 1981
|
|
162
|
Toward a theory of the comprehension of computer programs
– Brooks
- 1983
|
|
156
|
Elements of Software Science
– Halstead
- 1977
|
|
131
|
The C information abstraction system
– Chen, Nishimoto, et al.
- 1990
|
|
131
|
The UNIX Programming Environment
– KERNIGHAN, PIKE
- 1984
|
|
94
|
TXL: A rapid prototyping system for programming language dialects
– Cordy, Halpern-Hamu, et al.
- 1991
|
|
61
|
Implementing relational views of programs
– Linton
- 1984
|
|
55
|
Software Interconnection Models
– Perry
- 1987
|
|
49
|
Knowledge guided parsing in video databases
– Swanberg, Jain
|
|
40
|
Detecting plagiarism in student PASCAL programs
– Jankowitz
- 1988
|
|
37
|
Program concept recognition and transformation
– Kozaczynski, Ning, et al.
- 1992
|
|
29
|
A tool that detects plagiarism in Pascal programs
– Grier
- 1981
|
|
17
|
Automating Software Analysis and Testing Using a Program Transformation System
– Kotik, Markosian
- 1989
|
|
16
|
Measurements of program similarity in identical task environments
– Berghel, Sallach
- 1984
|
|
13
|
Object-Oriented Design Archaeology with CIA++. Computing Systems: The
– Grass
- 1992
|
|
10
|
Spatial and visual representations of software structures: A model for reverse engineering
– Müller, Corrie, et al.
- 1992
|
|
9
|
Source code retrieval using program patterns
– Paul, Prakash
- 1992
|
|
6
|
SCRUPLE: a reengineer's tool for source code search
– Paul
- 1992
|
|
5
|
A Transformational Approach to Generating ApplicationSpecific Environments
– Garlan, Cai, et al.
- 1992
|
|
4
|
Compare: A collusion detector for pascal
– Madhavji
- 1985
|
|
3
|
Software Change Analysis via Attributed Dependency Graphs
– Al-Zoubi, Prakash
- 1991
|
|
2
|
Microscope: A Program Analysis System
– Ambras, O'Day
- 1987
|
|
1
|
Theory and Design of Source Code Query Systems
– Paul
- 1994
|
|
1
|
Algorithms in C, chapter 20
– Sedgewick
- 1990
|
|
1
|
About the Authors Santanu Paul received his B.Tech degree in Computer Science from the Indian Institute of Technology
– Westfold
- 1993
|