John Deere

Mit Architektur Software agil entwickeln

In der modernen Landtechnik sind Produkte ohne erheblichen Softwareanteil längst nicht mehr denkbar. Aktuelle Landmaschinen und insbesondere Traktoren sind üblicherweise mit einer Vielzahl von elektronischen Steuergeräten ausgestattet, die Aufgaben von der Motorsteuerung über sicherheitsrelevante Funktionen bis hin zu vernetzten landwirtschaftlichen Anwendungen übernehmen. Viele der ehemals rein mechanischen Bedienelemente sind in modernen Traktoren durch interaktive, grafische Displays ersetzt worden. Der weltweit größte Landmaschinenhersteller John Deere ist mittlerweile dazu übergegangen, die Displaysoftware »agil« zu entwickeln. Das ist leicht nachvollziehbar, schaut man sich die damit verbundenen Erwartungen an: frühes Kundenfeedback sowie kürzere »Time-to-Market« durch entsprechend schnelle Releasezyklen. Wird die Softwareentwicklung auf agile Methoden umgestellt, so hat dies in der Praxis insbesondere für die Entwicklermannschaft mehr Freiheiten zur Folge. Die entstandenen Freiheiten bergen bei einer verteilten Entwicklung solcher Displays, die im Falle von John Deere in den USA und in Kaiserslautern stattfindet, zusätzliche Herausforderungen, die eine reibungslose Softwareentwicklung erschweren. Neben den Herausforderungen an Kommunikation und Werkzeugunterstützung stellt sich bei agiler Softwareentwicklung schnell die Frage, ob und wie konkret Vorgaben in Bezug auf die Umsetzung bestimmter Entwicklungsaktivitäten sein sollen und müssen. Insbesondere die Entwicklung und Kommunikation einer klaren Vision des Systems und der Softwarearchitektur, die von allen Entwicklern getragen wird, stellt sich bei verteilten, agil entwickelnden Teams oft als schwierig heraus.

John Deere ISG (Intelligent Solutions Group) wurde bei der Umstellung auf agile Entwicklungsmethoden von Experten des Fraunhofer IESE dabei unterstützt, Architekturprinzipien so einzusetzen, dass die Kommunikation über die Standorte hinweg verbessert wurde, um somit eine gemeinsame Vision der Softwarearchitektur zu entwickeln und im Entwicklungsprozess zu verankern.