Entwicklung von Embedded-Software So gelingt »Continuous Delivery«

Kunden erwarten bei Embedded-Software immer schnellere Releases und sind immer weniger gewillt, über Fehler hinwegzusehen. Vor diesem Hintergrund müssen die Hersteller ihre Produkte zum einen schneller fertigstellen, dürfen sich aber gleichzeitig keine Abstriche bezüglich ihrer Qualitätsstandards erlauben. Ein Weg dorthin kann »Continuous Delivery« sein.

Seit Anfang 2014 ist es offiziell: »Continuous Delivery« ist nicht mehr nur ein Trendthema, sondern zum neuen De-facto-Standard der Softwareentwicklung geworden [1]. Die Entwicklungsmethode soll Unternehmen in die Lage versetzen, ihre Produkte schneller bei gleichbleibender oder gar gesteigerter Qualität anbieten zu können, indem sich ihre Software zu jedem beliebigen Zeitpunkt an die Produktion weitergeben lässt. Möglich wird dies durch frühzeitiges Feedback zu Fehlerquellen, automatisierte Build- und Testprozesse sowie inkrementelle Deployments. Für Unternehmen wird dies zu einem Wettbewerbsvorteil, da sie so die Dauer bis zur Marktreife und -einführung ihrer Produkte ohne Qualitätseinbußen verkürzen können.

Einem tatsächlichen Umstieg auf die Methode stehen viele Unternehmen jedoch häufig noch skeptisch gegenüber, dabei ist das Gelingen in vielen Fällen nur eine Frage der richtigen Voraussetzungen. Die folgenden fünf Best Practices sollen Unternehmen einen Leitfaden an die Hand geben, wie der Wechsel auf Continuous Delivery zum Erfolg wird und welche Grundlagen bereits im Vorfeld geschaffen werden sollten.

  • Über den Tellerrand hinausblicken 

Continuous Delivery umfasst mehr als nur den reinen Softwarecode. Vielmehr müssen alle Elemente eines Produkts in konsistenter Weise von der Entwicklung bis hin zur Implementierung versioniert werden. Solche Assets können Chiparchitekturen sein, CAD-Designs, Konfigurationsskripte oder Binärdateien. Auch umfassen die meisten Anwendungen heutzutage in irgendeiner Form Rich-Media-Inhalte wie Sounds oder Grafiken. Diese sind umso wichtiger, da der Wiedererkennungswert populärer Softwareprodukte auf zentrale Weise von deren Design, Grafik und Benutzeroberflächen geprägt wird.

Werden solche zusätzlichen Objekte nicht gemeinsam mit dem Rest der Anwendung verwaltet und versioniert, laufen Entwickler Gefahr, ein unfertiges oder unvollständiges Produkt zu veröffentlichen. Um dies zu verhindern, benötigen IT-Unternehmen ein Versionsmanagement-Tool, das über reinen Quellcode hinausgeht. In einer modernen Entwicklungsumgebung tragen verschiedenste Personen zum Projekt bei: technische Redakteure, Autoren, Grafikgestalter, Projektleiter, Marketingteams und andere. Sie alle benötigen ein Werkzeug, das ihre Arbeitsweise unterstützt und fördern kann. Steht ein Release an, haben Unternehmen dann alle korrekten Assets – seien es nun Softwarecode, Grafikelemente oder Dokumentationen – unmittelbar zur Veröffentlichung bereit (Bild 1). 

  • Automatisieren, automatisieren, automatisieren 

Nicht zuletzt aufgrund der steigenden Beliebtheit mobiler Apps erwarten Anwender immer häufiger, Updates in kurzen Zyklen zu erhalten, anstatt in Form eines einzigen, großen Release. Durchschnittlich veröffentlichen die wichtigsten App-Entwickler im Jahr acht bis zwölf neue Versionen. Um eine solche Menge bewältigen zu können, lautet die Devise: »Automatisieren, automatisieren, automatisieren!«

In einer hochgradig automatisierten Umgebung lösen alle Commits augenblicklich einen Build-Prozess sowie anschließende Tests aus, die prüfen, ob diese Commits Fehler erzeugen würden. Wenn ja, wird die Änderung zur Überarbeitung an das Entwicklerteam zurückgeschickt – eine sofortige Problemlösung ist einfacher und kostengünstiger als etwa in einer späten Phase der Qualitätskontrolle.

In verschiedenen Stufen automatisieren

ThoughtWorks, Spezialist für Softwareentwicklung und -auslieferung, empfiehlt, Prozesse in unterschiedlichen Stufen zu automatisieren. Beginnen sollten Unternehmen mit Monitoring und Reporting, erst im zweiten Schritt sollten sie Automatisierung in den Release-Prozess integrieren. Dabei ist es sinnvoll, zunächst die Prozesse zu automatisieren, über die Entwickler am schnellsten Feedback zu wahrscheinlichen Problemen erhalten [2]. Selbstverständlich lässt sich nicht jeder Vorgang automatisieren – doch je höher der Automatisierungsgrad mit der Zeit ausfällt, desto schneller können qualitativ hochwertige Updates veröffentlicht werden. 

  • Mit offenen Karten spielen 

