Automatic extraction of product line architecture and feature models from UML class diagram variants

Abstract Context Software Product Lines (SPLs) are families of related products developed for specific domains. SPLs commonly emerge from existing variants when their individual maintenance and/or evolution become complex. Even though there exists a vast research literature on SPL extraction, the majority of the approaches have only focused on source code, are partially automated, or do not reflect domain constraints. Such limitations can make more difficult the extraction, management, documentation and generation of some important SPL artifacts such as the product line architecture, a fact that can impact negatively the evolution and maintenance of SPLs. Objective To tackle these limitations, this work presents ModelVars2SPL (Model Variants to SPL Core Assets), an automated approach to aid the development of SPLs from existing system variants. Method The input for ModelVars2SPL is a set of Unified Modeling Language (UML) class diagrams and the list of features they implement. The approach extracts two main assets: (i) Feature Model (FM), which represents the combinations of features, and (ii) a Product Line Architecture (PLA), which represents a global structure of the variants. ModelVars2SPL is composed of four automated steps. We conducted a thorough evaluation of ModelVars2SPL to analyze the artefacts it generates and its performance. Results The results show that the FMs well-represent the features organization, providing useful information to define and manage commonalities and variabilities. The PLAs show a global structure of current variants, facilitating the understanding of existing implementations of all variants. Conclusions An advantage of ModelVars2SPL is to exploit the use of UML design models, that is, it is independent of the programming language, and supports the re-engineering process in the design level, allowing practitioners to have a broader view of the SPL.

[1]  Marsha Chechik,et al.  N-way model merging , 2013, ESEC/FSE 2013.

[2]  Sergio Segura,et al.  FAMA: Tooling a Framework for the Automated Analysis of Feature Models , 2007, VaMoS.

[3]  Sandro Schulze,et al.  Variability mining of state charts , 2016, FOSD@SPLASH.

[4]  Kalyanmoy Deb,et al.  A fast and elitist multiobjective genetic algorithm: NSGA-II , 2002, IEEE Trans. Evol. Comput..

[5]  Cláudio Sant'Anna,et al.  Evolving software product lines with aspects , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[6]  Sergio Segura,et al.  BeTTy: benchmarking and testing on the automated analysis of feature models , 2012, VaMoS.

[7]  Henry Muccini,et al.  What Industry Needs from Architectural Languages: A Survey , 2013, IEEE Transactions on Software Engineering.

[8]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[9]  Frank Budinsky,et al.  Eclipse Modeling Framework , 2003 .

[10]  Alexander Egyed,et al.  Recovering traceability between features and code in product variants , 2013, SPLC '13.

[11]  Gordon Fraser,et al.  On Parameter Tuning in Search Based Software Engineering , 2011, SSBSE.

[12]  Eko K. Budiardjo,et al.  Reverse Engineering in Software Product Line - A Systematic Literature Review , 2018, CSAI '18.

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

[14]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[15]  Hironori Washizaki,et al.  Supporting commonality and variability analysis of requirements and structural models , 2012, SPLC '12.

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

[17]  Krzysztof Czarnecki,et al.  Reverse engineering feature models , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

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

[19]  Henry Muccini,et al.  The Road Ahead for Architectural Languages , 2015, IEEE Software.

[20]  Iris Reinhartz-Berger,et al.  Extracting core requirements for software product lines , 2019, Requirements Engineering.

[21]  Nadia Bouassida,et al.  Implementation and evaluation of an approach for extracting feature models from documented UML use case diagrams , 2015, SAC.

[22]  Alexander Egyed,et al.  Enhancing Clone-and-Own with Systematic Reuse for Developing Software Variants , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[23]  Alexander Egyed,et al.  Multi-objective reverse engineering of variability-safe feature models based on code dependencies of system variants , 2017, Empirical Software Engineering.

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

[25]  Miguel A. Laguna,et al.  A systematic mapping study on software product line evolution: From legacy system reengineering to product line refactoring , 2013, Sci. Comput. Program..

[26]  Krzysztof Czarnecki,et al.  A Study of Variability Models and Languages in the Systems Software Domain , 2013, IEEE Transactions on Software Engineering.

[27]  Tewfik Ziadi,et al.  ESPLA: A Catalog of Extractive SPL Adoption Case Studies , 2017, SPLC.

[28]  Yuanyuan Zhang,et al.  Search-based software engineering: Trends, techniques and applications , 2012, CSUR.

[29]  Roberto Erick Lopez-Herrejon,et al.  Discovering Software Architectures with Search-Based Merge of UML Model Variants , 2017, ICSR.

[30]  Robert J. Walker,et al.  Systematizing pragmatic software reuse , 2012, TSEM.

[31]  Jacques Klein,et al.  Identifying and Visualising Commonality and Variability in Model Variants , 2014, ECMFA.

[32]  Tewfik Ziadi,et al.  Feature Identification from the Source Code of Product Variants , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[33]  Vasudeva Varma,et al.  Perils of opportunistically reusing software module , 2017, Softw. Pract. Exp..

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

[35]  Alexander Egyed,et al.  Reengineering legacy applications into software product lines: a systematic mapping , 2017, Empirical Software Engineering.

[36]  Gerardo Canfora,et al.  Achievements and challenges in software reverse engineering , 2011, Commun. ACM.

[37]  Jacques Klein,et al.  Automating the Extraction of Model-Based Software Product Lines from Model Variants (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[38]  Klaus Schmid,et al.  Software product lines in action - the best industrial practice in product line engineering , 2007 .

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

[40]  Alexander Egyed,et al.  The ECCO Tool: Extraction and Composition for Clone-and-Own , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.