Es gibt dieses schöne Zitat von Rick Cook über das Programmieren:
Programmieren ist heute ein Wettlauf zwischen Software-Ingenieuren, die sich mühen, größere und bessere idiotensichere Programme zu entwickeln, und dem Universum, das versucht, größere und bessere Idioten zu produzieren.
Bisher liegt das Universum in Führung.
Was war passiert?
Vor einiger Zeit hatte ich ein Erlebnis, das mir gezeigt hat, wie groß die Scheuklappen sind, die ich nach
weit über 30 Jahren Beschäftigung mit Computern, Anwendern und Software trage. Sagen wir aus Gründen der Diskretion
einfach, ich habe mal wieder nicht damit gerechnet, dass es
a) sehr kreative Arten der Bedienung von Software gibt und
b) “kindliche Explorationslust” auch im Erwachsenenalter vorkommen kann. ;-)
Wenn Sie sich lange genug mit einem Thema beschäftigen, ist das Einnehmen des Blickwinkels von Einsteigern in die Materie wirklich harte Arbeit. Viele AnwenderInnen machen es einem aber auch nicht leicht. Es hat schon etwas davon, dem Kind zu vermitteln, dass der Kaminofen im Zimmer heiß ist – hingefasst werden muss trotzdem. Und am nächsten Nachmittag wieder. Ein “Faß da bitte nicht hin, das ist heiß” entspricht dann dem “Tun Sie das nicht, weil …” in vielen Software-Handbüchern.
Was hat das nun mit Astronauten zu tun?
Ich habe anfang der 2000er Jahre einen Bericht gelesen, den ich mir bei solchen Fällen dann immer wieder mal gerne erneut durchlese. Dieser beruhight mich dann, weil er zeigt, dass ein “das wird nie passieren” die Garantie dafür ist, dass es passieren wird. “Auch Astronauten sind nur Menschen”, wäre die Kurzzusammenfassung. Und die Geschichte zeigt auch, dass sich in 50 Jahren Softwareentwicklung manche Dinge nicht wirklich geändert haben. Aber lesen Sie selbst …
Mitte der 60er Jahre. Apollo-Programm.
Zu dieser Zeit arbeitete Margaret Hamilton als Teamleiterin und Softwareentwicklerin am Code für den Apollo Guidance Computer, dem bei den Apollo-Flügen eingesetzten Navigations-Rechner. Die “Benutzeroberfläche” lässt sich nicht mit heutigen Computern vergleichen. Das System wurde über eine Kombination aus Anzeige ("DiSplay") und Tastenfeld ("KeYboard") bedient, daher stammt auch der Codename “DSKY” Hamilton ging so in ihrer Arbeit auf, dass sie oft auch am Wochenende oder Nachts an der Software schrieb und Probleme löste. Dabei brauchte Sie oft auch ihre kleine Tochter Lauren mit.
Eines Tages spielte Lauren am Simulator des Apollo-Cockpits mit dem DSKY des Navigations-Computers. Dabei leuchtete plötzlich eine Fehlermeldung auf. Die damals vierjährige Lauren hatte es geschafft, den Simulator abstürzen zu lassen, in dem Sie ein Programm zur Startvorbereitung auswählte, während der Simulator mitten im Flugmodus war. Alle Navigationsdaten waren weg …
Margaret Hamilton war besorgt über diese Möglichkeit der Fehlbedienung und wollte unbedingt Code einbauen, der eine Validerung der Eingaben vornahm und im Fehlerfall die Astronauten darauf hinwies. Ein abgestürztes Navi ist heute noch übel, aber Sie wollen das unter Garantie nicht erleben, während Sie gerade mit über 35.000 km/h in Richtung Mond rasen.
And one of the things I remember trying very hard to do was to get permission to be able to put more error detection and recovery into the software. So that if the astronaut made a mistake, the software would come back and say “You can’t do that.” (Margaret Hamilton, 2001)
Das Management untersagte aber diese Erweiterung, mit der Begründung, dass dies nur zu noch mehr Software, noch mehr Testaufwand und zu komplizierterem Code führen würde. Und der zweite Grund:
We were also told that the astronauts would never make any mistakes, because they were trained never to make mistakes.
Die Astronauten würden diesen Kinderfehler nie machen, denn Sie würden nie Fehler machen, schließlich wurden sie als Astronauten darauf trainiert, keine Fehler zu machen …
Immerhin durfte Margaret Hamilton eine “program note”, also einen Hinweis-Kommentar in die Dokumentation zur Bedienung
der Software einfügen.
Die lautete kurz und knapp: "Do not select PO1 during flight".
Im Dezember startete Apollo 8. William Anders, Frank Borman und James Lovell sollten als erste Menschen die Erdumlaufbahn verlassen, den Mond umkreisen und anschließend wieder zur Erde zurückkehren. Mit dem Softwarestand, den die kleine Lauren Hamilton so erfolgreich “getestet” hatte. Sie ahnen schon, auf was das hinausläuft. Am fünften Tag der Mission meldete sich Commando James Lovell bei der Bodenkontrolle (Auszug aus dem Transkript):
106:27:22 Anders: Houston, Apollo 8.
106:27:24 Collins: Apollo 8, Houston. Go ahead.
106:27:28 Lovell: Roger. For some reason,
we suddenly got a Program 01 and
no attitude light on our computer.
106:27:35 Collins: We confirm that. [Long pause.]
Was war passiert? James “Jim” Lovell hatte versehentlich statt “Star 01” zur Positionsbestimmung von Stern 1 für die Navigation “Program 01” gewählt und damit dem Computer mitgeteilt: “Du bist jetzt auf der Startrampe und wir bereiten den Start vor, lösch bitte alle Navigationsdaten. damit wir einen sauberen Ausgangsstand haben”. Perfekt …
“Jeder hatte uns gesagt, das würde nie passieren”, erinnerte sich Margaret Hamilton.
Ohne die Navigationsdaten würde Apollo 8 nicht in der Lage sein, den Weg zurück zur Erde zu finden. Immerhin wurde der Hinweis mit “Do not select P01 during flight” schnell gefunden und Hamilton und das Team vom MIT waren in der Lage, in den nächsten 9 Stunden einen Plan und ein Programm zu schreiben, mit dem neue Navigationsdaten zum Raumschiff übertragen wurden. Dank Margaret Hamilton – und ihrer Tochter Lauren – kehrten die Astronauten mit Apollo 8 sicher zur Erde zurück.
Für die Nerds unter den Lesern
Wer genau wissen will, was passiert ist (aus dem Transcript):
Jim is on page 2-86 of the Flight Plan and is about to measure the angle between star 01 (Alpheratz, Alpha Andromedae) and the lunar horizon that is nearest the star in angular terms. As detailed on page G-28 of the CMP Checklist, Jim has to go back to the beginning of P23 as if he was coming from another program. He enters Verb 37 (please change program to…), 23, Enter. Then he has to enter the star code for Alpheratz (01) which is achieved by Verb 5 (please enter star code…), 01, Enter. Unfortunately, he misses out the program number (23) and Verb 5, and instead enters the star code (01) directly after Verb 37 which makes the computer go to the beginning of program 01.
It is fortunate that Apollo 8 is on its long coast home without critical time-dependent manoeuvres immediately ahead of it. Jim has inadvertently entered P01, the prelaunch or service/initialisation program whose stated function is ’to initialise the platform for the prelaunch programs’ and ’to provide an initial stable member (i.e. the platform) orientation for gyrocompassing (P02).’ This takes the platform away from its current orientation per the LOI-2 REFSMMAT and it also disturbs the REFSMMAT. The resultant misalignment causes the attitude light on the DSKY to go out. Having realised his mistake, Jim has time to work with Mission Control through a gradual reinstatement of the guidance system.
Astronauten & Anwender
Die Anekdote an der Geschichte ist, dass ich für meine Software oben ebenfalls eine Validierung einbauen wollte, die Fehleingaben bzw. fehlerhafte Daten verhindert. Raten Sie mal, was die Entscheidung war? “Die machen das den ganten Tag, die wissen ganz genau, was sie da tun”.
Jetzt baue ich die Überprüfung nachträglich ein. ;-)
Bleiben Sie also hartnäckig, wenn Sie das Gefühl haben, es gibt da eine Möglichkeit für eine nicht unerhebliche Fehlbedienung …
Links
- WIRED Artikel zu diesem Thema
- Einführung M. Hamiltong auf der AGC History project Conference 2001
- Das bereits mehrfach erwähnte Mission Transcipt
- Wikipedia-Artikel zum AGC
- Achtung: schwerer Stoff – nur für Programmierer ;-) “The ultimate AGC Talk”
- Als Themenstart für Unterrichtsprojekte: Die NASA-Frauen von LEGO
Bildnachweis: Alle Bilder aus den NASA-Archiven, public domain