Effective, Automatic Procedure Extraction
R. Komondoor and S. Horwitz
Legacy code can often be made more understandable and maintainable by
extracting out selected sets of statements to form procedures and
replacing the extracted code with procedure calls. Sets of statements
that are non-contiguous and/or include non-local jumps (caused by
gotos, breaks, continues, etc.) can be difficult to extract, and
usually cause previous automatic-extraction algorithms to fail or to
produce poor results.
The chief contributions of this paper are a semantics-preserving
algorithm for extracting ``difficult'' sets of statements, and a study
that compares the algorithm both to an ideal extractor (a human) and
to previously reported automatic approaches. We found that
``difficult'' examples do arise frequently in practice, and that our
algorithm is a significant improvement over previous work, achieving
ideal results on over 70% of the difficult cases.
(Click here to access the paper:
PostScript.)