Software reuse takes many forms. One of the key distinctions between these different forms— if not the key distinction— is whether the reuse is in the form of copy&pasted code, or in the form of abstractions: parameters, frameworks, configuration schemes, inheritance etc. In this project, we explore how and why developers re-use code, and look for tools that can help them re-use more effectively.
Past research has linked code clones to reduced software quality. However, the act of copying and pasting code needn't result in permanent clones. One insight (first attributed to Ira D. Baxter) that we have explored in our work is that with a good merge tool, clones can be merged immediately after they have been created.
The resultant copy-paste-edit-merge cycle allows developers to exploit the speed of copy-paste programming without having to compromise long-term code quality. We have demonstrated this technique with an Eclipse plugin for C++ programming.
We are working on a new Eclipse plugin for copy-paste merging in Java that we will release as Open Source software. Until our tool is ready, Tsantalis et al.'s JDeodorant is the principal tool available for copy-paste-edit-merge programming.
The following persons are working on or have contributed to this project: