2004 · 73 citations · 18 references
ComputingComputer ScienceAlgorithmsProgramming LanguagesSemanticsAbstract Syntax TreesData-flow AnalysisInformation ExtractionKnowledge ExtractionSyntactic AnalysisSyntax AnalysisAutomated Bug FindingAutomated Data ExtractionExtraction Of Executable CodeInterprocedural Analysis
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 noncontiguous and/or include non-local jumps (caused by go-tos, 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.
18
Refactoring improving the design of existing code
Mauricio A. Saca · 2017 · 2.1K citations
Dependence graphs and compiler optimizations
David J. Kuck, Robert H. Kuhn, David Padua et al. · 1981 · 652 citations · Full text
Compiler techniques for code compaction
Saumya Debray, William Evans, Robert Muth et al. · ACM Transactions on Programming Languages and Systems · 2000 · 275 citations · Full text
Delocalized Plans and Program Comprehension
Stanley Letovsky, Elliot Soloway · IEEE Software · 1986 · 246 citations