A Toolset for Checking SPL Refinements

Developers evolve software product lines (SPLs) manually or using typical program refactoring tools. However, when evolving an SPL to introduce new features or to improve its design, it is important to make sure that the behavior of existing prod- ucts is not affected. Typical program refactorings cannot guarantee that because the SPL context goes beyond code and other kinds of core assets, and involves additional artifacts such as feature models and configuration knowledge. Besides that, we typi- cally have to deal with a set of alternative assets that do not constitute a well-formed program in an SPL. As a result, manual changes and existing program refactoring tools may introduce behavioral changes or invalidate existing product configurations. To re- duce such risks, we propose approaches and implement four tools for making product line evolution safer. These tools check if SPL transformations preserve the behavior of the original SPL products. They implement different and practical approximations of refinement notions from a theory for safely evolving SPLs. Besides specifying the algorithms of each approach, we compare them with respect to soundness, performance and code coverage in 35 evolution scenarios of an SPL with 32 KLOC.

[1]  Thomas Thüm,et al.  Reasoning about edits to feature models , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[2]  Paulo Borba,et al.  A theory of software product line refinement , 2012, Theor. Comput. Sci..

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

[4]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[5]  F. Ferreira,et al.  TaRGeT : a Model Based Product Line Testing Tool , 2010 .

[6]  Don Batory Feature-oriented programming and the AHEAD tool suite , 2004, ICSE 2004.

[7]  Paulo Borba,et al.  A theory of software product line refinement , 2010, Theor. Comput. Sci..

[8]  A. Hoek,et al.  Refactoring Product Line Architectures , 2003 .

[9]  Krzysztof Czarnecki,et al.  Formalizing cardinality-based feature models and their specialization , 2005, Softw. Process. Improv. Pract..

[10]  William R. Cook,et al.  Safe composition of product lines , 2007, GPCE '07.

[11]  Paulo Borba,et al.  Hephaestus A Tool for Managing SPL , 2010 .

[12]  Barbara G. Ryder,et al.  Tool Support for Change-Centric Test Development , 2010, IEEE Software.

[13]  Paulo Borba,et al.  Automatically Checking Feature Model Refactorings , 2011, J. Univers. Comput. Sci..

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

[15]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[16]  Paulo Borba,et al.  Safe Composition of Configuration Knowledge-Based Software Product Lines , 2011, 2011 25th Brazilian Symposium on Software Engineering.

[17]  Rohit Gheyi,et al.  A Theory for Feature Models in Alloy , 2006 .

[18]  Gustavo Soares Soares Automated behavioral testing of refactoring engines , 2012, SPLASH '12.

[19]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007 .

[20]  Oscar Díaz,et al.  Feature refactoring a multi-representation program into a product line , 2006, GPCE '06.

[21]  Rohit Gheyi,et al.  Making Program Refactoring Safer , 2010, IEEE Software.

[22]  Paulo Borba,et al.  An Introduction to Software Product Line Refactoring , 2009, GTTSE.

[23]  Krzysztof Czarnecki,et al.  Staged Configuration Using Feature Models , 2004, SPLC.

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

[25]  Kerstin Mueller,et al.  Software Product Line Engineering Foundations Principles And Techniques , 2016 .

[26]  Paulo Borba,et al.  Making Software Product Line Evolution Safer , 2012, 2012 Sixth Brazilian Symposium on Software Components, Architectures and Reuse.

[27]  Sérgio Soares,et al.  Supporting software product lines development: FLiP - product line derivation tool , 2008, OOPSLA Companion.

[28]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[29]  Michael D. Ernst,et al.  Feedback-Directed Random Test Generation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[30]  Uirá Kulesza,et al.  Investigating the safe evolution of software product lines , 2011, GPCE '11.

[31]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[32]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007, 11th International Software Product Line Conference (SPLC 2007).

[33]  Carlos José Pereira de Lucena,et al.  Refactoring product lines , 2006, GPCE '06.

[34]  Frank Tip,et al.  Chianti: a tool for change impact analysis of java programs , 2004, OOPSLA.

[35]  Rohit Gheyi,et al.  Automated Behavioral Testing of Refactoring Engines , 2013, IEEE Trans. Software Eng..

[36]  Dirk Muthig,et al.  A case study in refactoring a legacy component for reuse in a product line , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[37]  Paulo Borba,et al.  Making refactoring safer through impact analysis , 2014, Sci. Comput. Program..

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

[39]  Sarfraz Khurshid,et al.  Reducing combinatorics in testing product lines , 2011, AOSD '11.

[40]  Don S. Batory,et al.  Feature-oriented programming and the AHEAD tool suite , 2004, Proceedings. 26th International Conference on Software Engineering.