Margaret Hamilton (Software-Ingenieurin)

In Boston wollte sie sich zunächst für ein Studium der abstrakten Mathematik an der Brandeis University einschreiben. Im Sommer 1959 begann Hamilton jedoch für Edward Norton Lorenz in der meteorologischen Abteilung des MIT zu arbeiten. Sie entwickelte Software für die Wettervorhersage und programmierte auf dem LGP-30 und dem PDP-1 Computer von Marvin Minskys Projekt MAC. Ihre Arbeit trug zu Lorenz‘ Veröffentlichungen zur Chaostheorie bei. Zu dieser Zeit waren Informatik und Software-Engineering noch keine etablierten Disziplinen; stattdessen lernten die Programmierer durch praktische Erfahrung am Arbeitsplatz. Im Sommer 1961 wechselte sie zu einem anderen Projekt und stellte Ellen Fetter als ihre Nachfolgerin ein, die sie ausbildete.

SAGE ProjectEdit

Von 1961 bis 1963 arbeitete Hamilton am Semi-Automatic Ground Environment (SAGE) Project im MIT Lincoln Lab, wo sie zu den Programmierern gehörte, die die Software für den Prototyp des AN/FSQ-7-Computers (XD-1) schrieben, der von der U.S. Air Force zur Suche nach möglicherweise feindlichen Flugzeugen eingesetzt wurde. Sie schrieb auch die Software für ein Satellitenverfolgungsprojekt der Air Force Cambridge Research Laboratories. Das SAGE-Projekt war eine Erweiterung des Projekts Whirlwind, das vom MIT ins Leben gerufen wurde, um ein Computersystem zu entwickeln, das Wettersysteme vorhersagen und ihre Bewegungen mithilfe von Simulatoren verfolgen konnte. SAGE wurde bald für den militärischen Einsatz in der Flugabwehr entwickelt. Hamilton sagte:

Wenn man als Anfänger in diese Organisation kam, wurde einem dieses Programm zugewiesen, das niemand jemals verstehen oder zum Laufen bringen konnte. When I was the beginner they gave it to me as well. And what had happened was it was tricky programming, and the person who wrote it took delight in the fact that all of his comments were in Greek and Latin. So I was assigned this program and I actually got it to work. It even printed out its answers in Latin and Greek. I was the first one to get it to work.

It was her efforts on this project that made her a candidate for the position at NASA as the lead developer for Apollo flight software.

Draper LaboratoryEdit

Hamilton in 1969, standing next to listings of the software she and her MIT team produced for the Apollo project

Hamilton during her time as lead Apollo flight software designer

Hamilton then joined the Charles Stark Draper Laboratory at MIT, das an der Apollo-Raumfahrtmission arbeitete. Hamilton wurde zunächst als Programmiererin für diesen Prozess eingestellt, wechselte dann aber in die Systementwicklung. Schließlich war sie für die gesamte Software des Kommandomoduls zuständig, d. h. für die gesamte Software zur Navigation und Steuerung der Mondlandung. Schließlich leitete sie ein Team, das für die Entwicklung der Software für Apollo und Skylab verantwortlich war. Hamiltons Team war für die Entwicklung der Software während des Fluges verantwortlich. Dazu gehörten Algorithmen, die von verschiedenen leitenden Wissenschaftlern für das Apollo-Kommandomodul, die Mondlandefähre und das spätere Skylab entworfen wurden. Ein anderer Teil ihres Teams entwarf und entwickelte die Systemsoftware. Dazu gehörten Fehlererkennungs- und Wiederherstellungssoftware wie Neustarts und die Display Interface Routines (auch bekannt als Prioritätsanzeigen), die Hamilton entwarf und entwickelte. Sie sammelte praktische Erfahrungen in einer Zeit, in der Informatikkurse unüblich waren und es keine Kurse für Softwaretechnik gab. Hamilton war auch Direktorin der Abteilung für Softwaretechnik.

