A scalable goal-oriented approach to software variability recovery

Software reuse approaches, such as software product lines, can help to achieve considerable effort and cost savings in product development for sets of software systems with a significant overlap in functionality. However, in the practice many organizations at first develop a number of similar software products without explicitly planning for strategic reuse. In consequence, subsequent attempts to introduce reuse require a significant restructuring of the existing products. The restructuring is difficult because the precise information about the distribution of commonality and variability in the source code of the variants is often not available. The ongoing PhD thesis presented in this paper contributes to easing the task of extractive software reuse adoption: it proposes a reverse engineering approach for extracting the variability information from the source code of similar software products and outlines a method that guides the organization towards optimal use of this information in the process of planning and introducing software reuse.

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

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

[3]  Abdelwahab Hamou-Lhadj,et al.  PCODA 2006. 2nd International Workshop on Program Comprehension through Dynamic Analysis co-located with the 13th Working Conference on Reverse Engineering (WCRE 06), 23rd October 2006, Benevento, Italy , 2006 .

[4]  M M Lehman,et al.  Software Evolution , 2002 .

[5]  Stan Jarzabek,et al.  Query-based filtering and graphical view generation for clone analysis , 2008, 2008 IEEE International Conference on Software Maintenance.

[6]  Jens Knodel,et al.  Asset recovery and their incorporation into product lines , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[7]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[8]  David Garlan,et al.  Architectural Mismatch: Why Reuse Is So Hard , 1995, IEEE Softw..

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

[10]  Rainer Koschke,et al.  An evaluation of code similarity identification for the grow-and-prune model , 2009, CSMR 2009.

[11]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2000, The Kluwer International Series in Software Engineering.

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

[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.

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

[15]  Jens Knodel,et al.  Analyzing the Source Code of Multiple Software Variants for Reuse Potential , 2011, 2011 18th Working Conference on Reverse Engineering.

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

[17]  Dirk Muthig,et al.  Assessing merge potential of existing engine control systems into a product line , 2006, SEAS '06.

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

[19]  Jens Knodel,et al.  Introducing Architecture-Centric Reuse into a Small Development Organization , 2008, ICSR.

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

[21]  H. D. Rombach,et al.  The Goal Question Metric Approach , 1994 .

[22]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[23]  Jens Knodel,et al.  Experiences with product line development of embedded systems at Testo AG , 2006, 10th International Software Product Line Conference (SPLC'06).

[24]  J. Girard,et al.  Definition of Reference Architectures based on Existing Systems WP 2 . 2 , Platforms and Components , 2004 .

[25]  T. A. Wiggerts,et al.  Using clustering algorithms in legacy systems remodularization , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

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

[27]  Klaus Schmid A comprehensive product line scoping approach and its validation , 2002, ICSE '02.

[28]  Jens Knodel,et al.  SAVE: Software Architecture Visualization and Evaluation , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.