Software product families have achieved a broad recognition in the software industry. Many organizations either have adopted or are considering to adopt the technology. The key artefacts in software product families are the development, evolution and use of a product family architecture and a set of shared components. Being able to develop a software artefact once and use it in several products or systems is, obviously, one of the main benefits to be achieved. However, although existing literature discusses software product families, several aspects that are of importance during the adoption software product families are not discussed.
In our experience from several industrial cases, several decisions need to be taken about the scoping of product family artefacts, the way to organize for the development and evolution of these artefacts, the funding model used to finance the development of shared components, the features that are selected for implementation in shared components as well as the amount of architecture harmonisation required. However, these decisions are often taken implicitly rather than explicitly based on clearly stated objectives. The consequence is that the organization may experience a mismatch between the employed and the optimal approach. This may result in several problems, such as a high degree of erosion, mismatches between product needs and shared components, organizational noise and inefficient knowledge management.
In this paper we present a framework for deciding the optimal model for the adoption of software product families. Subsequently, we present a framework for selecting the best alternative for each decision based on a three-stage adoption model. Although the paper is based on extensive industrial experience, we are unable to present any case studies due to confidentiality.