PART 5

Software Product-Lines

Using Software product line architectures is a mean to have planned reuse of components within an organization. This kind of architecture supports structured assembly of product line components. The various components can be assembled together so long they follow the implicit rules of the planned architecture. This approach has been proven as very successful for companies that produce many variants of products with similar functionality (e.g. TVs and VCRs). By having planned for developing many different products over a longer period of time the software product line helps both with developing and reusing components. Components do not have to be developed bottom up with a lot of generality, they can instead be developed with guidelines from the product line architecture.

Rob van Ommering and Jan Bosch write chapter 11 Components in Product-line Architectures, which describes how product line architectures can be used to utilize component reuse. The reuse of components between many different products is dependent on how the architecture is set up in the beginning; the more investment put into the architecture the more possible reuse of components can be achieved. Creating an architecture requires decision how to develop the products. To chose one of the two approaches of top down versus bottom up development is not appropriate at all times. A mixture is often suitable and it is here product-line architectures can help to set the stage for a development that both uses components in a bottom up way and architectures in a top down approach.

In chapter 12 The Koala Component Model, Rob van Ommering presents the findings from using a product-line architecture within Philips for the creation of a product population of consumer electronics. The component model developed, named Koala, is also an architectural description language used to build products from a repository of components. The chapter describes the Koala model and how it is used to build components that fit into a product line architecture.