In many cases, software is developed in a copy and paste manner: The code of the past software project being most similar to the new project is copied, adapted and extended until it fits the new requirements (also called cloning-at-the-large or clone-and-run). Such an approach is still prevalent these days especially in many companies from mechanical engineering for the development of their control software. In such a way, they conduct reuse and, in principle, develop software product lines but in an unconscious and very unorganized way.
In research, approaches exist that try to support the reverse engineering of software product lines from concrete software products, which have been created in a clone-and-run fashion as described above. Such approaches use techniques for the automatic detection of code clones in order to detect variants and their commonalities and variabilities.
The goal of this seminar is to understand and explain how clone detection approaches can be used to detect reoccurring, potentially reuseable building blocks of software and ultimately of software product lines. The two references are meant as a starting point into this topic. The student is expected to summarize and explain the referenced approaches and to also search for further, more recent publications in the field.
- R. Koschke, P. Frenzel, A. Breu, K. Angstmann. Extending the reflexion method for consolidating software variants into product lines. Software Quality Journal December 2009; 17(4):331–366.
- T. Mende, F. Beckwermert, R. Koschke, G. Meier. Supporting the Grow-and-Prune Model in Software Product Lines Evolution Using Clone Detection. European Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, 2008; 163–172.