Over the past decades, the size and complexity of software within products has grown rapidly. Furthermore, the variation in products has increased. One way to cope with these trends is to develop products within the context of a product family. Product family development introduces a structured approach for reusing software across the products within the family. Product families are gaining in importance in the software industry. This thesis presents the work we have performed at Philips Research using industrial cases. It consists of three parts, each addressing an area of research related to product family development. In the first part we deal with the question how variation can be supported in a product family. We describe two methods for dealing with variation. The first method uses component frameworks with plug-in components. The component frameworks capture the generic functionality and form a stable part of the software architecture. The plug-in components provide the specific functionality that is needed to make a specific product. We focus especially on component frameworks, where the functionality is defined in the form of services. We describe a second method that is used for the development of a platform with reusable components. For a specific product components can be reused from this platform. An important element of this method is the explicit handling of interfaces, allowing the exchange of components providing the same interface. Another important element is the use of information models, which describe the data that are exchanged via the interfaces. In the second part of this thesis we describe a method that contributes to the management of complexity, especially product families. This method uses design aspects, which are related to views that crosscut the main decomposition of a system, such as data logging or error handling. They provide a valuable structuring mechanism for the various phases of development; we will give various examples of this. Design aspects help to obtain components that can be easily reused. Since design aspects do not deal with domain specific functionality, the design aspects and their relation to the architecture requirements we describe in our study are broader applicable. In the third part we deal with the question how a product family approach can be successfully introduced and maintained. In this part, we deal not only with technical issues, but also with business, process and organization issues. Based on a number of case studies, we identify important factors that must be considered to obtain successful product family development. Furthermore, we introduce a classification scheme for product family approaches, which is based platform coverage and variation mechanisms. This classification scheme supports the selection of a suitable product family approach and can be used to evaluate and compare existing product families. We also discuss product family introduction strategies using the scheme.
|Doctor of Philosophy
|Published - 2004
- GOO 54.52 programmatuurontwikkeling
- Proefschriften (vorm)
- Programmatuurtechniek, Productbeleid