In object-oriented systems, re-use isn't always performed through inheritance or use of configurable components. Programmers often proceed with a manual copy-paste-modify to satisfy their need for reuse. Such an activity produces very similar code fragments called clones.; The presence of clones in a system isn't necessarily desirable as the synchronization of their maintenance is difficult. Clones also represent implicit links between classes sharing a functionality.; This thesis presents the results of a project on object-oriented system redesign based on clone analysis. The main goal of the research was to study the use of clones for reengineering actions that could improve system maintainability.; The main contributions of this research are the development of a new clone classification scheme useful to assess reengineering opportunities, the development of a new matching algorithm that allows to extract semantic differences between clones and the development and study of several redesign approaches based on clones. |