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

  • Authors:
  • Thomas Patzke;Martin Becker;Michaela Steffens;Krzysztof Sierszecki;Juha Erik Savolainen;Thomas Fogdal

  • Affiliations:
  • Fraunhofer Institute Experimental Software Engineering (IESE), Kaiserslautern, Germany;Fraunhofer Institute Experimental Software Engineering (IESE), Kaiserslautern, Germany;Global Research & Development, Ulsnaes, Graasten, Denmark;Global Research & Development, Ulsnaes, Graasten, Denmark;Global Research & Development, Ulsnaes, Graasten, Denmark;Global Research & Development, Ulsnaes, Graasten, Denmark

  • Venue:
  • Proceedings of the 16th International Software Product Line Conference - Volume 1
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.