Quality of Merge-Refactorings for Product Lines

In this paper, we consider the problem of refactoring related software products specified in UML into annotative product line representations. Our approach relies on identifying commonalities and variabilities in existing products and further merging those into product line representations which reduce duplications and facilitate reuse. Varying merge strategies can lead to producing several semantically correct, yet syntactically different refactoring results. Depending on the goal of the refactoring, one result can be preferred to another. We thus propose to capture the goal using a syntactic quality function and use that function to guide the merge strategy. We define and implement a quality-based merge-refactoring framework for UML models containing class and statechart diagrams and report on our experience applying it on three case-studies.

[1]  Jochen Ludewig,et al.  Models in software engineering – an introduction , 2003, Software and Systems Modeling.

[2]  Dirk Muthig,et al.  Refactoring a legacy component for reuse in a software product line: a case study: Practice Articles , 2006 .

[3]  Udo Kelter,et al.  A Generic Difference Algorithm for UML Models , 2005, Software Engineering.

[4]  Mario Piattini,et al.  Empirical Validation of Measures for UML Class Diagrams: A Meta-Analysis Study , 2009, MoDELS.

[5]  James F. Power,et al.  On the application of software metrics to UML models , 2006, MoDELS'06.

[6]  Marsha Chechik,et al.  From Products to Product Lines Using Model Matching and Refactoring , 2010, SPLC Workshops.

[7]  Dirk Muthig,et al.  Refactoring a legacy component for reuse in a software product line: a case study , 2006, J. Softw. Maintenance Res. Pract..

[8]  Alain Abran,et al.  Software Process and Product Measurement, International Conference, IWSM-Mensura 2007, Palma de Mallorca, Spain, November 5-8, 2007. Revised Papers , 2008, IWSM/Mensura.

[9]  Nenad Medvidovic,et al.  Using service utilization metrics to assess the structure of product line architectures , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).

[10]  Klaus Kabitzsch,et al.  Automatic variation-point identification in function-block-based models , 2010, GPCE '10.

[11]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[12]  Sven Apel,et al.  Integrating Compositional and Annotative Approaches for Product Line Engineering , 2008 .

[13]  Danilo Beuche Transforming Legacy Systems into Software Product Lines , 2006, 10th International Software Product Line Conference (SPLC'06).

[14]  Kentaro Yoshimura,et al.  FAVE: factor analysis based approach for detecting product line variability from change history , 2008, MSR '08.

[15]  Hassan Gomaa Designing Software Product Lines with UML 2.0: From Use Cases to Pattern-Based Software Architectures , 2006, ICSR.

[16]  Sven Apel,et al.  An analysis of the variability in forty preprocessor-based software product lines , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[17]  Panos M. Pardalos,et al.  Handbook of applied optimization , 2002 .

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

[19]  Rainer Koschke,et al.  Extending the reflexion method for consolidating software variants into product lines , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[20]  Mehrdad Sabetzadeh,et al.  Matching and Merging of Statecharts Specifications , 2007, 29th International Conference on Software Engineering (ICSE'07).

[21]  Marsha Chechik,et al.  Combining Related Products into Product Lines , 2012, FASE.

[22]  Mikael Lindvall in Software Engineering , 2002 .

[23]  KoschkeRainer,et al.  Extending the reflexion method for consolidating software variants into product lines , 2009 .

[24]  Eleni Stroulia,et al.  UMLDiff: an algorithm for object-oriented design differencing , 2005, ASE.

[25]  Juha Savolainen,et al.  Feature Interaction and Dependencies: Modeling Features for Reengineering a Legacy Product Line , 2002, SPLC.

[26]  Jaejoon Lee,et al.  Software Product Lines: Going Beyond - 14th International Conference, SPLC 2010, Jeju Island, South Korea, September 13-17, 2010. Proceedings , 2010, SPLC.

[27]  Sven Apel,et al.  Feature cohesion in software product lines: an exploratory study , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

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

[29]  Mario Piattini,et al.  Using Controlled Experiments for Validating UML Statechart Diagrams Measures , 2007, IWSM/Mensura.

[30]  Itana Maria de Souza Gimenes,et al.  Empirical Validation of Complexity and Extensibility Metrics for Software Product Line Architectures , 2010, 2010 Fourth Brazilian Symposium on Software Components, Architectures and Reuse.

[31]  Mehrdad Sabetzadeh,et al.  View merging in the presence of incompleteness and inconsistency , 2006, Requirements Engineering.

[32]  Danilo Beuche Transforming Legacy Systems into Software Product Lines , 2006, SPLC.

[33]  Andreas Classen,et al.  Tag and prune: a pragmatic approach to software product line implementation , 2010, ASE.

[34]  Soo Dong Kim,et al.  A framework for evaluating reusability of core asset in product line engineering , 2007, Inf. Softw. Technol..

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

[36]  Adam Trendowicz,et al.  Quality Modeling for Software Product Lines , 2003 .