Wie oft, wenn überhaupt, wurde die "Software" im Shuttle-Orbiter aktualisiert?

Es dämmerte mir, dass die tragische STS-107-Katastrophe von (meinem Lieblingsshuttle) Columbia nach mehr als 20 Dienstjahren stattfand.

Computer im Jahr 1981 waren natürlich deutlich schlechter als das, was ich 2003 in meinem Telefon hatte. Ich stelle mir unseren alten Tandy 1000 aus den 1980er Jahren mit 640.000 Speicher vor, der 2003 immer noch ein unglaubliches Raumschiff bediente.

Ich bin mir nicht sicher, welche Software in den Shuttle Orbitern war, aber wurde sie aktualisiert? Und gab es strenge Tests, um Softwareabstürze zu vermeiden?

Hoffentlich kann jemand mit besseren Kenntnissen antworten. Es gab rund 126 Updates für die Shuttle-Software. Es wird weithin als die am besten verstandene Software der Welt angesehen. Es gab einige Artikel zu diesem Thema: fastcompany.com/28121/they-write-right-stuff nap.edu/openbook.php?record_id=5018&page=9 Hoffentlich helfen diese
Die Daten wurden natürlich bei jedem Flug geändert.

Antworten (1)

„Rigorose Tests“ beschreiben nicht annähernd den Prozess, der verwendet wird, um sicherzustellen, dass die Shuttle-Software keine Fehler enthält. Dieser umfangreiche Artikel beschreibt, wie der Prozess funktioniert .
Ein paar markante Punkte:

  • Die Shuttle-Software besteht aus ca. 420.000 Zeilen. Die Gesamtzahl der Fehler bewegt sich um 1 herum. An einem Punkt um 1996 herum bauten sie 11 Versionen des Codes mit insgesamt 17 Fehlern. Kommerzielle Programme ähnlicher Komplexität hätten Tausende von Fehlern.
  • Der Prozess des Schreibens der Software ist mehr als akribisch. Sie brauchten ein Update der GPS-Software (6300 Codezeilen). Bevor am Code gearbeitet wurde, schrieben sie eine 2.500-seitige Spezifikation, in der die erforderlichen Änderungen detailliert beschrieben wurden.
  • Jede Änderung am Code wird dokumentiert.

... die Geschichte des Codes selbst – mit jeder Zeile kommentiert, zeigt jedes Mal, wenn sie geändert wurde, warum sie geändert wurde, wann sie geändert wurde, was der Zweck der Änderung war, welche Spezifikationen die Änderung detailliert dokumentieren. Alles, was mit dem Programm passiert, wird in seiner Master-Historie aufgezeichnet. Die Genealogie jeder Codezeile – der Grund, warum es so ist, wie es ist – ist sofort für jeden verfügbar.

  • Jeder Fehler wird ausführlich analysiert:

Für jeden dieser Fehler zeichnet die Datenbank auf, wann der Fehler entdeckt wurde; Welcher Satz von Befehlen hat den Fehler aufgedeckt; wer hat es entdeckt; welche Aktivität vor sich ging, als es entdeckt wurde – Tests, Training oder Flug. Es verfolgt, wie der Fehler in das Programm eingeführt wurde; wie es dem Fehler gelang, an den Filtern vorbeizuschlüpfen, die in jeder Phase eingerichtet wurden, um Fehler zu erkennen – warum wurde er nicht während des Entwurfs erkannt? bei Entwicklungsprüfungen? während der Überprüfung? Schließlich zeichnet die Datenbank auf, wie der Fehler behoben wurde und ob möglicherweise ähnliche Fehler durch dieselben Löcher geschlüpft sind.

  • Alles, was der Softwarekonzern tut, ist in Prozesse strukturiert, und jeder Fehler ist ein Anlass, diese Prozesse zu überprüfen und zu verbessern:

Wie schreiben sie die richtigen Sachen?

Die Antwort ist, es ist der Prozess. Die wichtigste Kreation der Gruppe ist nicht die perfekte Software, die sie schreiben – es ist der Prozess, den sie erfunden haben, der die perfekte Software schreibt.
...
Beheben Sie nicht nur die Fehler – beheben Sie, was den Fehler überhaupt erst zugelassen hat. Der Prozess ist so allgegenwärtig, dass er für jeden Fehler verantwortlich gemacht wird – wenn es einen Fehler in der Software gibt, muss etwas mit der Art und Weise, wie sie geschrieben wurde, falsch sein, etwas, das korrigiert werden kann. Jeder Fehler, der in der Planungsphase nicht gefunden wurde, ist zumindest einigen Kontrollen entgangen. Wieso den? Stimmt etwas mit dem Inspektionsprozess nicht? Muss eine Frage zu einer Checkliste hinzugefügt werden?

