Agile Synchronization between a Software Product Line and its Products

Establishing and maintaining a software product line for a series of similar applications is a complex and time-intensive process, which can only pay back its cost if the provided software components achieve a high degree of reuseablity. Furthermore, in many domains, including automotive, stability will always be prioritized over reusability. Integrating a set of existing similar but individually developed products into a reusable product line is often very time-intensive. It is better, but still time-consuming, to feed the result of a new product back into an already existing software product line. Due to resource constraints for the next product, necessary resources are rarely provided. As a consequence, a product line is often endangered by becoming outdated and thus less usable. Therefore, the establishment and maintenance of a software product line needs to be supported by processes and techniques which allow to derive necessary information from running projects with only minor or ideally non-manual effort. In this paper, an agile and semi-automated process to extract and maintain a software product line during the parallel evolvement of several products is proposed. This process is based on PERSIST, an industrially used approach which combines agile techniques and sustainable, long-term architecture development. At the end of this paper, the current status and achievements of PERSIST are discussed, already implemented techniques are evaluated in the context of the automotive powertrain, and further potentials are highlighted. 1 Software Engineering, RWTH Aachen, Ahornstrase 55, 52074 Aachen, http://www.se-rwth.de 2 FEV GmbH, Neuenhofstrase 181, 52078 Aachen, http://www.fev.com