Autonome Fortbewegungsmittel werden unsere Beziehung zu Fahrzeugen grundlegend verändern. Das beginnt bereits mit deren Entwicklung. Software ist eine kritische Komponente sämtlicher Technologien, die maßgeblich für die Entwicklung autonomer Fahrzeuge ist. Als zunehmend primäre Quelle für Funktionen und Innovationen in den Fahrzeugen der Zukunft führt Software zu einem nie da gewesenen Maß an Komplexität, sodass eine Evolution in vielen Bereichen erforderlich ist. Dazu zählen unter anderen Big Data, Cloud Computing, künstliche Intelligenz, Sensoren, Steuergeräte und Konnektivität. All diesen Technologien ist eine Komponente gemein: Software.
Software macht diese Technologien interessant und verleiht ihnen das Potenzial zur Umgestaltung und Weiterentwicklung. Ihre Integration in autonome Fahrzeuge ermöglicht zudem enorme Komplexität und eröffnet dabei ungeahnte Möglichkeiten der technischen Ausgestaltung. Der Artikel beschränkt sich explizit auf das Thema „Softwareintegration und Integrationstests in der Automobilbranche“ und zeigt einen Ausschnitt an Empfehlungen auf.
Generischer Ablauf von Integration und Tests
In der nachstehenden Grafik ist zunächst eine stark vereinfachte Generik der Softwareintegration und der jeweiligen Integrationstest dargestellt. Dieses Schaubild stellt die Absprungbasis für alle weiteren Details vor.

Die einzelne Softwareeinheit wird erstellt und durch die zuvor festgelegten Testkriterien als Funktionsnachweis geprüft. Bei positivem Bescheid werden die Softwareeinheiten zu einem Softwareelement gebündelt. Dieses Bündel stellt eine Funktion dar. Nach erfolgreichen Tests wird die Funktion in eine Systemarchitektur integriert und von Sensorik mit funktionsrelevanten Informationen versorgt. Ziel dieser Abläufe ist es Komponenten-, Funktions- und Verbundfreigaben zu erhalten, um das System zur Auslieferung zu befähigen.
Strategie
Strategie ist das Gegenteil von Zufallstreffer. Sie folgt einem konkreten Plan, um ein Ziel vor dem Umsetzungsstart nach den jeweiligen Gesichtspunkten möglichst optimal zu erreichen. Die Softwareintegration in der Automobilbranche ist ein äußerst komplexer Prozess, der einer zunächst sorgfältig bedachten Strategie bedarf und anschließend einer konsequenten Umsetzung. Es gibt nicht den einen Strategieansatz. Dieser ist viel mehr von den spezifischen Projektanforderungen abhängig. Der nachfolgende Abschnitt befasst sich mit einer Auswahl an Herangehensweisen zur erfolgreichen Softwareintegration und Integrationsprüfung in der Automobilbranche.
Unternehmen stehen vor der Herausforderung, nicht nur die Implementierung neuer Methoden wie Agilität zu ermöglichen, sondern auch sicherzustellen, dass ihre Mitarbeiter entsprechend geschult werden. Dabei ist es von besonderer Bedeutung, bei den Mitarbeitern ein Bewusstsein dafür zu schaffen, dass die Einführung neuer Arbeitsweisen und Technologien Veränderungen mit sich bringt, die einerseits die Unternehmenskultur beeinflussen können. Neue Strukturen, flachere Hierarchien, selbstständiges Arbeiten. Das sind nur drei von vielen Aspekten, die auf die Zusammenarbeit und das Miteinander im Unternehmen Auswirkungen haben können. Andererseits bieten diese Veränderungen jedoch Chancen zur Verbesserung der Leistungsfähigkeit sowohl im Unternehmen als auch im Projektteam.
Automotive SPICE
ASPICE ist ein international anerkannter Standard für die Bewertung und Verbesserung der Softwareentwicklungsprozesse in der Automobilindustrie. ASPICE wurde ab der Jahrtausendwende durch deutsche und internationale Automobilhersteller entwickelt, um die Prozesse in der Softwareentwicklung für die Automobilindustrie zu standardisieren und weiterzuentwickeln. Der Standard basiert auf ISO/IEC 15504 und wurde speziell auf die Anforderungen der Automobilbranche zugeschnitten. ASPICE definiert klare Prozesse für das Management von System- und Softwareanforderungen.

