Lean Software Development für Automobilsoftware

Architektur/Methoden  –  0 Kommentare

Agile und Lean-Prinzipien sind in der Softwareentwicklung etabliert. Die Automobilindustrie jedoch, obwohl in der Fertigung zu den Lean-Pionieren gehörend, hadert noch mit deren Adaption in der Softwareentwicklung, wo die Lieferung definierter Pakete zu einem bestimmten Termin üblich ist. Mit dieser Vorgehensweise ist es aber zunehmend schwierig, den derzeitigen Anforderungen an Automobilsoftware gerecht zu werden. Das Lean Development Model begegnet dieser Herausforderung, indem es verschiedene Methoden der Lean-Entwicklung kombiniert.

Zu klassischen Werten der Entwicklung für die Automobilbranche wie Design, Antrieb, Fahrwerk und Sicherheit ist in den letzten Jahren ein weiteres Differenzierungsmerkmal hinzugekommen: Vom Infotainmentsystem erwartet der Endkunde zunehmend die gleichen Funktionen, die Smartphones und andere mobile Endgeräte bieten. Diese Techniken unterliegen jedoch einem viel schnelleren Entwicklungszyklus als die Musterphasen der Autoentwicklung. Plant ein Hersteller ein Auto mit zwei bis drei Jahren Vorlauf, lässt sich zwar die Hardware definieren, doch die Anforderungen an die Software werden sich bis zum unwiderruflich feststehenden SOP (Start of Production) noch stark verändern.

Zusätzlich erwartet der Endkunde neue Funktionen und Unterstützung aktueller Techniken über den Autokauf hinaus. Damit ändern sich die Anforderungen an die Software nicht nur während der Planung, sondern auch über den gesamten Produktlebenszyklus. Gleichzeitig werden meist mehrere Funktionsumfänge sowie länderspezifische Varianten angeboten, die auf demselben System basieren. Lineare Planungsverfahren wie Wasserfall und V-Modell geraten da schnell an ihre Grenzen, da sich während des Entwicklungsprozesses nicht umfassend und schnell genug auf Veränderungen reagieren lässt.

Die kontinuierliche Aktualisierung der Software im Auto bedeutet aber auch, dass die Anforderungen an die Hardware zum Produktionsstart höher sind als zu Planungsbeginn. Daher ist statt großer generischer Frameworks eine genau auf die Anforderungen reduzierte Software zu erstellen, um die Rechenkapazität nicht unnötig zu belasten. Das erfordert ein Refactoring, um zum Beispiel Code für alte Anforderungen wieder herauszunehmen. Nur eine Software, die den KISS- ("Keep it simple and stupid") und Clean-Code-Prinzipien folgt, bleibt langfristig wartbar und reduziert das Risiko für neue Fehler. Zur Vermeidung von Regressionen ist die Nutzung automatisierter Test-Frameworks essenziell.

All das sind Eigenschaften, die agile Entwicklungsmethoden mitbringen und sie daher für die Automobilindustrie interessant machen. Das sich von ihnen ableitende Lean Development Model ist eine speziell auf die Automobilsoftwareentwicklung zugeschnittene Herangehensweise, die diese Prinzipien kombiniert. Es vereint Prinzipien aus agilen Methoden und dem Lean Software Development. Aus Projektmanagement-Sicht kommen in erster Linie Scrum und Kanban (mit Fokus auf Projekt- und Teammanagement) zum Tragen. Zusätzliche Methoden aus Extreme Programming (XP) unterstützen die Softwareentwicklung (s. Abb. 1). Doch wie kam es zu seiner Entstehung?

Prinzipien aus agilen Methoden und Lean Software Development im Lean Development Model (Abb. 1)

2008 wurde zur Organisation der Feature-Entwicklung für ein Infotainmentsystem bei Elektrobit Automotive Scrum eingeführt. Iteratives Vorgehen und feste Sprint-Längen brachten positive Erfahrungen, da sich der Kunde – ein amerikanischer Automobilhersteller – früh und regelmäßig einbeziehen ließ.

Das Beispielprojekt

Ein Team von etwa 75 Entwicklern und Testern wendet LDM in einem Softwareentwicklungs- und Integrationsprojekt an. Verteilt über vier Standorte in den USA, Deutschland und China ist das Projektteam neben der Integration zugelieferter Komponenten auch für die Entwicklung einiger Features verantwortlich. Das Team ist mit Mitarbeitern aus mehr als 15 Nationalitäten besetzt, um die Anforderungen der verschiedenen internationalen Märkte besser umsetzen zu können. Vor allem in Entwicklung und Test von Spracherkennung und Sprachsynthese-("Text to Speech"-)Funktionen lassen sich durch den Einsatz von Muttersprachlern Fehler vermeiden und schneller finden.

Durch die Laufzeit des Projekts von mehr als sieben Jahren und den internationalen Einsatz sind viele Hardwarevarianten zu unterstützen – eine besondere Herausforderung an das Konfigurations- und Build-Management.

Nachdem die Feature-Entwicklung weitgehend abgeschlossen war, verlagerte sich der Schwerpunkt hin zur Stabilisierung und Verbesserung des integrierten Gesamtsystems. Neue Fehler und sich dadurch verändernde Prioritäten sowie unterschiedlich ausgelastete Experten erschwerten es allerdings, zu Beginn eines Scrum-Sprints eine stabile Planung aufzustellen. Daher stellte das Team auf Software-Kanban zur Organisation um, was deutlich besser zu den anfallenden Tätigkeiten passte.

In einer späteren Phase galt es wieder, neue Features zu entwickeln. Statt vom etablierten Kanban wieder zu Scrum zu wechseln, entschied sich das Team, die beiden Methoden zu kombinieren. Aufgaben werden in Form von Tickets zu Storys gebündelt, die ein Feature des Infotainmentsystems darstellen. In dieser Granularität lassen sich Storys mit dem Kunden im Backlog priorisieren. Das Team arbeitet die einzelnen Tickets ab, bis sich die Story an den Kunden ausliefern lässt.

Zunächst war diese Vorgehensweise eine lokale Angelegenheit, da das Team hauptsächlich in Deutschland saß und die Entwicklung auf einem schlichten Board koordinieren konnte. Mit dem Wachstum und der Verteilung des Teams kamen zusätzliche Tools wie JIRA zum Einsatz, die die Koordination des Gesamtprojekts standortübergreifend ermöglichten.

Im Wesentlichen folgt das Lean Development Model genannte Verfahren den sieben im Folgenden genannten Prinzipien.