Change-Enabled Software Systems
Software-Intensive Systems and New Computing Paradigms
Recovering grammar relationships for the Java Language Specification
Software Quality Control
Recovering object-oriented framework for software product line reengineering
ICSR'11 Proceedings of the 12th international conference on Top productivity through software reuse
Agile software assessment with Moose
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.00 |
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.