In dem ASPICE Kapitel „SWE.5 Software Integration and Integration Test“ beschreibt der Standard folgenden Zweck: „The purpose of the Software Integration and Integration Test Process is to integrate the software units into larger software items up to a complete integrated software consistent with the software architectural design and to ensure that the software items are tested to provide evidence for compliance of the integrated software items with the software architectural design, including the interfaces between the software units and between the software items.“
Zielsetzung ist:
- Eine Software-Integrationsstrategie, die mit dem Projektplan, dem Freigabeplan und dem Software-Architekturdesign übereinstimmt, wird entwickelt, um die Softwareelemente zu integrieren.
- Eine Teststrategie zur Softwareintegration, einschließlich der Regressionsteststrategie, wird entwickelt, um die Interaktionen zwischen den Softwareeinheiten und Softwareelementen zu testen.
- Eine Spezifikation für den Softwareintegrationstest gemäß der Softwareintegrationsteststrategie wird entwickelt, die geeignet ist, den Nachweis für die Übereinstimmung der integrierten Softwareelemente mit dem Softwarearchitekturdesign zu erbringen, einschließlich der Schnittstellen zwischen den Softwareeinheiten und zwischen den Softwareelementen.
- Softwareeinheiten und Softwareelemente werden gemäß der Integrationsstrategie zu einer vollständigen integrierten Software integriert.
- Die in der Testspezifikation für die Softwareintegration enthaltenen Testfälle werden entsprechend der Softwareintegrationsteststrategie und dem Freigabeplan ausgewählt.
- Die integrierten Softwareelemente werden anhand der ausgewählten Testfälle getestet, die Ergebnisse des Softwareintegrationstests werden aufgezeichnet.
- Konsistenz und bidirektionale Rückverfolgbarkeit werden zwischen den Elementen des Softwarearchitekturdesigns und den in der Softwareintegrationstestspezifikation enthaltenen Testfällen sowie zwischen Testfällen und Testergebnissen hergestellt.
- Die Ergebnisse des Software-Integrationstests werden zusammengefasst und an alle betroffenen Parteien weitergegeben.
(SWE.5 Software Integration and Integration Test, 2023)
Anforderungsmanagement
Das Anforderungsmanagement spielt eine entscheidende Rolle in der Softwareintegration, um sicherzustellen, dass die entwickelte Software die definierten Anforderungen erfüllt. Zu Beginn steht eine klare Dokumentation der Anforderungen an die zu integrierende Software und den jeweiligen Integrationstests. Die kann in Form von Anforderungsspezifikationen, User Stories oder anderen Dokumenten erfolgen. Aufgrund der Vielzahl und Abhängigkeiten der Anforderungen empfiehlt sich die Nutzung von Datenbank basierten Tools wie z.B. Codebeamer und Jira. Das Ziel ist eine klare, transparente Anforderungsdokumentation zu erstellen. Durch eine Traceability-Matrix lässt sich die Verknüpfung zwischen Anforderungen und Integrationstests herstellen. Dies ermöglicht eine klare Änderungsnachverfolgbarkeit und zeigt auf, welche Tests welche Anforderung abdecken. Somit lassen sich übersichtlich Deltas von Anforderungen und der jeweilige Test abbilden und wenn notwendig, nachspezifizieren.

