The impact of variability mechanisms on sustainable product line code evolution
Many software development organizations today aim at reducing their development effort, while improving the quality and diversity of their products by building more reusable software, for example using the product line approach. A product line infrastructure is set up for deriving the similar products, but this infrastructure degenerates over time, making reuse increasingly hard. As a countermeasure, we developed a practical method for guiding product line developers in evolving product line code so that its decay caused by reuse is avoided. This paper gives an overview of some of our findings. Because product line code differs from single systems code only in its genericity, expressed by variability mechanisms, we analyzed to what degree the selection of certain mechanisms affect the code's reuse complexity. Using the Goal-Question- Metric (GQM) approach, we developed a quality model that lead to an extensible product line complexity metrics suite. A case study compared the evolution qualities of different product line implementations, with the following results: Cloning, the simplest mechanism, leads to similar short-term complexities than more advanced ones, making its interim usage appropriate. In the longer term, any other mechanism has a clearly lower complexity trend, especially if it is selected according to the variability management task at hand. A mix of Conditional Compilation and Frame Technology provides the best long-term evolution potential.
Full Text: PDF