3.1. Introduction

Although the term "(Software) Product line Engineering" is becoming more widely known, there is still uncertainty among developers about how it would apply in their own development context. The purpose of this chapter is to explain the design and automated derivation of the product variants of a Software Product Line using an easy to understand, practical example.

One increasing trend in software development is the need to develop multiple, similar software products instead of just a single individual product. There are several reasons for this. Products that are being developed for the international market must be adapted for different legal or cultural environments, as well as for different languages, and so must provide adapted user interfaces. Because of cost and time constraints it is not possible for software developers to develop a new product from scratch for each new customer, and so software reuse must be increased. These types of problems typically occur in portal or embedded applications, e.g. vehicle control applications. Software Product Line Engineering (SPLE) offers a solution to these not quite new, but increasingly challenging, problems. The basis of SPLE is the explicit modelling of what is common and what differs between product variants. Feature Models are frequently used for this. SPLE also includes the design and management of a variable software architecture and its constituent (software) components.

This chapter describes how this is done in practice, using the example of a Product Line of meteorological data systems. Using this example we will show how a Product Line is designed, and how product variants can be derived automatically using pure::variants.