(requirements-traceability-matrix-example, 2023)
Die Anforderungspriorisierung und Integrationstests stellen sicher, dass die kritischsten Anforderungen zuerst behandelt werden. Dies ist besonders wichtig, wenn Zeit und Ressourcen begrenzt sind. Bevor die Integration und die Integrationstests beginnen, ist zu gewährleisten, dass alle relevanten Stakeholder die Anforderungen geprüft und genehmigt haben. Regelmäßige Evaluierungsschleifen garantieren, dass sie immer noch den aktuellen Bedürfnissen und Zielen des Projekts entsprechen und vermeiden in diesem Zusammenhang Blindleistung. In agilen Projekten muss der Abgleich zwischen alter Welt und dem Einfluss neuer Anforderungen zwingend auf Kausalität geprüft werden.
Änderungsmanagement
Die Implementierung von transparenten Prozessen im Änderungsmanagement (ÄM) gewährleistet den systematischen Ansatz, Veränderungen zu planen, umzusetzen und zu steuern. Das Hauptziel dieses Managementprozesses besteht darin, sicherzustellen, dass Veränderungen effizient durchgeführt werden und dabei die Auswirkungen optimiert werden. Das ÄM als solches beschreibt eine breitere Funktion, die den gesamten Prozess des Erstellens, Überprüfens, Evaluierens, Genehmigens, Verfolgens und Überwachens verwaltet. In der Praxis haben sich change control boards (CCB), die sowohl aus Software-Entwicklern, Test-Experten, Qualitäts-Experten, Produkt-Managern, Projektleitung und teilweise auch Stakeholdern bestehen, etabliert. Ziel ist es, die Kausalität während der Softwareintegration zu gewährleisten. Der Nutzen lässt sich wie folgt darstellen.