Zu ihren Fachgebieten gehören: Systemdesign und Softwareentwicklung, Unternehmens- und Prozessmodellierung, Entwicklungsparadigma, formale Systemmodellierungssprachen, systemorientierte Objekte für die Systemmodellierung und -entwicklung, automatisierte Lebenszyklusumgebungen, Methoden zur Maximierung der Softwarezuverlässigkeit und -wiederverwendung, Domänenanalyse, Korrektheit durch eingebaute Spracheigenschaften, Techniken der offenen Architektur für robuste Systeme, Automatisierung des gesamten Lebenszyklus, Qualitätssicherung, nahtlose Integration, Fehlererkennungs- und Wiederherstellungstechniken, Mensch-Maschine-Schnittstellensysteme, Betriebssysteme, End-to-End-Testtechniken und Lebenszyklusmanagementtechniken. Diese machten ihren Code unglaublich zuverlässig, weil sie den Programmierern halfen, Anomalien zu erkennen und zu beheben, bevor sie zu größeren Problemen wurden.

Apollo programEdit

In einem der kritischen Momente der Apollo-11-Mission verhinderte der Apollo-Leitcomputer zusammen mit der Flugsoftware an Bord einen Abbruch der Mondlandung. Drei Minuten bevor die Mondlandefähre die Mondoberfläche erreichte, wurden mehrere Computeralarme ausgelöst. Hamilton hatte sich schon Jahre zuvor auf diese Situation vorbereitet:

Es gab noch eine weitere Ausfallsicherung, an die sich Hamilton gerne erinnert. Die von ihr erfundene „Prioritätsanzeige“ barg das Risiko, dass Astronaut und Computer gerade dann aus dem Takt gerieten, wenn es am wichtigsten war. Als die Alarme losgingen und die Prioritätsanzeigen die normalen Anzeigen ersetzten, ging die eigentliche Umschaltung auf neue Programme hinter den Bildschirmen „einen Schritt langsamer“ vonstatten als heute.

Hamilton hatte lange und gründlich darüber nachgedacht. Das bedeutete, dass Aldrin, wenn er zum Beispiel eine Taste auf dem Prioritätsdisplay zu schnell drückte, immer noch eine „normale“ Antwort erhalten konnte. Ihre Lösung: Wenn man eine Prioritätsanzeige sieht, muss man zuerst bis fünf zählen.

Einigen Berichten zufolge hatten die Astronauten versehentlich den Schalter des Rendezvous-Radars eingeschaltet gelassen, wodurch diese Alarme ausgelöst wurden (ob das Radar von den Astronauten versehentlich eingeschaltet gelassen wurde, wird von Robert Wills vom National Museum of Computing bestritten). Der Computer war mit Unterbrechungen überlastet, die durch eine falsch eingestellte Stromversorgung des Rendezvous-Radars der Landefähre verursacht wurden. Die Programmalarme wiesen auf „Executive Overflows“ hin, was bedeutet, dass der Steuerungscomputer nicht alle seine Aufgaben in Echtzeit erledigen konnte und einige von ihnen verschieben musste. Die von J. Halcombe Laning entworfene asynchrone Steuerung wurde von J. Halcombe Laning entworfene asynchrone Exekutive wurde von Hamiltons Team für die Entwicklung asynchroner Flugsoftware verwendet:

Aufgrund der Fehlererkennungs- und Wiederherstellungstechniken der Flugsoftware, zu denen das systemweite „kill and recompute“ von einem „sicheren Ort“ aus bis hin zu den Snapshot- und Rollback-Techniken gehörte, die Anzeige-Schnittstellen-Routinen (auch bekannt als Prioritätsanzeigen) zusammen mit den Man-in-the-Loop-Fähigkeiten konnten so erstellt werden, dass die normalen Missionsanzeigen der Astronauten im Notfall durch Prioritätsanzeigen kritischer Alarme unterbrochen werden konnten. Dies hing davon ab, dass wir jedem Prozess in der Software eine eindeutige Priorität zuwiesen, um sicherzustellen, dass alle Ereignisse in der richtigen Reihenfolge und zum richtigen Zeitpunkt im Verhältnis zu allem anderen abliefen.

