Welcher Art waren die bekannten Fehler in der Space-Shuttle-Software?

In anderen Beiträgen wurde behauptet oder angedeutet , dass während der gesamten Geschichte des Space Shuttles nur ein Softwarefehler den Entwicklungs- und Überprüfungsprozess tatsächlich überlebt und es zum Flug geschafft hat. Auch wenn die Behauptung von nur einem Fehler eine urbane Legende ist, war die Anzahl der Fehler weitaus geringer als bei kommerzieller Software, und das ist ein Beweis für die Sorgfalt der Shuttle-Softwareentwickler.

Welcher Art waren die Fehler in der Shuttle-Software?

  • Welche Flugphase (z. B. Start, Wiedereintritt) war betroffen?
  • Welche Shuttle-Systeme waren beteiligt?
  • Was sollte das normale Verhalten sein?
  • Was hat der Fehler gemacht?
  • Ist während einer Mission tatsächlich ein unerwünschtes Verhalten aufgetreten?
Falsche Prämisse. Mehr als ein Käfer flog. Bei einer der letzten 10 Missionen trat während des Fluges ein FSW-Problem auf. (Nicht zu Hause, kann also jetzt nicht genauer sein) Auch ein Lambert-Targeting-Fehler. Mir fallen mehrere ohne Forschung ein.
@OrganicMarble: Wie könnte man die Frage dann besser formulieren?
Lass es nicht so klingen, als gäbe es nur einen,
In einer der verlinkten Antworten sagte ich: "Die Gesamtzahl der Fehler bewegt sich um 1. An einem Punkt um 1996 herum bauten sie 11 Versionen des Codes mit insgesamt 17 Fehlern. " dh jeweils ein bekannter Fehler, nicht einer insgesamt für das ganze Programm.
Die erste verknüpfte Antwort besagt nie, dass nur ein Fehler geflogen war. Es heißt, sie glauben, dass es nur einen SEV-1-Fehler gab. Und es heißt, sie wissen, dass sie persönlich einen Fehler eingeführt haben.
Danke, dass Sie sich an den Shuttle Mission Simulator erinnern. Ich habe am Anfang daran gearbeitet und arbeite jetzt an der Space Station Training Facility, immer noch in Bldg 5. Es hat auch FSW-Bugs vor dem Flug gefunden. Flugsimulatoren und Integrationslabore spielen eine große Rolle bei der Erkennung von Problemen vor dem Flug.
Ich würde vorschlagen "Es wurde behauptet".

Antworten (2)

Obwohl die Flugsoftware des Space Shuttles von hervorragender Qualität war, ist es völlig falsch zu glauben, dass es nur einen Fehler gab. Es gab viele bekannte Fehler in der Flugsoftware (FSW). Hier sind drei, die mir spontan einfallen, die Missionen beeinflusst haben.

  1. Die Flugkampagne des Shuttle-Programms begann mit einem peinlichen Softwarefehler! Der allererste Startversuch wurde geschrubbt, als der Computer der Backup Flight Software (BFS) sich weigerte, sich mit den vier Computern des Primary Avionics Software System (PASS) zu synchronisieren. Details in "The Bug Heard Round the World" hier .

  2. Der Erstflug der Raumfähre Endeavour (STS-49) war aus vielen Gründen voller Action. Zum einen wurde ein Fehler in der Lambert-Targeting-Software gefunden, die zur Berechnung der Rendezvous-Parameter verwendet wird. Die Berechnung konnte nicht konvergieren

    aufgrund einer Nichtübereinstimmung zwischen der Genauigkeit der Zustandsvektorvariablen, die die Position und Geschwindigkeit des Shuttles beschreiben, und den Grenzen, die zum Begrenzen der Berechnung verwendet werden

    ( Quelle ) (Dieses Papier spricht über zusätzliche Shuttle-FSW-Fehler)

    Zusätzliche Einzelheiten zu den Missionsauswirkungen des Lambert-Softwareproblems und Diskussion anderer FSW-Fehler, die sich auf Rendezvous-Missionen auswirken, finden Sie hier

  3. Noch als STS-126 im Jahr 2008 tauchte ein neuer Fehler in der OI-33-Softwareversion auf. Nach dem Abschalten des Haupttriebwerks taten dies zwei Kommunikationssysteme, die automatisch von ihrer Start- in die Umlaufbahnkonfiguration wechseln sollten, aufgrund eines Codierungsfehlers nicht.

    Die primäre Kommunikation verwendete weiterhin S-Band-Frequenzen, nachdem sie auf das leistungsstärkere Ku-Band hätte wechseln sollen. Die Verbindung zwischen dem Shuttle und seiner Nutzlast – der Payload Signal Processor (PSP) – blieb für eine Funkverbindung konfiguriert, anstatt automatisch auf die festverdrahtete Nabelverbindung umzuschalten.

    Alle Einzelheiten zu diesem Problem, die Sie sich wünschen, finden Sie hier .