Rückverfolgbarkeit und Konsistenz
Die Sicherstellung der bidirektionalen Rückverfolgbarkeit und Konsistenz bei der Softwareintegration ist entscheidend, damit Änderungen in verschiedenen Phasen des Softwareentwicklungslebenszyklus verfolgt werden können und alle Komponenten der Software miteinander harmonieren.
Konfigurationsmanagement
Damit alle Softwarekomponenten und Ressourcen ordnungsgemäß verwaltet, versioniert und verfolgt werden können, spielt das Konfigurationsmanagement eine entscheidende Rolle. Hilfreich ist ein solches System, um alle Artefakte der Softwareentwicklung wie Code, Dokumentation und Tests zu versionieren. Ziel soll sein, dass alle Änderungen an den Konfigurationselementen nachvollziehbar sind. Dies trägt dazu bei, dass eine Softwareintegration reibungslos verläuft sowie dass die Tests effizient und effektiv durchgeführt werden können.
Quellcodeverwaltung
Die Versionskontrolle, auch bekannt als Quellcodeverwaltung, nutzt Tools für die Verfolgung von Änderungen oder Bearbeitungen, die im Laufe der Zeit am Quellcode vorgenommen wurden. Die Versionskontrolle ermöglicht eine schnelle und effiziente Zusammenarbeit zwischen Entwicklern bei gleichzeitiger Wahrung der Integrität des Codes, sodass Software-Entwicklungsteams ohne Bedenken hinsichtlich Code-Konflikten arbeiten können. Versionsverwaltungssysteme wie Git (Open Source) ermöglichen die Verwaltung von Änderungen an den verschiedenen Softwarekomponenten. Entwickler können Modifikationen nachverfolgen, zusammenführen und in die gemeinsame Codebasis integrieren. Dies ist besonders wichtig, um Konflikte und Inkonsistenzen während der Integration zu vermeiden. Maßgeblich ist eine umfassende Dokumentation über die Konfiguration der Softwarekomponenten, einschließlich ihrer Abhängigkeiten, Schnittstellen und Konfigurationsparameter. Diese Dokumentation hilft bei der Fehlerbehebung und ermöglicht ein besseres Verständnis der Systemarchitektur und Nachverfolgbarkeit.
Automatisierung
Die Automatisierung des Software Build- und Bereitstellungsprozesses garantiert, dass alle Komponenten in der richtigen Version und Konfiguration zusammengeführt werden. Dies reduziert menschliche Fehler und beschleunigt die Bereitstellung. Außerdem ermöglicht es, Testergebnisse aufgrund von Argumentation oder beispielsweise Hexvergleichen zu übernehmen. Analog empfiehlt sich die Verfahrensweise mit den Testdaten. Das Testdatenmanagement ist Garant, dass Integrationstests konsistent und wiederholbar sind. Testumgebungen, in denen die Integrationstests durchgeführt werden, müssen korrekt konfiguriert sein. Dies umfasst Prüfkriterien, wie Betriebssysteme, Netzwerkeinstellungen, Datenbanken und andere direkt und indirekt abhängige Ressourcen. Notwendig ist außerdem ein Protokoll zu jeder Änderung an der Konfiguration und den Softwarekomponenten. Dies erleichtert die Rückverfolgbarkeit und die Auswertung von Ursachen, wenn Probleme während der Integrationstests auftreten.
Parallelität
Parallele Entwicklung und Integration ist in der Automobilbranche aufgrund der Projektgrößen ein unumgängliches Thema. Hier ist es notwendig, mehrere Entwicklungszweige gleichzeitig zu verfolgen und zu integrieren. Ein gutes Konfigurationsmanagement hilft dabei, diese Parallelität zu unterstützen, indem es die Zusammenführung der verschiedenen Entwicklungszweige koordiniert. Durch die effektive Verwaltung der Konfiguration und der Testumgebungen können Entwicklerteams sicherstellen, dass Integrationstests zuverlässig und reproduzierbar sind. Dies wiederum trägt dazu bei, Softwareprobleme frühzeitig zu erkennen und zu beheben, bevor sie in die Produktion gelangen. Das geschieht in enger Zusammenarbeit mit dem Multiprojektmanagement.
Tool-Unterstützung
Aufgrund der zunehmenden Komplexität ist der Tool- und Automatisierungseinsatz heute ein nicht mehr zu ignorierender Aspekt. Auch in der Automobilbranche hat der Baukasten bzgl. der Software Einzug gehalten. Dies bedeutet, es wird eine Software für einen Baureihenverbund erstellt und die Variablen mit der Bedatung auf das jeweilige Derivat ausgestattet. Um die zunehmende N zu N- Beziehung transparent und kausal halten zu können, empfiehlt sich explizit eine Unterstützung durch Tools in Anspruch zu nehmen. Werkzeuge wie Requirements-Management-Tools, Versionskontrollsysteme und Issue-Tracking-Tools erleichtern es, die Rückverfolgbarkeit und die Lösungsfindung in all ihrer Komplexität transparent gestalten zu können. Der Vorteil dieser Tools liegt in der zunehmenden Vernetzbarkeit zwischen Anforderungsmanagement, Versionskontrolle und Problemmanagement. Sobald Attribute angepasst werden, können hier Verlinkungen die Tragweite eines Problems oder eine Änderung vollständig aufzeigen. Diese Tools müssen jedoch in der Lage sein, auch Sonderprozesse mit vertretbarem Aufwand abseits jeder Generik abbilden zu können. Ansonsten ist der Single Source of Truth Ansatz nicht haltbar und die Transparenz nicht gegeben. Unterschiedlichste, auf KI basierte Ansätze, die sich derzeit in der Entwicklung befinden, versprechen in der Theorie große Potentiale.
Kontinuierliche Integration und Tests
Kontinuierliche Integration und Tests sind in der Automobilbranche von großer Bedeutung, um die Qualität und Zuverlässigkeit von Software-Integrationen zu gewährleisten. Die Automobilindustrie sieht sich mit einer Vielzahl von Herausforderungen konfrontiert, wie die effektive Implementierung der Prinzipien kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD) innerhalb einer komplexen Multi-Projekt-Umgebung von mechatronischen Systemen mit Anbindung von Hardware-Softwareintegrationstests und unter Anwendung diverser Standards und Normen der Branche. Eine zentrale Herausforderung ist die Wiederverwendbarkeit von gemeinsam genutzten Artefakten, wie z.B. wiederverwendbare Anforderungen, Architekturen und Tests, um die Entwicklungszeit und -kosten zu reduzieren und gleichzeitig die Risiken zu minimieren, die mit der Neuentwicklung verbunden sind.

