Re-engineering of legacy code for reuse

A central problem here is to identify similar program structures in legacy code we wish to re–engineer into reusable representation (such as Software Product Line, SPL). Similarities point into the directions where reuse opportunities are. Research on software similarity analysis so far has been mainly focused on detection of similar code fragments, so-called simple clones. In our work, we raise analysis of software similarities to large-granularity recurring program structures, such as patterns of collaborating components. We call them structural clones. We develop techniques for structural clone detection. Clone detectors report many clones. To ease post-detection clone analysis, we complement clone detection with program differencing for the purpose of characterizing semantic differences among clones. For that we apply graph matching techniques to clone representation as Program Dependency Graphs. We also build tools that visualise clones and provide query-based means to help developers further analyse and understand clones. We integrate clone analysis with re-modularization techniques to formulate effective strategies for building stable, software architectures for reuse. We exploit the benefits of structural clone detection for software maintenance, reuse and re-engineering. We study formal properties of variety types of structural clones.

Links: