Fragen? Jetzt Anruf vereinbaren!

Grundlagen der Produktlinienentwicklung

Als Konsumenten stellen wir unterschiedliche Anforderungen an die Produkte, die wir tagtäglich einsetzen. Aus diesem Grund bieten Hersteller ihre Produkte in unterschiedlichen Varianten an. Der Aufwand zur Entwicklung und Pflege eines Produktportfolios mit einer Vielzahl unterschiedlicher Produktvarianten ist viel höher. Zeitgleich ist die Entwicklung von Produktvarianten von Grund auf unmöglich, da sehr teuer. Dies ist in der Regel auch nicht notwendig, weil sich Produktvarianten häufig nur in einzelnen Aspekten unterscheiden, d.h. ein Großteil des Funktionsumfangs wird zwischen Varianten geteilt.

In diesem Artikel gehen wir auf die systematische Entwicklung von Produktvarianten ein und betrachten dabei zunächst den grundlegenden Prozess inkl. der Kernkonzepte. Darüber hinausgehende Konzepte sowie die technische Umsetzung werden in weiteren Blog-Artikeln erläutert.

Entwicklungsprozesse

Die Entwicklung von Produktvarianten besteht im Kern aus zwei Prozessen: Entwicklung für Wiederverwendung (Domain Engineering) und Entwicklung durch Wiederverwendung (Application Engineering). Beide Prozesse bilden die Grundlage für die Entwicklung einer Produktlinie, d.h. Entwicklung ähnlicher Produkte durch systematische Wiederverwendung innerhalb einer wohldefinierten Domäne (bspw. Auto oder Smartphone).

Problem Space/Solution Space

Darüber hinaus werden die beiden Bereiche Problem Space und Solution Space unterschieden. Im Problem Space wird die Produktlinie geplant und gesteuert: Variabilitätsmodellierung und Konfiguration. Im Solution Space dreht sich alles um die technische Entwicklung der Produktlinie: Methoden zur Implementierung sowie die Produktgenerierung.

Als Beispiel für eine Produktlinie nehmen wir ein Auto.

Übersicht Domain Engineering/Application Engineering; inspiriert von "Generative Programming: Methods, Tools, and Applications; K. Czarnecki and U. Eisenecker; 2000; Addison-Wesley"

Übersicht Domain Engineering/Application Engineering; inspiriert von "Generative Programming: Methods, Tools, and Applications; K. Czarnecki and U. Eisenecker; 2000; Addison-Wesley"

Domain Engineering

Ziel des Domain Engineerings ist die Entwicklung einer Produktlinie anstelle eines einzelnen Produktes. Im Zentrum steht die Entwicklung wiederverwendbarer Bausteine (Implementierungsartefakte), die flexibel in unterschiedliche Produktvarianten eingebaut werden können. Die Artefakte repräsentieren kein fertiges Produkt, weil sie mehr enthalten als eine einzelne Produktvariante braucht. Aus diesem Grund werden diese Artefakte auch 150% Modelle genannt. Für die Entwicklung der Produktlinie werden dabei die Anforderungen aller (auch potentieller) Kunden berücksichtigt. Grundlage für die Produktlinienentwicklung ist die Variabilitätsmodellierung. Mit ihrer Hilfe werden Gemeinsamkeiten und Unterschiede zwischen Produktvarianten erfasst und mittels Features repräsentiert.

Ein Feature ist eine optionale/inkrementelle Funktionserweiterung, die einen Kundenwunsch abdeckt. Typische Features für ein Auto sind unterschiedliche Antriebe (Benzin, Diesel, Hybrid, Elektro), Assistenzsysteme (z.B. Tempomat, Spurhalteassistent oder Berganfahrassistent) sowie weiter Ausstattungsmerkmale (z.B. Radio-Entertainmentsystem, Klimaanlage oder Dachfenster). Die modellierten Features werden in der Implementierung mit Hilfe unterschiedlicher Techniken als wiederverwendbare Artefakte entwickelt. Dies erstreckt sich über alle Bereiche in denen Variabilität zum Tragen kommt. Beispielsweise müssen für die Entwicklung eines Tempomats folgende Dinge erweitert werden:

Application Engineering

Application Engineering (Entwicklung durch Wiederverwendung) ist der Prozess zur Ableitung einer konkreten Produktvariante aus wiederverwendbaren Artefakten des Domain Engineerings. Dafür werden im ersten Schritt die Kundenanforderungen mit den bestehenden Features der Variabilitätsmodellierung abgeglichen. Der Abgleich erfolgt manuell und geschieht typischerweise in einem Konfigurationswerkzeug. Die Meisten werden bereits mit Produktkonfiguratoren in Berührung gekommen sein, bspw. bei Automobilherstellern oder Online-Shops, wo Features/Produktmerkmale im Rahmen des Bestellprozesses angepasst werden können. In unserem Beispiel wählt der Kunde die Features Tempomat und Spurhalteassistent, lässt das Feature Dachfenster jedoch außen vor. Die fertige Konfiguration ist zusammen mit den wiederverwendbaren Artefakten des Domain Engineerings Eingabe für die Produktgenerierung. In dieser wird – idealerweise vollautomatisch – aus allen relevanten Artefakten eine Produktvariante erzeugt. Weil die wiederverwendbaren Artefakte sich nicht ändern, können durch Eingabe verschiedener Konfiguration entsprechend unterschiedliche Produktvarianten erzeugt werden. Der zugrundeliegende Generator berücksichtigt alle unterschiedlichen Artefakte (konkrete Anforderungen, Architektur, usw.), die zuvor im Domain Engineering erstellt wurden.

Das Application Engineering ist über eine Feedback-Schleife mit dem Domain Engineering verbunden. D.h. Anforderungen, die während der Konfiguration nicht berücksichtigt werden können, werden in der Variabilitätsmodellierung eingesteuert. Innerhalb der Modellierung führen neue/geänderte Anforderungen zu einer Anpassung des Produktportfolios und schließlich zu neuen/geänderten Features im Rahmen der Produktlinienimplementierung.

Zusammenspiel von Domain Engineering und Application Engineering

Die Darstellung von Domain und Application Engineering in der ersten Abbildung ist losgelöst von den einzelnen Disziplinen, die innerhalb der Produktentwicklung immer noch stattfinden (Requirements Engineering, Design, Realization und Quality Assurance). Mit Blick auf die einzelnen Disziplinen zeigt sich für Domain und Application Engineering das folgende Bild:

Zusammenspiel Domain Engineering/Application Engineering; inspiriert von "Software Product Line Engineering: Foundations, Principles and Techniques; K. Pohl, G. Böckle, and F. van der Linden; 2005; Springer"

Zusammenspiel Domain Engineering/Application Engineering; inspiriert von "Software Product Line Engineering: Foundations, Principles and Techniques; K. Pohl, G. Böckle, and F. van der Linden; 2005; Springer"

Alle Engineering Disziplinen sind analog zur Produktentwicklung für ein einzelnes Produkt miteinander verbunden. So baut das Design auf den Ergebnissen des Requirements Engineering auf, die Realization auf den Ergebnissen des Designs, usw. Der Unterschied hier ist, dass die Bereiche zweimal auftreten: einmal im Domain Engineering mit bspw. Domain Requirements Engineering und einmal im Application Engineering mit dem Application Requirements Engineering. Fokus der Domain Engineering Disziplinen ist die Erstellung wiederverwendbarer Artefakte. So wird bei der Erstellung von Requirements Spezifikationen im Domain Requirements Engineering berücksichtigt, dass nicht alle Auto-Varianten einen Tempomaten enthalten. D.h. die Requirements für den Tempomaten sind so markiert, dass sie nur für alle Produktvarianten des Autos mit Tempomat gelten und für alle anderen Produktvarianten unberücksichtigt bleiben.

Bei der Übernahme der “variablen” Requirements aus dem Domain Requirements Engineering in das Application Requirements Engineering werden diese Requirements konfiguriert, so dass sich ein konkretes Auto daraus erstellen lässt. Im Idealfall erfolgt die Übernahme der variablen Requirements im Application Requirements Engineering rein durch Konfiguration. D.h. für die Erstellung einer Produktvariante müssen keine neuen Requirements für die neue Produktvariante erstellt werden. Gleiches gilt für die übrigen Engineering Disziplinen wie Design, Realization und Quality Assurance.

Umgang mit variantenspezifischen Erweiterungen

Mit der Aufteilung der Engineering Disziplinen auf Domain Engineering (Entwicklung für Wiederverwendung) und Application Engineering (Entwicklung durch Wiederverwendung) können variantenspezifische Erweiterung, d.h. Erweiterungen die potentiell nur für eine Produktvariante gebraucht werden entweder im Domain Engineering oder im Application Engineering umgesetzt werden. Für die Umsetzung in den beiden unterschiedlichen Prozessbereichen sind folgende Punkte jeweils zu berücksichtigen:

Application Engineering:

Integration und Nachversorgung

Integration und Nachversorgung

Domain Engineering:

Picture Credits Title: © Robert Kneschke, Adobe Stock
Dr. Jörg Liebig

Dr. Jörg Liebig

Senior Consultant

+49 89 5307 44-512

liebig@4soft.de

Haben Sie Fragen zur Technik oder zur Produktlinienentwicklung? Gern würde ich mich mit Ihnen darüber austauschen - ich freue mich über Ihre E-Mail.