Integration komplexer Hardware- und Softwareprozesse für die Entwicklung autonomer Fahrzeuge, Link: https://www.plm.automation.siemens.com/media/global/de/Siemens%20SW%20Integrating%20complex%20hardware%20and%20software%20processes%20for%20autonomous%20vehicle%20development%20White%20Paper%20-%20German_tcm53-85880.pdf
Stand: 09.11.2023
Es gibt verschiedene Arten von Tests, die in der Automobilbranche durchgeführt werden, um die Qualität und Zuverlässigkeit von Softwarentegrationen zu gewährleisten. Dazu gehören Software-integrationstests, Softwaresystemtests und Softwarehardwareintegrationstests. Automobilsysteme können viele verschiedene Funktionen ausführen, so dass funktionale Regressionstests in der Regel für jede wichtige Funktion oder Änderung erforderlich sind.
Auch hier ist die Empfehlung zur Implementierung einer kontinuierlichen Integrationspipeline (CI/CD), um sicherzustellen, dass alle Code-Änderungen nahtlos in die Software integriert werden. Um Regressionen zu verhindern, empfiehlt es sich, automatisierte Tests zu implementieren.
Rollbacks und Notfallpläne
Auch für den Rollback und für die Notfallpläne beim Umgang mit Integrationsproblemen müssen Strategien definiert sein. Aufgrund der Software-Baukästen und der Derivate übergreifenden Einheitssoftware ist es nur eine Frage der Zeit, bis dieses Thema in den Fokus rückt. Sollte es während der Entwicklung zu Problemen kommen, muss zu jeder Zeit klar sein, ob die Software und Hardware rückwärtskompatibel sind, oder dies zu einem Bruch führt. Die damit verbundenen Auswirkungen auf die parallel stattfindende Entwicklung muss transparent gehandhabt werden und zugleich mit definierten Maßnahmen belegt sein. Auch nach dem SOP (start of production) einzelner Derivate kann es aufgrund von Software-Baukästen übergreifend zu Rollbacks oder zur Inanspruchnahme von Notfallplänen kommen.
Die Strategie sollte das System in die Lage versetzen, im Falle eines Ausfalls von einer Sicherungskopie zu booten oder zu einer früheren Version zurückzukehren, wenn es Probleme mit neueren Versionen gibt.
Automatisieren oder nicht?
Die Empfehlung heißt eindeutig: ja. Dazu gehören Unit-Tests, Integrationstests, Build-Skripte, Release-Management usw. Automatisieren Sie so viel wie möglich, damit Änderungen automatisch getestet und so schnell wie möglich eingeführt werden können. Allerdings müssen die Kosten der Testautomatisierung stets im Auge behalten werden. Die Einführung der Automatisierung soll nicht erst mit einem ausgereiften Stück Software gestartet werden, sondern bereits mit den ersten Engineering Drops und in der Teststrategie als Bestandteil der Definition of Done hinterlegt sein. Als goldene Regel kann hier die branchenunabhängige Testpyramide herangezogen werden.

Die beiden unteren Stufen der Pyramide sind prädestiniert zur Automatisierung. Je höher die Stufe desto gründlicher muss eine Automatisierung aus Kostengründen geprüft werden. Hier ist es ggf. möglich, dass der Faktor Mensch, also Ingenieure – Stand heute – dies billiger, schneller und effizienter leisten können.
Ein weiterer Ansatz, der auf der Testpyramide aufbaut, ist der „Links shift“.

