Wie wird die Software für wissenschaftliche Weltraummissionen entwickelt?

Die Flugsteuerungssoftware für das Space Shuttle wurde nach den strengsten Standards entwickelt , die heute existieren. Sie unternahmen enorme Anstrengungen, um zu verhindern, dass Bugs jemals die Mission und/oder die Crew bedrohen. Die enormen Kosten der Software lassen es mir unwahrscheinlich erscheinen, dass dieses Verfahren routinemäßig für wissenschaftliche Weltraummissionen verwendet wird.

Bei wissenschaftlichen Satelliten und Weltraumsonden haben Sie ein ähnliches Problem (allerdings ohne das Leben-auf-dem-Einsatz-Element): Sie haben eine Chance, Ihre Beobachtungen durchzuführen (z. Flaggschiff-Missionen) und keine Möglichkeit zur Reparatur oder Wiederherstellung.

Dennoch habe ich den Eindruck, dass wissenschaftliche Raumfahrzeuge hauptsächlich vom Wissenschaftsteam entwickelt werden, dh von Wissenschaftlern, nicht etwa von Spezialisten für die Entwicklung von Hochverfügbarkeitssoftware.
Stimmt dieser Eindruck?
Und welche Methoden werden eingesetzt, um das Risiko von Softwareausfällen bei Wissenschaftsmissionen zu reduzieren?

Der Grund, warum ich speziell nach wissenschaftlichen Weltraummissionen frage: Kommerzielle Missionen nutzen oft die Vorteile der Serienproduktion, damit die Kosten verteilt werden können, und die Menge an neuen Funktionen bei einer durchschnittlichen kommerziellen Mission ist gering. Auch diese Einsätze können versichert werden. Wissenschaftliche Weltraummissionen sind in der Regel unversicherte einmalige Aktionen.

Antworten (3)

Nein, wissenschaftliche Raumfahrzeuge werden nicht von Wissenschaftlern des Wissenschaftsteams entwickelt. Sie entwickeln vielleicht ihre Instrumente, aber nicht das Raumschiff. Die Raumfahrzeuge werden von professionellen Raumfahrzeugingenieuren in der Regierung oder Industrie entwickelt.

Die Software-Ingenieure sind in Software-Engineering und insbesondere in hochzuverlässiger Echtzeit-Software ausgebildet. Es gibt eine Reihe von Regeln und Verifizierungsansätzen, die verwendet werden, um hochzuverlässige Software zu entwickeln, und es gibt umfangreiche Softwaretests sowohl in Softwaretestumgebungen als auch auf der Hardware des Raumfahrzeugs.

Sie können den JPL C-Codierungsstandard als Beispiel für ein solches Regelwerk lesen . Diese Regeln wurden vom Labor für zuverlässige Software des JPL erstellt, das speziell eingerichtet wurde, um die Zuverlässigkeit kritischer Software bei einmaligen wissenschaftlichen Missionen zu verbessern. Es wurde von Gerard Holzmann geleitet , einem Experten für die automatische Überprüfung der Korrektheit von Software.

Der Link zum JPL C-Codierungsstandard ist im Jahr 2020 außer Betrieb. Ich habe einen anderen Link gefunden , wahrscheinlich zu diesem Standard.
@PeterNazarenko Danke. Link korrigiert. Habe noch einen entfernt. Gerard ist nicht mehr bei JPL.
Der JPL C-Codierungsstandard wurde von jemandem oder mehreren Personen geschrieben, die sich mit dieser Art von Dokumenten sehr gut auskennen: Er gibt nicht nur die Regel, sondern auch das Warum in einfacher Sprache an. Es macht sogar Spaß, es zu lesen.

Ich möchte hinzufügen, dass, obwohl die Raumfahrzeugsoftware nicht von Wissenschaftlern entwickelt wird, es nicht ungewöhnlich ist, dass die Wissenschaftler (zumindest teilweise) Nachbearbeitungssoftware für das Raumfahrzeug entwickeln, das auf dem Boden läuft. Diese Software ist zwar wichtig, erfordert jedoch nicht das gleiche Maß an Codierungsstandards wie Bodensoftware. Dennoch werden Softwareentwickler die schwierigeren Teile des Codes schreiben, was es den Wissenschaftlern im Wesentlichen überlässt, vorhandene Tools zusammenzusetzen, um die Bilder genau wie gewünscht nachzubearbeiten.

Über Softwaretests:

Die auf Ariane verwendete ESA-Software (insbesondere von Frankreich entwickelt) wurde (ist?) in ADA geschrieben ; Diese Sprache stützt sich stark auf Wertebereiche . Zum Beispiel deklarieren Sie nicht nur eine ganze Zahl, Sie müssen angeben, ob es sich um positive ganze Zahlen handelt und wie hoch sie gehen können. Und eine Ausnahme wird ausgelöst, wenn die Werte die untere oder obere Grenze erreichen.

Es klingt albern, aber es ermöglicht Ihnen, ein vollständiges mathematisches Modell zum Testen und Erweisen von Software zu entwickeln .

Mit anderen Worten: Sie können damit beginnen, Ihre Software auf automatisierte Weise intensiv zu testen, und für das, was Sie nicht automatisch testen können, kommt die Mathematik zur Rettung.

Das verhinderte jedoch nicht den Fehler bei Ariane 5, der speziell wegen eines Fehlers im zulässigen Wertebereich vom Kurs abkam.

Über Softwarebeschädigung:

Ich weiß nicht, welche Methoden sie verwenden, um mit Code-Redundanzfehlern umzugehen (verursacht durch starke Magnetfelder / Strahlungen / etc.), aber ich weiß, dass dies ein weiteres riesiges Forschungsgebiet ist.

Die ESA ist keine französische Organisation, sie ist europäisch. Siehe Wikipedia .
Ich weiss. Der auf die Software angewendete "Schrägstrich". Die Software ist oder war früher französisch/europäisch, wie in : hauptsächlich von Franzosen als Teil einer europäischen Organisation entwickelt.
Eine Ariane-V-Trägerrakete kam jedoch aufgrund eines Softwarefehlers im in Ada geschriebenen Code vom Kurs ab und explodierte . Weder Ada noch irgendeine Sprache sind ein Allheilmittel für Softwarefehler. Übrigens, soweit ich weiß, verwendet niemand außer Projekten des US-Verteidigungsministeriums Ada mehr.
Ich habe einfach die gestellte Frage beantwortet: "Wie wird die Software für den Weltraum entwickelt?" --> Durch die Verwendung restriktiverer Programmiersprachen und einiger erweiterter Tools (Mathematik und so).