A major goal in many software development organizations today is to reduce effort and cost, while improving product quality and diversity by developing reusable software. A product line infrastructure, a reuse repository of common and variable artifacts, such as requirements documents, architecture, or source code, is developed by systematically exploiting the products' similarities. However, the life of successful software does not end after initial development; product line infrastructures must continually evolve in order to retain reuser satisfaction. The aim of the current work is to counteract the degeneration of product line infrastructure code. To this end, a product line evolution method for family engineers in practice is developed, which consists of analytical, synthetical and quality assurance activities. Benefits of the method are controlled complexity reduction of existing code, whole life cycle cost and effort reduction, protection of investment, immediate increase of variability management productivity, and customizability.
An in-vitro case study illustrates the method's usefulness by comparing the evolution of product line infrastructure code for Ambient Intelligence sensor nodes, showing significant variability complexity reduction.show more