Die Grundintention ist die gleiche wie zuvor, jedoch wird hier so früh und umfangreich wie möglich getestet. Unit-Tests, Unit-Integrationstests, Komponententests, Systemtests sind abgeschlossen, bevor das Auto in die Bauphase geht. Ziel ist es, auch hier den Grad der Automatisierung möglichst hoch anzusetzen.
Kommunikation
Schlechte Kommunikation bedeutet Blindflug und erhöht den Grad der Blindleistung. Die Förderung von Kommunikation und Zusammenarbeit in den Entwicklungsbereichen hat hohe Priorität. Dies gilt in unserem Fokus speziell für die Entwicklungsteams, die die Softwarekomponenten erstellen, und die Testteams, die die Integrationstests durchführen. So werden Missverständnisse minimiert und die Integration reibungsloser gestaltet (Nutzung der Traceability Matrix). Der oft viel belächelte Satz: „Wer schreibt, der bleibt.“, trifft auch auf die Dokumentation der Integrationstests zu und bestätigt in diesem Zusammenhang die Abdeckung der Anforderungen an Integrationstests. Die Testfälle müssen auf die spezifischen Integrationsszenarien und Anforderungen zugeschnitten sein, da ansonsten die Aussagefähigkeit nicht vollumfänglich gewährleistet ist. Hier kann es hilfreich sein, auf Testautomatisierungswerkzeuge zurückzugreifen. Das steigert in vielen Fällen die Effizienz, Reproduzierbarkeit und darüber hinaus die Nachverfolgbarkeit der Testergebnisse. Zum einen geben die Verfolgung und Berichterstattung Auskunft über den Fortschrift, zum anderen informieren diese über die Anforderungsabweichungen und deren Behebung.
Aufgrund der Komplexität und der Ausmaße der Projekte sind klare Berichtswege erforderlich, um das nachstehende Netzwerk synchron zu halten.

Schulungen
Entwicklungsteams benötigen kontinuierliche Schulungen, in denen Best Practices zur Softwareintegration erarbeitet werden, sodass alle Teammitglieder auf dem gleichen Stand sind. Ziel ist es zu lernen, wie die Änderungen und Integrationsfortschritte transparent und rhythmisch in den relevanten Teams und Bereichen gehandhabt werden. Silowissen, Erkenntnisse nicht transparent zu gestalten oder zu teilen, ist in der zunehmend komplexen Welt nicht mehr ausreichend. Es erfordert einen Blick über den Tellerrand, um den eigenen Horizont zu erweitern und zu teilen sowie „out of the box“ Denkansätze zulassen zu können. Diese Themenfelder und die damit verbundenen Transfers sollten jedem bekannt sein und in letzter Instanz auch angewendet werden.
Fazit: Ein letzter Gedanke zur Softwareentwicklung in der Automobilindustrie mit speziellem Fokus auf das autonome Fahren: Es geht nicht nur um das Schreiben des Codes! Die Softwareentwicklung ist ein zunehmend einnehmender Teil des Multiprojektmanagements auf dem Weg zum autonomen Fahrzeug, die wichtigen Aspekte wie Anforderungsdefinition und -management, Design, Codierung, Unit- und Integrationstests usw. umfasst. Die besten Softwareprojekte für die Automobilindustrie umfassen ein engagiertes Team von Fachleuten, die über das notwendige Fachwissen und die technische Kompetenz verfügen, um den gesamten Softwareentwicklungsprozess zu betreuen – vom Konzept bis zur Bereitstellung. [bu:st] verfolgt den Ansatz: Transparenz, Rhythmus und Kommunikation. Dies sind Prämissen für den ersten Schritt zum Erfolg.
Literaturverzeichnis:
- requirements-traceability-matrix-example. (15. 11 2023). Von http://info.itemis.com/hubfs/Blog/YAKINDU%20Traceability/requirements-traceability-matrix-example.png abgerufen
- SWE.5 Software Integration and Integration Test. (15. 11 2023). Von https://www.flecsim.de/images/download/AutomotiveSpiceShortened/Automotive%20Spice%203.1/SWE.5.html abgerufen
Erfahren Sie mehr über uns – Ihr Ansprechpartner:
Dominique Widmann
E-Mail: dominique.widmann@bu-st.de