Software clones are similar program fragments. Clone detection is useful in re-engineering legacy code for reuse (e.g., in cloud service identification and extraction), quality assessment, software maintenance, among many other situations. We introduced the concept of structural clones - a higher level and larger than program fragments similar program formations. Examples are similar classes, files, directories of recurring configurations of collaborating classes (e.g., some of the design patterns).
Reuse is based on the premise that much similarity exists in software systems. This is particularly true for systems in a given application domain. Software Product Line (SPL) approach is based on reuse of core assets – architecture, code components, documentation and other software artifacts – during software development and evolution. Reuse attempts to identify and automate routine, repetitive development tasks. While the progress towards practical solutions is slow, reuse remains the most promising approach in the horizon to improving software quality and productivity.