Hamiltons Prioritätsalarmanzeigen unterbrachen die normalen Anzeigen der Astronauten, um sie zu warnen, dass ein Notfall vorlag, „so dass die Astronauten die Entscheidung treffen konnten, ob sie landen wollten oder nicht“. Jack Garman, ein NASA-Computeringenieur in der Missionskontrolle, erkannte die Bedeutung der Fehler, die den Astronauten durch die Prioritätsanzeigen angezeigt wurden, und rief: „Los, los!“, woraufhin sie weiterflogen. Paul Curto, leitender Technologe, der Hamilton für den NASA Space Act Award nominierte, nannte Hamiltons Arbeit „die Grundlage für ein extrem zuverlässiges Softwaredesign“.

Hamilton schrieb später über den Vorfall:

Der Computer (oder besser gesagt die Software darin) war intelligent genug, um zu erkennen, dass er mehr Aufgaben zu erledigen hatte, als er eigentlich erledigen sollte. Daraufhin gab er einen Alarm aus, der für den Astronauten bedeutete: ‚Ich bin mit mehr Aufgaben überlastet, als ich zu diesem Zeitpunkt erledigen sollte, und ich werde nur die wichtigeren Aufgaben behalten‘; d.h. die, die für die Landung benötigt werden … Tatsächlich wurde der Computer so programmiert, dass er mehr als nur Fehlerzustände erkennen konnte. Ein kompletter Satz von Wiederherstellungsprogrammen wurde in die Software integriert. In diesem Fall bestand die Aufgabe der Software darin, Aufgaben mit geringerer Priorität zu eliminieren und die wichtigeren wiederherzustellen … Wenn der Computer dieses Problem nicht erkannt und Wiederherstellungsmaßnahmen ergriffen hätte, bezweifle ich, dass Apollo 11 die erfolgreiche Mondlandung gewesen wäre, die sie war.

– Brief von Margaret H. Hamilton, Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, mit dem Titel „Computer Got Loaded“, veröffentlicht in Datamation, 1. März 1971

BusinessesEdit

Im Jahr 1976 gründete Hamilton zusammen mit Saydean Zeldin ein Unternehmen namens Higher Order Software (HOS), um Ideen zur Fehlervermeidung und Fehlertoleranz weiterzuentwickeln, die aus ihren Erfahrungen am MIT bei der Arbeit am Apollo-Programm entstanden waren. Sie schufen ein Produkt namens USE.IT, das auf der von ihnen am MIT entwickelten HOS-Methodik basiert. Es wurde erfolgreich in zahlreichen Regierungsprogrammen eingesetzt, darunter ein Projekt zur Formalisierung und Implementierung von C-IDEF, einer automatisierten Version von IDEF, einer Modellierungssprache, die von der U.S. Air Force im Rahmen des Projekts Integrated Computer-Aided Manufacturing (ICAM) entwickelt wurde. 1980 veröffentlichte der britisch-israelische Informatiker David Harel einen Vorschlag für eine strukturierte, von HOS abgeleitete Programmiersprache unter dem Gesichtspunkt von und/oder Unterzielen. Andere haben HOS zur Formalisierung der Semantik linguistischer Quantoren und zur Formalisierung des Entwurfs zuverlässiger eingebetteter Echtzeitsysteme verwendet.

Hamilton war bis 1984 Geschäftsführerin von HOS und verließ das Unternehmen 1985. Im März 1986 gründete sie Hamilton Technologies, Inc. in Cambridge, Massachusetts. Das Unternehmen wurde rund um die Universal Systems Language (USL) und die dazugehörige automatisierte Umgebung, die 001 Tool Suite, entwickelt, die auf ihrem Paradigma der Entwicklung vor dem Hintergrund des Systemdesigns und der Softwareentwicklung basiert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.