Ein Angebot von

5 Best Practices für Continuous Delivery bei der Embedded-Entwicklung

| Autor / Redakteur: Sven Erik Knop * / Sebastian Gerstl

Nicht nur der Quellcode: 
Alle bestehenden Objekte eines Projekts müssen zuverlässig versioniert und verwaltet werden.
Nicht nur der Quellcode: 
Alle bestehenden Objekte eines Projekts müssen zuverlässig versioniert und verwaltet werden. (Bild: Perforce Software)

Versäumte Liefertermine oder mangelnde Qualität werden in der Embedded-Branche immer seltener toleriert. Hilfe verspricht hier die Entwicklungsmethode Continuous Delivery.

Ursprünglich ein Ansatz aus der klassischen Softwareentwicklung, kann Continuous Delivery auch in der Welt der Embedded-Systeme die Entwicklungsprozesse und Qualitätssicherung vereinfachen und beschleunigen. Mithilfe von Continuous Delivery können Unternehmen dafür sorgen, zu jedem gewünschten Zeitpunkt eine auslieferbare Version ihrer Software zur Verfügung zu haben, die in genau derselben Art und Weise installiert wird, in der sie auch getestet wurde. Die Vorteile dieses Verfahrens liegen auf der Hand: Die auslieferbare Version lässt sich fehlerfrei installieren, sodass sich neue Releases mit höherer Geschwindigkeit bei gleichzeitig hoher Qualität ausliefern lassen.

Trotz aller Vorteile zögern viele Unternehmen nach wie vor, ihren gesamten Entwicklungsprozess auf Continuous Delivery umzustellen. Dabei ist eine erfolgreiche Nutzung in der Praxis in vielen Fällen nur eine Frage der richtigen Voraussetzungen.

1. Mut zur Transparenz über die gesamte Umgebung

Zunächst gilt es, die Transparenz über die gesamte Produktionsumgebung hinweg sicherzustellen. Mithilfe eines zentralen Informationsdepots erhalten Unternehmen eine vollständige Übersicht zu allen Änderungen über die einzelnen Teams und Projekte hinweg und können so die Auswirkungen eines zukünftigen Updates besser abschätzen sowie potentielle Konflikte früh erkennen. Auch das Gemeinschaftsgefühl der Entwickler kann hiervon profitieren: Für sie wird das große Ganze erkennbar und damit leichter ersichtlich, wie alle Hand in Hand an der Erreichung der gemeinsamen Ziele arbeiten. Ebenso wird deutlicher, wie der eigene Beitrag das Projekt insgesamt voranbringt.

Am besten eignen sich dafür Monitoring- und Reporting-Funktionen etwa einer Versionsmanagementlösung, die für die Sammlung und Analyse von Daten über verschiedene Umgebungen und Infrastrukturen hinweg sorgen kann. Die damit erzielte Transparenz hilft somit, die Qualitätssicherung zu optimieren und zu beschleunigen.

2. Keine Lücken in der Beweis- kette

Aus Gründen der Fehlerbeseitigung und Compliance müssen die Aktivitäten der einzelnen Entwickler mitprotokolliert werden. Treten unerwartete Fehler auf, muss sich zu jedem Zeitpunkt unmittelbar nachvollziehen lassen, wer eine Änderung wann, wo und vor allem auch warum durchgeführt hat. Nur auf Basis dieser Informationen lässt sich im schlimmsten Fall ein notwendiges Rollback auf eine frühere Version vornehmen.

Die ideale Vorgehensweise, um eine solche „lückenlose Beweiskette“ zu erreichen, besteht darin, einen einzigen, zentralen Referenzbestand aller Informationen zu pflegen – in vielen Fällen ebenfalls eine Funktion einer Versionsmanagementplattform. Diese sorgt für die Protokollierung des gesamten Produktlebenszyklus und macht damit zu jeder Zeit transparent, welcher Anwender wann welche Änderung eingecheckt hat – Informationen, die übrigens auch bei rechtlichen Auseinandersetzungen von unschätzbarem Wert sein können.

