Analyzing the Source Code of Multiple Software Variants for Reuse Potential

Software reuse approaches, such as software product lines, can help to achieve considerable effort and cost savings when developing families of software systems with a significant overlap in functionality. In practice, however, the need for strategic reuse often becomes apparent only after a number of product variants have already been delivered. Hence, a reuse approach has to be introduced afterwards. To plan for such a reuse introduction, it is crucial to have precise information about the distribution of commonality and variability in the source code of each system variant. However, this information is often not available because each variant has evolved independently over time and the source code does not exhibit explicit variation points. In this paper, we present Variant Analysis, a scalable reverse engineering technique that aims at delivering exactly this information. It supports simultaneous analysis of multiple source code variants and enables easy interpretation of the analysis results. We demonstrate the technique by applying it to a large industrial software system with four variants.

[1]  Claudio Riva,et al.  Experiences with software product family evolution , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[2]  Chanchal Kumar Roy,et al.  Comparison and evaluation of code clone detection techniques and tools: A qualitative approach , 2009, Sci. Comput. Program..

[3]  Jens Knodel,et al.  Variant Comparison - A Technique for Visualizing Software Variants , 2008, 2008 15th Working Conference on Reverse Engineering.

[4]  Katsuro Inoue,et al.  Measuring Similarity of Large Software Systems Based on Source Code Correspondence , 2005, PROFES.

[5]  Slawomir Duszynski,et al.  Visualizing and Analyzing Software Variability with Bar Diagrams and Occurrence Matrices , 2010, SPLC.

[6]  Wayne C. Lim Managing Software Reuse , 2004 .

[7]  Chris Verhoef,et al.  Software product line migration and deployment , 2003, Softw. Pract. Exp..

[8]  Dirk Muthig,et al.  Defining a strategy to introduce a software product line using existing embedded systems , 2006, EMSOFT '06.

[9]  Harald C. Gall,et al.  Architecture Recovery for Product Families , 2003, PFE.

[10]  Rainer Koschke,et al.  An evaluation of code similarity identification for the grow-and-prune model , 2009, J. Softw. Maintenance Res. Pract..

[11]  Stan Jarzabek,et al.  A Data Mining Approach for Detecting Higher-Level Clones in Software , 2009, IEEE Transactions on Software Engineering.

[12]  Charles W. Krueger,et al.  Easing the Transition to Software Mass Customization , 2001, PFE.

[13]  Rainer Koschke,et al.  Feature-driven program understanding using concept analysis of execution traces , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.