Example-Driven Reconstruction of Software Models

  • Authors:
  • Oscar Nierstrasz;Markus Kobel;Tudor Girba;Michele Lanza;Horst Bunke

  • Affiliations:
  • University of Bern;University of Bern;University of Bern;University of Lugano;University of Bern

  • Venue:
  • CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

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.