Mehrere andere Fehler tauchten im Shuttle Mission Simulator Training auf. Sie wurden dort aufgrund der extremen Natur der Trainingsszenarien im Vergleich zum tatsächlichen Flug oder den FSW-Verifizierungseinrichtungen aufgedeckt. Sie haben nie Missionen beeinflusst, aber sie waren Käfer, die flogen. Es gibt hier eine Präsentation über diese Fehler (die schwerwiegend genug waren, um das Fahrzeug zum Absturz zu bringen) . Hier ist ein lustiges Bild aus dieser Präsentation – der PASS hängt vollständig an einer Transoceanic Abort Landing (TAL). Die Besatzung musste das BFS angreifen.

Mit freundlicher Genehmigung von Tristan , hier ist eine Folie aus einer anderen Präsentation von James Orr, die ~425 geflogene FSW-Bugs (aufgeführt als DRs – Discrepancy Reports) auf dem Höhepunkt um 1983 zeigt.

Geben Sie hier die Bildbeschreibung ein

Quelle

TL;DR: Wenn Ihnen jemand sagt, dass das Space Shuttle nur einen FSW-Bug hatte, kaufen Sie keine Immobilien von ihm.

Ein bekannter Fehler, für den es eine bekannte Problemumgehung gibt, ist möglicherweise kein "Fehler" mehr. Es wird stattdessen zu einem "Feature", aber zu einem Feature, das niemals aufgerufen werden sollte.
IMO, ein Fehler mit einer Problemumgehung ist immer noch ein Fehler. Aber Sie wägen die Wahrscheinlichkeit ab, dass es sich manifestiert, die Schwere, wenn es passiert, und die Komplikation der Problemumgehung; und Sie vergleichen das mit dem Risiko, andere Fehler einzuführen, wenn Sie versuchen, sie zu beheben.
@RogerLipscombe stimme zu. Die Behebung des Lambert-Zielproblems führte zu einem weiteren Fehler (dieser wurde im Shuttle-Missionssimulator kurz vor dem Flug gefunden. Gute Zeiten.)
@DavidHammen: Ich bin mit der Definition nicht einverstanden. Ein Fehler wird erst dann zu einem Feature, wenn aus einer ursprünglich unerwünschten (Neben-)Wirkung eine erwünschte (Neben-)Wirkung wird. Eine Problemumgehung macht die Wirkung eines Fehlers nicht wünschenswert, sie macht ihn nur beherrschbar .
@Flater Absolut richtig. Der Begriff Feature wird in "The Hacker's Dictionary" durch einen kleinen Dialog erklärt. Dort heißt es auch: „Undokumentiertes Feature“ ist ein gängiger, angeblich humorvoller Euphemismus für einen Bug. Ein bekannter Fehler wird niemals zu einem „Feature“, es sei denn, Sie wenden schwere Marketingmagie an.
Betreff. Nr. 3 – zu vergessen, die Antenne einzusetzen, bevor Sie sich außerhalb der Reichweite befinden, nervt KSP wirklich. Außerdem ist hier ein Kaninchenbau (siehe meinen Kommentar), in dem es um Bugs und Glitches geht .
Ich habe Probleme mit "schlechtem Benutzeroberflächendesign" weggelassen, die ich persönlich als Fehler betrachten würde. Es gab einen fabelhaften, bei dem es unmöglich wurde, den externen Tank zu trennen, wenn die Besatzung manuell in einen anderen OPS-Modus wechselte. Hoppla!
Ich bin über diesen Link gestolpert, der ebenfalls relevant erscheint: ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20100028293.pdf
@tristan danke! Das ist derselbe Typ, der die von mir verlinkte Präsentation geschrieben hat. Ich glaube, er war ein FSW-Ingenieur bei JSC.
Wo ist ROTA, im Kontext des Locked-Up-PASS TAL?
@ Sean Rota, Spanien.
Der Abwärtstrend dieses Diagramms scheint wirklich ermutigend, bis Sie feststellen, dass 25 Jahre fast so lang sind wie das Diagramm, und viele neuere Fehler möglicherweise noch unentdeckt sind, wenn es so lange dauert, sie zu finden.
@OM - Jim Orr arbeitete vor 1995 für IBM Federal Systems. IBM hatte einen Alleinbezugsvertrag für die FSW. Irgendwann scheint er in die USA gewechselt zu sein. Er kann bei Loral und Lockheed-Martin gearbeitet haben oder auch nicht. Vielleicht steht das in seinem LinkedIn-Profil? Ich erinnere mich nur, dass ich Diagramme über die STS-Softwarefehler, Fehlertypen und die Schwere der Fehler gesehen habe, nachdem er Präsentationen bei der NASA gegeben hatte. Das Team, in dem ich war, führte die gleiche Analyse für Code durch, der es weder zu IBM noch zur NASA geschafft hatte. Wir haben immer versucht, dem Kunden fehlerfreien Code zu liefern.