Daher wird die Shuttle-Software nach den höchsten Standards der Welt geschrieben. Und das ist nur eine Ebene des Systems, das die NASA entwickelt hat, um zu verhindern, dass die Steuercomputer Probleme verursachen.

Das Shuttle wird von 5 AP-101 Allzweckcomputern gesteuert . Nach einem Upgrade im Jahr 1991 hatten sie 1 MB Speicher und liefen mit 1,4 MIPS. Aber sie sind wie ein Panzer gebaut: Jeder wiegt 64 Pfund. Es wurde entwickelt, um jahrelang ohne Abstürze zu laufen. Seine Speicherschaltkreise können durch Strahlung beschädigte Speicherzellen erkennen und verhindern, dass die beschädigten Daten verwendet werden.

Eine Softwareänderung durchläuft normalerweise etwa neun Monate interne Simulatortests und dann weitere sechs Monate Tests in einem einzigartigen NASA-Labor, bevor sie für den Flug zugelassen wird. Die Ergebnisse des anstrengenden Testprogramms? Nun, es ist 24 Jahre her, seit ein Softwareproblem das letzte Mal während einer Mission im Orbit behoben werden musste. In den letzten 12 Jahren sind während eines Fluges nur drei Softwarefehler aufgetreten. Aber die vielleicht aussagekräftigste Statistik ist, dass ein Softwarefehler noch nie die Crew, das Shuttle oder den Erfolg einer Mission gefährdet hat.

Jeder der 5 GPCs kann das Shuttle bei Bedarf alleine steuern .

Fünf IBM-Computer – von denen vier in einer redundanten Konfiguration angeordnet waren, wobei ein fünfter Computer als Backup-Einheit fungierte – ermöglichten es, frühe Shuttle-Missionen fortzusetzen, selbst wenn mehrere Ausfälle aufgetreten waren. Die Computer überprüften sich gegenseitig mehr als 500 Mal pro Sekunde.

Auf den 4 redundanten Computern läuft das PASS (Primary Avionics Software System). Auf dem fünften Computer läuft ein völlig separates Programm, das BFS (Backup Flight Control System). Es hat die gleichen Funktionen wie der PASS, wird aber von einer anderen Gruppe geschrieben und gepflegt. Dies fügt eine weitere Sicherheitsebene hinzu: Ein Fehler kann nicht alle 5 Computer gleichzeitig betreffen.

Auf dem Shuttle würden vier identische AP-101B während kritischer Missionsphasen wie Aufstieg und Wiedereintritt gleichzeitig als vierfach redundanter Satz fungieren und dieselben Informationen, die von vollständig getrennten Datenbussen stammen, in präziser Synchronisation verarbeiten. Wenn zwischen den vier primären Computern ein Konflikt auftauchte, entschied die Mehrheit und wählte die konfliktbehaftete Einheit aus der Schleife. Keiner der Computer, einzeln oder massenhaft, konnte einen anderen ausschalten – dieser Schritt blieb der Crew überlassen.

Um sicherzustellen, dass das BFS so unabhängig wie möglich war, beauftragte die NASA Rockwell damit, es zu schreiben, und es wurden sogar verschiedene Entwicklungsumgebungen und Konfigurationsverwaltungssysteme spezifiziert.

Die Software ist in der HAL/S-Sprache geschrieben , die speziell für die Verwendung in der Luft- und Raumfahrt entwickelt wurde.

Die drei Schlüsselprinzipien bei der Gestaltung der Sprache waren Zuverlässigkeit, Effizienz und Maschinenunabhängigkeit. Die Sprache ist so konzipiert, dass Aufgaben im Zusammenhang mit der Luft- und Raumfahrt (wie Vektor-/Matrix-Arithmetik) auf eine Weise ausgeführt werden können, die von Personen leicht verständlich ist, die über Raumfahrtkenntnisse verfügen, aber möglicherweise nicht unbedingt über Kenntnisse in der Computerprogrammierung verfügen.

HAL/S wurde so konzipiert, dass einige Konstrukte, von denen angenommen wird, dass sie die Ursache von Fehlern sind, nicht enthalten sind. Beispielsweise gibt es keine Unterstützung für die dynamische Speicherzuweisung. Die Sprache bietet spezielle Unterstützung für Echtzeit-Ausführungsumgebungen.

Das ist natürlich nicht billig :

