Identifying improvement potential in evolving product line infrastructures: 3 case studies

Successful software products evolve continuously to meet the changing stakeholder requirements. For software product lines, an additional challenge is that variabilities, characteristics that vary among products, change as well over time. That challenge must be carefully tackled during the evolution of the product line infrastructure. This is a significant problem for many software development organizations, as practical guidelines on how to evolve core assets, and especially source code, are missing. This paper investigates how to achieve "good enough" variability management during the evolution of variation in software design and implementation assets. As a first contribution, we present a customizable goal-based approach which helps to identify improvement potential in existing core assets to ease evolution. To find concrete ways to improve the product line infrastructure, we list the typical symptoms of variability "code smells" and show how to refine them to root causes, questions, and finally to metrics that can be extracted from large code bases. As a second main contribution, we show how this method was applied to evaluate the reuse quality of three industrial embedded systems. These systems are implemented in C or C++ and use Conditional Compilation as the main variability mechanism. We also introduce the analysis and refactoring tool set that was used in the case studies and discuss the lessons learnt.

[1]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

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

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

[4]  Jean J. Labrosse,et al.  MicroC/OS-II: The Real Time Kernel , 1998 .

[5]  Frank van der Linden,et al.  Software product lines in action , 2007 .

[6]  Klaus Pohl,et al.  Communicating the variability of a software-product family to customers , 2003, Software and Systems Modeling.

[7]  Danilo Beuche,et al.  Running a software product line: standing still is going backwards , 2009, SPLC.

[8]  Danilo Beuche,et al.  Minimally Invasive Migration to Software Product Lines , 2007, 11th International Software Product Line Conference (SPLC 2007).

[9]  Colin Atkinson,et al.  Model-Driven Product Line Architectures , 2002, SPLC.

[10]  Charles Krueger New Methods behind a New Generation of Software Product Line Successes , 2009 .

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

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

[13]  K. Deelstra,et al.  Managing the complexity of variability in software product families , 2008 .

[14]  Dirk Muthig,et al.  A light-weight approach facilitating an evolutionary transition towards software product lines , 2002 .

[15]  Wolfgang Schröder-Preikschat,et al.  Variability in Time - Product Line Variability and Evolution Revisited , 2010, VaMoS.

[16]  Samuel A. Ajila,et al.  Experimental use of code delta, code churn, and rate of change to understand software product line evolution , 2007, J. Syst. Softw..

[17]  John D. McGregor,et al.  The Evolution of Product Line Assets , 2003 .

[18]  Juha Savolainen,et al.  From product line requirements to product line architecture: optimizing industrial product lines for new competitive advantage , 2009, SPLC.

[19]  Juha Kuusela,et al.  Violatility analysis framework for product lines , 2001, SSR '01.

[20]  Klaus Schmid,et al.  Planning software reuse: a disciplined scoping approach for software product lines , 2003 .

[21]  Barbara Paech,et al.  Component-based product line engineering with UML , 2001, Addison Wesley object technology series.

[22]  Dewayne E. Perry,et al.  Software Evolution and Feedback: Theory and Practice , 2006 .

[23]  Klaus Schmid,et al.  PuLSE: a methodology to develop software product lines , 1999, SSR '99.

[24]  Sooyong Park,et al.  Applied Software Product Line Engineering , 2009 .

[25]  Jan Bosch,et al.  Variability Issues in Software Product Lines , 2001, PFE.

[26]  J. Whitney Case Study Research , 1999 .

[27]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

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

[29]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

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

[31]  Serge Demeyer,et al.  Software Evolution , 2010 .

[32]  Charles W. Krueger,et al.  The 3-Tiered Methodology: Pragmatic Insights from New Generation Software Product Lines , 2007, 11th International Software Product Line Conference (SPLC 2007).

[33]  Jan Bosch,et al.  The Evolution in Software Product Lines , 1999 .

[34]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[35]  Kathrin Berg,et al.  Tracing software product line variability: from problem to solution space , 2005 .

[36]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[37]  Rini van Solingen,et al.  Goal Question Metric (GQM) Approach , 2002 .

[38]  Jan Bosch,et al.  Evolution in software product lines: Two cases , 1999 .

[39]  Thomas Patzke Sustainable evolution of product line infrastructure code , 2011 .

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

[41]  Jan Bosch,et al.  Default values for improved product line management , 2009, SPLC.

[42]  Isabel John Pattern-based documentation analysis for software product lines , 2010 .