Als Autor von einem der Beiträge, auf die Sie sich bezüglich der Anzahl der gefundenen Fehler beziehen, haben Sie die Worte missverstanden. Bitte lesen Sie sie erneut.

Beim STS liegt ein „Bug“ vor, wenn die Software die Anforderungen nicht erfüllt. Es bedeutete nicht unbedingt, dass etwas Schlimmes passieren würde, nur dass der Code nicht den Anforderungen entsprach. Die Entwickler haben die Fehler nicht klassifiziert. Bei übermäßig komplexen Fehlern kann ein Entwickler um eine Analyse gebeten werden. Nichts wurde als „Feature“ bezeichnet, wenn es nicht in den Anforderungen enthalten war. Das wäre auch ein Bug.

Außerdem durften die Entwickler keine Fehler ohne formelle Genehmigung beheben. Wir durften keine Zeile in der Quelle ändern, die nicht in direktem Zusammenhang mit der Änderungsautorisierung stand, unter der wir arbeiteten. Wir durften den Einzug nicht ändern, um den Code besser lesbar zu machen, es sei denn, unsere Änderungen in der Nähe waren signifikant genug. Diese Einschränkungen sollten versehentliche Änderungen verhindern, die zu einer versehentlichen Einführung von Fehlern führen würden. Jede geänderte Leitung wurde mit einer bestimmten Person und CR/DR-Autorisierung gekennzeichnet.

Gerade bei Leitrechnungen konnten die Anforderungen aufgrund von Einschränkungen der Rechner manchmal nicht umgesetzt werden. Beim Echtzeit-Codieren ist eine verspätete Antwort genauso schlimm wie eine falsche Antwort. Mindestens einmal mussten die Anforderungen an den Code angepasst werden.

Niemand kennt zu irgendeinem Zeitpunkt die tatsächliche Anzahl von Fehlern in irgendeiner Software, aber Jim Orr hat buchstäblich das Buch über Probleme und Fehler in der Space-Shuttle-Software geschrieben. Ihm wurden alle Daten zu Anforderungsüberprüfungen, Designüberprüfungen, Testplanüberprüfungen, Codeüberprüfungen und Testergebnissen zur Verfügung gestellt, als ich dort für die GN&C FSW arbeitete

Es gab definitiv Hunderte von Fehlern im FSW, nur sehr wenige wurden als SEV-1 eingestuft. Keiner würde einen Computerabsturz oder andere typische Fehler verursachen, die Menschen heute in ihrem Leben in Kauf nehmen. Der GN&C-Code hatte keine Probleme wie typischer Desktop- oder Server-Code. Es gab keine dynamische Speicherzuweisung. Die Verwendung von Zeigern erforderte eine schriftliche, genehmigte Abweichung vom SW-Standards-Board. Der gesamte Code wurde formell von mindestens 6 Personen begutachtet. Komplizierterer Code würde von mehr als 20 Personen überprüft werden – im selben Raum. Im Laufe der Jahrzehnte wurde der Prozess zur Erstellung der Software immer besser. Der Prozess wurde so eingerichtet, dass er nicht auf Superprogrammierer angewiesen war , um relativ fehlerfreie Software zu erstellen. Es ging wirklich nur um den Prozess.

In meinen Jahrzehnten, in denen ich Software für viele verschiedene Unternehmen geschrieben habe, habe ich gesehen, dass überall sonst auf die Idee eines Superprogrammierers gesetzt/hofft wird, um bessere Ergebnisse zu erzielen. Das Problem dabei ist, dass Super Programmer nicht leicht reproduzierbar ist. Ich habe gesehen, dass es an einem Ort funktioniert, und zwar nur, weil jeder Programmierer jeden Fehler als persönlichen Fehler betrachtete. Überall sonst gibt es gute, durchschnittliche und schlechte Programmierer. Vor allem in größeren Organisationen scheint sich die Skala stärker als anderswo in Richtung schlecht zu verschieben. Es gibt immer Ausnahmen und selbst wenn ich beruflich direkt mit 3000 Programmierern zusammengearbeitet habe, sind das natürlich nicht alle Programmierer überall.

Hoffe das verdeutlicht und ist hilfreich.

Sind Sie auch JDP ( space.stackexchange.com/users/18811/jdp )? Wenn ja, können Sie Ihre Konten zusammenführen und den Ruf zurückgewinnen, den Sie durch Ihre anderen guten Antworten erhalten haben. Ihre Expertise ist hier willkommen! So führen Sie Konten zusammen: stackoverflow.com/help/merging-accounts