Sustainable evolution of product line infrastructure code
A major goal in many software development organizations today is to reduce development effort and cost, while improving their products' quality and diversity by developing reusable software. An organization takes advantage of its products' similarities, exploits what they have in common and manages what varies among them by building a product line infrastructure. A product line infrastructure is a reuse repository that contains exactly those common and variable artifacts, such as requirements documents, architecture, or source code, which are needed to produce all required products. The life of successful software does not end after initial development. Every real-world software system must continually evolve in order to remain useful for its end-users. Likewise, every real-world product line must continually evolve in order to remain satisfactory for its reusers. However, a problem we have often seen in various product line engineering projects in practice is that the product line infrastructure, and especially its code, the product line infrastructure code, becomes increasingly difficult to evolve and reuse over time because it degenerates. Code decay has two causes lack of change and inappropriate change. The focus of this thesis is to prevent inappropriate change. The main contribution of this thesis is the development of a readily applicable, reactive product line evolution method for family engineers in practice. The method's goal is to guide family engineers to keep product line infrastructure code sustainable by reducing unnecessary complexities in variability management. Benefits of the method are controlled complexity reduction of existing product line infrastructure code, whole life cycle cost and effort reduction, protection of investment, short-term increase of variability management productivity, and customizability to specific organizational contexts.
Zugl.: Kaiserslautern, Univ., Diss., 2011