Abstract | ||
---|---|---|
As software systems evolve, they become more complex and harder to understand and maintain. Certain reverse engineering techniques attempt to reconstruct software models from source code with the help of a parser for the source language. Unfortunately a great deal of effort may be required to build a specialized parser for a legacy programming language or dialect. On the other hand, (i) we typically do not need a complete parser that recognizes all language constructs, and (ii) we have a rich supply of (legacy) examples. We present an approach to use these facts to rapidly and incrementally develop parsers as follows: we specify mappings from source code examples to model elements; we use the mappings to generate a parser; we parse as much code as we can; we use the exceptional cases to develop new example mappings; and we iterate. Experiments with Java and Ruby, two very different languages, suggest that our approach can be a very efficient and effective way to rapidly construct software models from legacy code. |
Year | DOI | Venue |
---|---|---|
2007 | 10.1109/CSMR.2007.23 | CSMR |
Keywords | Field | DocType |
Java,grammars,reverse engineering,software maintenance,Java language,Ruby language,example-driven software model reconstruction,grammar,legacy programming language,parsing,reverse engineering | Programming language,Software engineering,Source code,Compiler-compiler,Computer science,Language construct,Software system,Software,Legacy code,Software maintenance,Parsing | Conference |
ISBN | Citations | PageRank |
0-7695-2802-3 | 7 | 0.43 |
References | Authors | |
21 | 5 |
Name | Order | Citations | PageRank |
---|---|---|---|
Oscar Nierstrasz | 1 | 2404 | 346.86 |
Markus Kobel | 2 | 7 | 0.43 |
Tudor Girba | 3 | 729 | 40.01 |
Michele Lanza | 4 | 2197 | 124.38 |
Horst Bunke | 5 | 8650 | 558.39 |