# Produktlinienentwicklung (Software)

Produktlinienentwicklung stellt einen methodischen Ansatz zur Softwareentwicklung dar, dessen Ziel das Erzeugen von Software-Produktlinien ist (engl. Software Product Lines, teilw. auch Software Families).
Hierbei werden sowohl die Wiederverwendung als auch die Variabilität auf Basis einer gemeinsamen sog. Plattform organisiert.
Der Begriff Software Product Lines wurde eingeführt vom Software Engineering Institute (SEI) der Carnegie Mellon University.

## Grundprinzipien

Die Produktlinienentwicklung beruht wesentlich auf zwei Grundprinzipien:
* Der Beschreibung der Variabilität der Produktlinie.
* Der Trennung von Domänenentwicklung und Applikationsentwicklung.

### Modellierung der Variabilität

Wichtigste Grundmethodik der Produktlinienentwicklung ist die Modellierung der Variabilität. Diese wird orthogonal in allen Entwicklungsphasen eines Produktlinienprojekts bestimmt, vorgehalten und geändert. Grob umrissen sind die Entwicklungsphasen eines Produktlinienprojekts
* die Anforderungsphase;
* die Architekturphase und
* die Implementierungsphase.
Die in der Anforderungsphase (engl. Requirements Phase) identifizierten Varianten werden in den Produkten der Architekturphase berücksichtigt. Dies werden insbesondere Varianten im Funktionsumfang sein, die sich aufgrund von Kundenwünschen oder Geschäftszielen herausbilden. Zusätzlich können Varianten während der Architekturphase identifiziert werden. Beispielsweise könnte die Integration mit Software von anderen Herstellern Varianten ausbilden. Schließlich werden die Varianten aus der Anforderungs- und aus der Architekturphase in der Implementierungsphase berücksichtigt, in der weitere Varianten entstehen können, wie z. B. die individualisierte Berücksichtigung von bestimmten Datenbanksystemen. Die Entwicklung hin zu Produktlinien, die über Unternehmensgrenzen entwickelt werden, führt zu einem komplexen Software-Ökosystem in dem Kundenwünsche einen noch größeren Einfluss auf die Entwicklung haben als bei rein durch einzelne Unternehmen getriebene Produktlinien.
Vorteile der orthogonalen Variabilitätsmodellierung sind unter anderem, dass Varianten und ihre Abhängigkeiten übergreifend verfolgbar sind. Auch bleibt die Wiederverwendbarkeit bereits identifizierter Varianten erhalten. Schließlich kann der Implementierungsaufwand für eine konkrete Produktlinie teils drastisch reduziert sein: Da normalerweise nur eine Untermenge der möglichen Varianten implementiert wird, brauchen nur die für die Produktlinie identifizierten Varianten implementiert zu werden. Diese Implementierungen, wenigstens aber die Domänenartefakte der Plattformen, kann man normalerweise auch wiederverwenden.

### Getrennte Domänen- und Applikationsentwicklung

Um Varianten von Produktlinien identifizieren zu können, muss zunächst ermittelt werden, welche Bestandteile einer Software tatsächlich nicht nur einmalig zu erstellen sind (z. B. um einem Kundenwunsch zu genügen), sondern mehrfach verwendet werden können. Dieser Prozess wird Scoping genannt.
Diese Wiederverwendungsanalyse ist Ausgangspunkt eines Produktlinien-Projekts. Normalerweise erfolgt das Scoping, nachdem Klarheit über die zu entwickelnden Produktlinien herrscht, also ein „Produkt-Portfolio“ oder eine „Produkt-Roadmap“ von der Geschäftsseite erstellt worden ist.
Basierend darauf werden die domänenspezifisch wiederverwendbaren Artefakte entwickelt (z. B. Anforderungs- und Architekturdokumente, Testfälle), die für die Implementierungsphase maßgeblich sind. Als methodischer Ansatz ist die Produktlinienentwicklung deshalb auch als architekturzentriert (siehe Softwarearchitektur) zu bezeichnen.