Viele Unternehmen streben eine universale Transparenz in ihrer gesamten Produktionsumgebung an, denn sie ist es, die weitreichende Vorteile für Qualität und Kooperation bringt. Ermöglicht ein umfassendes Informationsdepot eine vollständige Übersicht aller Änderungen über die einzelnen Teams und Projekte hinweg, können die Auswirkungen eines zukünftigen Updates besser abgeschätzt und potenzielle Konflikte früh erkannt werden. So lässt sich die höchstmögliche Qualität des Endprodukts in schnellstmöglicher Art und Weise sicherstellen.

Zudem hat Transparenz einen positiven Effekt auf das Gemeinschaftsgefühl der einzelnen Teams, da kollektive Ziele deutlich werden und – für alle sichtbar – gemeinsam darauf hingearbeitet wird. Mitarbeiter erhalten die Chance, von Kollegen auf Basis ihrer Projektbeiträge zu lernen. Zudem ist für den Einzelnen stets erkennbar, in welcher Weise das große Ganze vom eigenen Beitrag profitiert.

Hierzu eignen sich am besten Monitoring- und Reporting-Funktionen, allen voran die Sammlung und Analyse von Daten über verschiedene Umgebungen und Infrastrukturen hinweg. Diese liefern empirische Beweise für Leistungsverbesserungen sowie Hinweise auf mögliche Effizienzsteigerungen. Eine erhöhte Transparenz fungiert in vielen Fällen als entscheidender erster Schritt für den Umstieg auf Continuous Delivery. 

  • Lücken in der Beweiskette schließen 

Sowohl aus Gründen der Fehlerbeseitigung als auch der Compliance muss jeder Vorgang am Projekt protokolliert werden. Es ist aufzuzeichnen, wer eine Änderung durchgeführt hat und vor allem auch warum. Ein Informationsverlust kann sich später bitter rächen, etwa falls ein schwerwiegender Fehler einen Rollback auf eine frühere Version notwendig macht. Über eine »lückenlose Beweiskette« kann der Fehler jedoch schnell gefunden werden. Im Extremfall bewahrt die so entstandene Nachweisbarkeit das Unternehmen gar vor möglichen rechtlichen Konsequenzen.

Ihren Ursprung hat die ununterbrochene Beweiskette daher auch in stark regulierten Branchen, zum Beispiel dem Gesundheitswesen und dem Finanzsektor. Dennoch profitieren selbstverständlich alle Branchen von ihren Vorteilen. Internationale Standards machen heutzutage immer häufiger eine detaillierte Protokollierung bei der Softwareentwicklung erforderlich, etwa die Norm ISO 26262 zur Steigerung der Sicherheit in der Automobilindustrie.

Die beste Herangehensweise an die lückenlose Beweiskette ist es, einen einzigen, zentralen Referenzbestand aller Informationen zu pflegen – mit Hilfe einer Versionsmanagementplattform. Dadurch wird der gesamte Produktlebenszyklus effektiv nachvollziehbar – und zwar über die Frage hinaus, welcher Anwender zu welcher Zeit eine bestimmte Änderung eingecheckt hat (Bild 2). 

  • Alles an einem Ort pflegen 

Ein einziger, einheitlicher Referenzbestand mit allen Daten und Objekten über die gesamte Umgebung hinweg ist für Unternehmen von unschätzbarem Wert. Denn sind Assets über unterschiedliche Speicherorte verstreut, besteht die Gefahr, dass sich Fehler einschleichen und Auslieferungstermine nicht eingehalten werden können. Unternehmen sollten daher ein konsolidiertes Repository mit allen Assets pflegen.

Idealerweise übernimmt eine Versionierungsplattform die Verwaltung dieses zentralen Repository. Ein geeignetes System sollte dabei drei elementare Kriterien erfüllen: Erstens ist auf eine hohe Skalierbarkeit zu achten. Unternehmen müssen in der Lage sein, Teams unabhängig von ihrer Größe oder ihrem Standort einzubinden, ohne dass Barrieren die Zusammenarbeit behindern. Zweitens muss die Lösung universell einsetzbar sein. Softwaretechniker, Grafiker, Administratoren und viele mehr müssen zusammenarbeiten. Daher sollte das Repository in der Lage sein, mit den unterschiedlichen Dateiarten dieser Gruppen umzugehen. Und schließlich sind auch Sicherheitsaspekte zu bedenken. Um Informationen mit kleinstmöglichem Risiko auszutauschen, ist eine konfigurierbare Zugangskontrolle sinnvoll, die konsistent über die gesamte Umgebung angewendet wird. Zugehörige Audit- und Compliance-Tools unterstützen zudem bei rechtlichen Fragen.

All die vorgenannten Best Practices können Unternehmen selbst schaffen und somit aus eigener Kraft die Grundlage für erfolgreiches Continuous Delivery legen. Auf diese Weise können sie auch in Zukunft den hohen Kundenanforderungen gerecht werden und mit der rasanten Geschwindigkeit des heutigen Marktes ohne Schwierigkeiten mithalten.

Über den Autor:

Mark Warren ist European Marketing Director bei Perforce Software.