3. Manuelle Prozesse automatisieren

Gerade manuell durchgeführte Builds, Tests und Updates bergen ein erhöhtes Risiko, instabil zu sein, da sich bei jedem Schritt potenziell neue Fehler einschleichen können. Daraus resultiert die Abneigung vieler Entwickler, neue Versionen aufzuspielen, um ein bestehendes System nicht zu destabilisieren. Ist aufgrund eines schwerwiegenden Fehlers ein Update jedoch unvermeidlich, kann die mangelnde Erfahrung und fehlende Infrastruktur für rasche Updates Unternehmen schnell in die fatale Situation bringen, in der weder ein Rollback auf eine ältere Version noch das Aufspielen einer neuen Version möglich sind.

Um dies zu vermeiden, sollten Unternehmen ihre Entwicklungsumgebung weitestgehend automatisieren. Alle Commits sollten umgehend einen Build-Prozess sowie anschließend Tests auslösen, die prüfen, ob diese Fehler erzeugen. Eine solche sofortige Problemlösung stellt nicht nur funktionierende Versionen sicher, sondern ist auch kostengünstiger als die Fehlerbehebung in einer späteren Phase der Qualitätskontrolle.

4. Nicht beim Quellcode bereits aufhören

Für eine jederzeit releasefähige Software genügt es heutzutage zudem längst nicht mehr, allein den Quellcode im Auge zu behalten. Die meisten modernen Softwareprojekte beinhalten darüber hinaus unterschiedlichste Arten von Assets wie Chip-Architekturen, CAD-Designs, Konfigurationsskripte, Binärdateien oder Rich-Media-Inhalte wie Sounds oder Grafiken, die für das finale Softwareprodukt unerlässlich sind.

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, müssen Versionsmanagement-Tools in der Lage sein, mehr als nur reine Quellcode-Dateien in die Versionierung miteinzubeziehen. Dann und nur dann haben Entwicklungsteams bei Bedarf alle korrekten Assets unmittelbar zur Hand, um eine aktuelle, lauffähige Version zu generieren – vom Softwarecode über Grafikelemente bis hin zur Dokumentation.

5. Mit einem zentralen Referenzbestand arbeiten

Auch wenn Entwicklungsprojekte zusammengehörige Einheiten darstellen, sind die einzelnen Entwicklungs-Assets nicht selten über unterschiedliche Speicherorte verteilt. Die Gefahr hierbei besteht darin, dass möglicherweise entstandene Fehler erst zu einem späten Zeitpunkt entdeckt werden und geplante Auslieferungstermine in der Folge nicht eingehalten werden können.

Um dies zu vermeiden, sollten Unternehmen ihre gesamten Assets in einem einzigen, zentralen Repository pflegen. Dieses muss etwa in der Lage sein, Teams unabhängig von ihrer Größe oder ihrem Standort einzubinden, ohne dass Barrieren die Zusammenarbeit behindern. Zudem muss die Lösung mit unterschiedlichen Dateiarten umgehen können, um die Arbeit unterschiedlichster Gruppen wie Softwaretechniker, Grafiker und Administratoren gleichermaßen zu unterstützen. Schließlich sind auch Sicherheitsaspekte zu bedenken. Um Risiken zu minimieren, ist etwa eine konfigurierbare Zugangskontrolle sinnvoll, die konsistent über die gesamte Umgebung angewendet wird.

Fazit: Mit Continuous Delivery eine gute Ausgangslage schaffen

Moderne Entwicklungsmethoden wie Continuous Delivery können Unternehmen dabei unterstützen, den gestiegenen Anforderungen der heutigen Zeit gerecht zu werden. Die Grundlage für eine effiziente Umsetzung in der Praxis können Unternehmen selbst legen und damit die optimalen Voraussetzungen schaffen, den Anforderungen ihrer Kunden auch künftig gerecht zu werden und weiterhin im gestiegenen Wettbewerbsdruck der Digitalisierung zu bestehen.

* Sven Erik Knop ist Principal Solutions Engineer bei Perforce Software.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44950774 / Betrieb & Wartung)