From Products to Product Lines Using Model Matching and Refactoring

In this paper, we suggest a method for refactoring UML structural and behavioral models of closely related individual products into product lines. We propose to analyze duplications in the models of individual products using a heterogeneous match algorithm which takes into account structural and behavioral information to identify identical and similar model elements. Identical elements (exact matches) are refactored to common parts of the product line, similar elements are refactored to variable alternative parts, and unmatched elements are refactored to variable optional parts. We further propose to adjust the quality of the match by analyzing quality of the resulting refactoring. We evaluate UML comprehensibility before and after the change using prediction models that are based on static metrics, and use the results to set the optimal thresholds for identity and similarity between model elements. We illustrate our proposed approach on an example.

[1]  D. Kleinbaum,et al.  Applied regression analysis and other multivariable methods, 3rd ed. , 1998 .

[2]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE.

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

[4]  Jaejoon Lee,et al.  Feature-Oriented Re-engineering of Legacy Systems into Product Line Assets - a Case Study , 2005, SPLC.

[5]  Mario Piattini,et al.  Building measure-based prediction models for UML class diagram maintainability , 2007, Empirical Software Engineering.

[6]  Jeff Magee,et al.  The Koala Component Model for Consumer Electronics Software , 2000, Computer.

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

[8]  Mario Piattini,et al.  Empirical validation of measures for class diagram structural complexity through controlled experiments , 2001 .

[9]  John C. Grundy,et al.  A generic approach to supporting diagram differencing and merging for collaborative design , 2005, ASE '05.

[10]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[11]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

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

[13]  Mario Piattini,et al.  Assessing Object-Oriented Conceptual Models Maintainability , 2002, ER.

[14]  J. L. Myers,et al.  Regression analyses of repeated measures data in cognitive research. , 1990, Journal of experimental psychology. Learning, memory, and cognition.

[15]  Martin Girschick,et al.  Difference Detection and Visualization in UML Class Diagrams , 2006 .

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

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

[18]  Kangtae Kim,et al.  Building Software Product Line from the Legacy Systems "Experience in the Digital Audio and Video Domain" , 2007, 11th International Software Product Line Conference (SPLC 2007).

[19]  Mohammad Abdollahi Azgomi,et al.  UML Model Refactoring with Emphasis on Behavior Preservation , 2008, 2008 2nd IFIP/IEEE International Symposium on Theoretical Aspects of Software Engineering.

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

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

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

[23]  Iris Groher,et al.  Product Line Implementation using Aspect-Oriented and Model-Driven Software Development , 2007 .

[24]  Jean-Francois Girard,et al.  Transitioning legacy assets to a product line architecture , 1999, ESEC/FSE-7.

[25]  Hoan Anh Nguyen,et al.  Complete and accurate clone detection in graph-based models , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[26]  Mario Piattini,et al.  The impact of structural complexity on the understandability of UML statechart diagrams , 2010, Inf. Sci..

[27]  Jagun Kwon,et al.  A Component Model supporting Decomposition and Composition of Consumer Electronics Software Product Lines , 2007 .

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

[29]  Bernhard Schätz,et al.  Clone detection in automotive model-based development , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[30]  Jean-Marc Jézéquel,et al.  Refactoring UML Models , 2001, UML.

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

[32]  Seokjin Hong,et al.  A Component Model supporting Decomposition and Composition of Consumer Electronics Software Product Lines , 2007, 11th International Software Product Line Conference (SPLC 2007).

[33]  Zhiyi Ma,et al.  Detecting Duplications in Sequence Diagrams Based on Suffix Trees , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

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

[35]  Neil Walkinshaw,et al.  Computing the Structural Difference between State-Based Models , 2009, 2009 16th Working Conference on Reverse Engineering.

[36]  Udo Kelter,et al.  Comparing state machines , 2008, CVSM '08.

[37]  Margo McCall,et al.  IEEE Computer Society , 2019, Encyclopedia of Software Engineering.

[38]  D. Kleinbaum,et al.  Applied Regression Analysis and Other Multivariate Methods , 1978 .

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

[40]  Thorsten Sturm,et al.  Refactoring Browser for UML , 2002, NetObjectDays.