Software-Entwicklung: Warum Rust gut für das Auto ist

In Fahrzeugen verwendete Software muss stabil und sicher sein. Gastautor Michael Fait von Thoughtworks plädiert deshalb dafür, auf Rust zu setzen.

Eingebaute Navigationssysteme, Fahrassistenzsysteme, Software-basierte Fehlerdiagnostik, ein eigenes Betriebssystem im Auto: Fahrzeuge gleichen zunehmend rollenden Computern. Die Transformation hin zu Software-Defined Vehicles (SDV) ist in vollem Gange und wird sich zukünftig im Hinblick auf autonomes Fahren noch beschleunigen. SDV bedeutet, dass Software maßgeblich die Funktionalität des Autos bestimmt und dadurch zum differenzierenden Faktor wird.

Das allerdings bringt neue Risiken mit sich. Wo bislang häufig menschliche Fehler ausschlaggebend waren, können nun technische Ausfälle zu Unfällen führen. So verursachte etwa vor kurzem eine fehlgeleitete automatische Bremsung einen Zusammenstoß mehrerer Autos mitten in einem Tunnel. Ein Stück weit vertrauen wir unser Leben also der Technologie an. Um uns bestmöglich zu schützen, muss die Software daher genau so sicher und stabil konstruiert sein wie die Hardware.

Doch auf welche Programmiersprache setzt man dafür am sinnvollsten? C und C++ haben den Markt lange dominiert, auch ein Großteil der Automotive-Software ist in dieser Sprache geschrieben. Allerdings haben sich zuletzt einige prominente Akteure für eine Alternative ausgesprochen: Rust. Volvo etwa setzt als einer der ersten Autohersteller bereits in der Entwicklung darauf.

Sicher fühlen mit Rust im Auto

Rust hat in den letzten Jahren ob dessen Sicherheit und Leistungsfähigkeit an Popularität gewonnen. Allerdings fehlten bislang zertifizierte Rust-Toolchains für Anwendungen in sicherheitskritischen Märkten wie der Automobilindustrie. Diese Lücke schließt nun eine Rust-Compiler-Toolchain: Das Ferrocene-Projekt verspricht, die ISO 26262-Norm für funktionale Sicherheit für elektronische Systeme in Straßenfahrzeugen zu erfüllen.

Doch warum ist überhaupt eine neue Programmiersprache für die Anforderungen des automatisierten Fahrens notwendig? Jüngste Daten zeigen, dass die meisten kritischen Laufzeitfehler bei C mit der Speichersicherheit und Data Races zusammenhängen. Letztere treten auf, wenn zwei oder mehr Threads versuchen, einen Speicherplatz ohne geeigneten Synchronisationsmechanismus gleichzeitig zu aktualisieren. Die Krux: Während der Softwareentwicklung selbst sind diese kaum zu erkennen. Das führt dazu, dass Sicherheitsprobleme erst nach dem Release in der Fahrpraxis auftauchen und nachträglich behoben werden müssen. Diese Wartungen und Nacharbeiten verursachen zusätzliche Kosten.

Ein weiterer negativer Effekt: Die Produkt-Teams sind mit Ausbesserungen beschäftigt, anstatt neue Funktionen zu entwickeln. Dadurch können sie die Zeit bis zur Markteinführung nicht verkürzen.

Wenn Rust das Auto zusammenhält

Rust ist von Grund auf als sichere Programmiersprache konzipiert. Das bringt diverse Vorteile mit sich, unter anderem:

  • Verlässlichkeit
    Rust schafft statische Speichersicherheit. Eingebaute Funktionen vermeiden häufige Programmierfehler, die etwa zu Sicherheitslücken führen können. Jeder Softwarefehler weniger ist ein Schritt zu einem sicheren Fahrgefühl.
  • Leistung
    Rust ist eine hochperformante Sprache, sie kann Code schnell und effizient ausführen. Das ist in Fahrzeugen besonders wichtig, da hier schnelle Reaktionszeiten über das Wohlergehen der Verkehrsteilnehmer entscheiden können.
  • Sichere Nebenläufigkeit
    Das von Rust definierte Ownership Based Resource Management (OBRM)-Modell verhindert Data Races.
  • Sprache und Werkzeuge
    Rust bringt eine Reihe moderner Sprachmerkmale und integrierter Werkzeuge mit, die es ermöglichen, effizienten Code zu schreiben. Die eingebauten Tools fördern zudem eine testgetriebene Entwicklung und ein hohes Maß an Automatisierung während des Entwicklungsprozesses.
  • Gemeinschaft
    Rust hat eine starke Entwickler-Community, was zu einem ständig wachsenden Ökosystem führt.

Darüber hinaus ist Rust interoperabel mit C/C++ – so können Autohersteller ihre bestehenden Projekte mit Rust weiterentwickeln. AUTOSAR und SOAFEE, Verbände für autonomes Fahren, sehen ebenfalls das Potenzial von Rust und haben bereits Rust-Arbeitsgruppen gebildet. Sie prüfen, inwiefern Rust für den Einsatz in Middleware und Systemsoftware geeignet ist.

Mit Sicherheit in die Zukunft des SDV

 Aufgrund seiner zahlreichen Vorteile ist Rust eine vielversprechende Wahl für den Einsatz in der Automobilindustrie. Mit der Weiterentwicklung der Software für SDVs wird die Programmiersprache wahrscheinlich noch attraktiver werden. Durch den Fokus auf Sicherheit ist Rust besonders geeignet für den Einsatz in sicherheitskritischen Systemen. Darunter fällt unter anderem Software für autonomes Fahren.

Autohersteller haben zahlreiche Herausforderungen, wenn sie ihre Software hausintern entwickeln: Zum einen benötigen sie Fachkräfte, die moderne Funktionen und Schnittstellen programmieren können. Zum anderen müssen sie in die Entwicklung neue Technologien einbeziehen, die bislang keine oder wenig Relevanz hatten, z.B. Kamera- und Sensortechnik. Darüber hinaus erfordert die Software-Entwicklung agilere Strukturen als viele Hersteller derzeit aufweisen.

Rust senkt Wartungskosten

Erfüllen sie allerdings all diese Voraussetzungen und setzen auf Rust, können sie sich darauf verlassen, dass ihre Software zuverlässiger und sicherer ist als bislang. Mit Rust programmierte Software kann zudem helfen, die Wartungskosten nach der Veröffentlichung zu senken. Außerdem können sich ob des geringeren Wartungsaufwands die Produkt-Teams darauf fokussieren, neue Funktionen zu entwickeln statt bestehende zum Laufen zu bringen. Das verkürzt letztlich die Zeit bis zur Markteinführung.

Insgesamt hilft Rust also, die Gesamtqualität und -leistung von Fahrzeugen zu verbessern, die Entwicklungseffizienz zu steigern und die Markteinführungen neuer Funktionen zu beschleunigen. Damit können sich Hersteller in einem hart umkämpften Automarkt einen echten Wettbewerbsvorteil verschaffen.

 

Michael Fait

ist Softwareentwickler, Hauptberater und Leiter Software-Defined Vehicle bei Thoughtworks Deutschland. Seit 2018 konzentriert er sich  auf die Entwicklung von In-Vehicle-Software.