In einer Branche, in der die durchschnittliche Codezeile die Regierung (zum Zeitpunkt des Berichts) ungefähr 50 US-Dollar (geschrieben, dokumentiert und getestet) kostete, kostete die Primary Avionics System Software der NASA etwas mehr als 1.000 US- Dollar pro Zeile. Insgesamt wurden 500 Millionen US- Dollar für die anfängliche Entwicklung und den Support von PASS an IBM gezahlt.

Wenn Sie mehr wissen wollen:

Sehr ausführlich!!
Können wir es auf GitHub forken?
Aufgrund der ITAR-Bestimmungen ist es unwahrscheinlich, dass die Software jemals veröffentlicht wird. Und Sie benötigen einen IBM System/360-kompatiblen Computer, um es auszuführen.
Es könnte sich lohnen, hinzuzufügen, dass diese Strenge einen sehr hohen Preis hatte: eine Codezeile pro Programmierer pro Tag.
Diese Antwort befasst sich mit dem Teil "rigorose Tests" der Frage, aber ich sehe nicht wirklich, wie sie den anderen Teil (der auch die Titelfrage ist) anspricht, wie oft die Software aktualisiert wurde (es heißt nur, dass die Software erhalten hat Änderungen).
Ich habe die Anzahl der Veröffentlichungen hinzugefügt (letzter Absatz).
slideshare.net/JamesOrr4/… hat eine Folie auf Seite 16 mit den OI-to-Flight-Mappings. Aus dieser Tabelle geht hervor, dass bei jeder Mission ein anderer Code geflogen ist. Wenn ich es richtig lese UND diese Daten korrekt sind.
Ich habe von 1989 bis 1995 an der PASS-Software gearbeitet. Die Antwort ist genau. Der Prozess wurde als CMM-5 (Optimierung) zertifiziert. Das Team, in dem ich war, hatte wöchentliche Meetings zur Prozessverbesserung. Alles wurde überprüft, alle Probleme/Bugs wurden einer Ursachenanalyse unterzogen. Checklisten wurden modifiziert, um ähnliche Fehler in der Zukunft abzufangen. Keine interaktiven Debugger. Kompilierung und Testläufe erfolgten im Batch. Builds wurden einmal wöchentlich gemacht. Es gab immer eine lange Warteschlange, um das Testszenario einzurichten und auszuführen. Ich habe noch nie eine andere Entwicklungsumgebung gesehen, die ähnlich war. Der SW-Entwicklungsprozess ist proprietär.
Ich kann bezeugen, ich arbeite bei einem Fortune-100-Unternehmen, in einem System hatten wir während seiner gesamten Lebensdauer nicht weniger als 142 Defekte. Sie fragen, sogar von Geburt an? Ja. Als es entworfen wurde, übernahm es die Einschränkungen der vorherigen Implementierung ... Die NASA muss im Bereich des Testens gottesfürchtig sein, um eine so niedrige Grenze wie diese zu erreichen. Vor allem, wenn sie auf die gleiche Weise arbeiten und frühere Implementierungen so sauber wie ihre neuesten sind.
Die Anzahl der Fehler muss in Relation zur Komplexität der Software stehen oder ist bedeutungslos. Die NASA hat keinen Code geschrieben oder Tests auf niedrigerer Ebene durchgeführt.
„Jede Änderung am Code wird dokumentiert.“, also nutzten sie 1996 einen Source Control Manager, besser als „Nur Weicheier nutzen Bandsicherung. ECHTE Männer laden einfach ihre wichtigen Sachen auf FTP hoch und lassen den Rest der Welt sie spiegeln“, aber kaum ein Beweis für strenge Standards.
Siehe auch wired.com/2004/12/linux-fewer-bugs-than-rivals , das angemessen 70 Fehler für die gleiche Anzahl von Codezeilen hätte, mit IMO mehr Komplexität. Um weder ihre Fähigkeiten noch ihren Prozess zu beeinträchtigen, aber obwohl er mehr „Bugs“ hatte, bin ich mehr beeindruckt von Knuth (berühmt für TeX) und Linux als Produkt.
@jmoreno Ein Quellcodeverwaltungsmanager bietet keinen Einblick, warum der Code geändert wurde. Es zeichnet nur auf, dass der Code geändert wurde.
Das sind Richtlinien und Verfahren, keine Software kann aussagekräftige Kommentare oder Dokumentationen erzwingen. Mein Punkt ist, dass die Verwendung eines SCM und aussagekräftiger Commit-Nachrichten weder die Programmierer noch den Prozess zu etwas Besonderem macht. Eine Spezifikation von 2.500 Seiten ist außergewöhnlich und mehr als akribisch, aber ich bin mir nicht sicher, ob sie von Vorteil ist, selbst wenn Geld und Leben auf dem Spiel stehen. Ich hätte lieber mehr Tests als mehr Spezifikationen.