Product family engineering

Product line development represents a methodological approach to software development, the aim of the creation of software product lines (English Software Product Lines, sometimes also software Families ).

Here, both the re-use as well as the variability be organized on the basis of a so-called common platform.

The term software product lines was introduced by the Software Engineering Institute ( SEI) of Carnegie Mellon University.

Basic principles

The product line development is essentially based on two fundamental principles:

Modeling of the variability

Important basic methodology of product line engineering is the modeling of variability. This is orthogonal determined, maintained and changed in all development stages of a product line project. Roughly outlined the development stages of a product line project

  • The requirements phase;
  • The architecture phase and
  • The implementation phase.

The in the requirements phase (English Requirements phase) identified variants are included in the products of the architecture phase. This will be particularly variations in functionality, which emerge due to customer requirements or business objectives. In addition, variants can be identified during the architecture phase. For example, the integration with software from other manufacturers could form variants. Finally, the variants from the request and from the architectural phase to the implementation phase are taken into account in the further variants may arise, such as individualized consideration of certain database systems. The move towards product lines that are sophisticated by company boundaries leads to a complex software eco-system in the customer wishes an even greater impact on the development than in purely driven by individual companies product lines.

Advantages of the orthogonal variability modeling are that variants and their dependencies across trackable among others. The reusability is received identified variants. Finally, the implementation effort for a specific product line can be reduced drastically in part: As usually, only a subset of the possible variants is implemented, only identified for the product line variants need to be implemented. These implementations, or at least the domain artifacts of the platforms, you can usually also reuse.

Separate domains and application development

In order to identify variants of product lines, it must first be determined which components of a software are actually not only create unique (eg, to satisfy a customer's request), but can be used multiple times. This process is called scoping.

This reuse analysis is the starting point of a product line project. Normally, the scoping is given after clarity about the product lines to be developed there, so a " product portfolio " or a " product roadmap " has been created by the business side.

Based on the domain-specific reusable artifacts are developed (eg, requirements and architecture documents, test cases ) that are crucial for the implementation phase. As a methodological approach to product line development is therefore also be referred to as architecture- centered (see software architecture).

661895
de