Margaret Hamilton (software-ingenieur)

In Boston was zij aanvankelijk van plan zich in te schrijven voor een doctorale studie abstracte wiskunde aan Brandeis. In de zomer van 1959 ging Hamilton echter werken voor Edward Norton Lorenz, op de afdeling meteorologie van het MIT. Zij ontwikkelde software voor het voorspellen van het weer, en programmeerde op de LGP-30 en de PDP-1 computers van Marvin Minsky’s Project MAC. Haar werk droeg bij tot Lorenz’ publicaties over de chaostheorie. In die tijd waren computerwetenschappen en software engineering nog geen gevestigde disciplines; in plaats daarvan leerden programmeurs op het werk door praktische ervaring op te doen. In de zomer van 1961 ging ze naar een ander project, en ze nam Ellen Fetter in dienst en leidde haar op.

SAGE ProjectEdit

Van 1961 tot 1963 werkte Hamilton aan het Semi-Automatic Ground Environment (SAGE) Project bij het MIT Lincoln Lab, waar ze een van de programmeurs was die software schreven voor het prototype van de AN/FSQ-7 computer (de XD-1), die door de Amerikaanse luchtmacht werd gebruikt om mogelijk onvriendelijke vliegtuigen te zoeken. Zij schreef ook software voor een satelliet-volgproject bij de Air Force Cambridge Research Laboratories. Het SAGE-project was een uitbreiding van Project Whirlwind, dat door het MIT was gestart om een computersysteem te creëren dat weersystemen kon voorspellen en hun bewegingen kon volgen met behulp van simulatoren. SAGE werd al snel ontwikkeld voor militair gebruik in de luchtverdediging tegen luchtafweer. Hamilton zei:

Wat ze vroeger deden als je als beginner in deze organisatie kwam, was je een programma toewijzen dat niemand ooit heeft kunnen uitvogelen of aan de praat krijgen. 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, dat aan de Apollo-ruimtemissie werkte. Hamilton werd aanvankelijk aangenomen als programmeur voor dit proces, maar stapte over naar systeemontwerpen. Uiteindelijk kreeg ze de leiding over alle Command Module software, die alle software voor navigatie en maanlandingbegeleiding bevatte. Uiteindelijk leidde ze een team dat de software voor Apollo en Skylab ontwikkelde. Hamiltons team was verantwoordelijk voor de ontwikkeling van software tijdens de vlucht, waaronder algoritmen die door verschillende senior wetenschappers waren ontworpen voor de Apollo-commandomodule, maanlander en het daaropvolgende Skylab. Een ander deel van haar team ontwierp en ontwikkelde de systeemsoftware. Dit omvatte foutdetectie en herstelsoftware zoals herstarts en de Display Interface Routines (ook bekend als de Priority Displays), die Hamilton ontwierp en ontwikkelde. Zij deed praktijkervaring op in een tijd waarin informatica-cursussen ongebruikelijk waren en software engineering-cursussen niet bestonden. Hamilton was ook directeur van de afdeling Software Engineering.

Haar expertisegebieden omvatten: systeemontwerp en softwareontwikkeling, bedrijfs- en procesmodellering, ontwikkelingsparadigma, formele systeemmodelleringstalen, systeemgeoriënteerde objecten voor systeemmodellering en -ontwikkeling, geautomatiseerde levenscyclusomgevingen, methoden voor het maximaliseren van softwarebetrouwbaarheid en -hergebruik, domeinanalyse, correctheid door ingebouwde taaleigenschappen, open-architectuurtechnieken voor robuuste systemen, volledige levenscyclusautomatisering, kwaliteitsborging, naadloze integratie, technieken voor foutdetectie en -herstel, mens-machine-interfacesystemen, besturingssystemen, end-to-end testtechnieken, en levenscyclusbeheertechnieken. Deze maakten haar code ongelooflijk betrouwbaar omdat ze programmeurs hielpen afwijkingen te identificeren en te verhelpen voordat het grote problemen werden.

Apollo programEdit

In een van de kritieke momenten van de Apollo 11-missie voorkwam de Apollo Guidance Computer samen met de vluchtsoftware aan boord een afbreking van de landing op de maan. Drie minuten voordat de maanlander het maanoppervlak bereikte, werden verschillende computer alarmen geactiveerd. De vluchtsoftware aan boord ving deze alarmen op met de “never supposed to happen displays”, die de astronauten onderbraken met prioriteitsalarm-displays.Hamilton had zich jaren eerder al voorbereid op precies deze situatie:

Er was nog een andere failsafe die Hamilton zich graag herinnert. Haar ‘prioriteitsweergave’-innovatie had het risico gecreëerd dat de astronaut en de computer niet meer synchroon zouden lopen, juist op het moment dat dat het belangrijkst was. Toen de alarmen afgingen en de prioriteitsschermen de normale vervingen, verliep de overschakeling naar nieuwe programma’s achter de schermen “een stap langzamer” dan nu het geval zou zijn.

Hamilton had hier lang en diep over nagedacht. Het betekende dat als Aldrin bijvoorbeeld te snel op een knop op het prioriteitsscherm drukte, hij nog steeds een “normale” reactie kon krijgen. Haar oplossing: als je een prioriteitsscherm ziet, tel dan eerst tot vijf.

Volgens sommige verslagen hadden de astronauten per ongeluk de rendez-vous radar schakelaar aan laten staan, waardoor deze alarmen afgingen (of de radar per ongeluk aan was gelaten door de astronauten wordt betwist door Robert Wills van het National Museum of Computing). De computer werd overbelast met interrupts veroorzaakt door verkeerd gefaseerde stroomtoevoer naar de rendez-vous radar van de lander. De programma-alarmen gaven “executive overflows” aan, wat betekende dat de geleidingscomputer niet al zijn taken in real time kon voltooien en sommige ervan moest uitstellen. De asynchrone executieve ontworpen door J. Halcombe Laning werd door Hamilton’s team gebruikt om asynchrone vliegsoftware te ontwikkelen:

Dankzij de foutopsporings- en hersteltechnieken van de vluchtsoftware, waaronder de systeembrede “kill and recompute” vanaf een “veilige plaats” herstartbenadering tot de snapshot- en rollbacktechnieken, de Display Interface Routines (AKA de prioriteitsdisplays) samen met zijn man-in-the-loop mogelijkheden konden worden gecreëerd om de mogelijkheid te hebben de normale missieweergaven van de astronauten te onderbreken met prioriteitsdisplays van kritieke alarmen in geval van een noodsituatie. Dit hing af van onze toekenning van een unieke prioriteit aan elk proces in de software om ervoor te zorgen dat alle gebeurtenissen in de juiste volgorde en op het juiste moment zouden plaatsvinden ten opzichte van al het andere dat gaande was.

Hamilton’s prioriteitsalarmschermen onderbraken de normale displays van de astronauten om hen te waarschuwen dat er een noodsituatie was “waardoor de astronauten een go/no go-beslissing kregen (om te landen of niet te landen)”. Jack Garman, een NASA computer ingenieur in mission control, herkende de betekenis van de fouten die aan de astronauten werden gepresenteerd door de prioriteitsdisplays en riep, “Go, go!” en ze gingen verder. Paul Curto, senior technoloog die Hamilton voordroeg voor een NASA Space Act Award, noemde Hamilton’s werk “de basis voor ultra-betrouwbaar softwareontwerp”.

Hamilton schreef later over het incident:

De computer (of beter gezegd de software erin) was slim genoeg om te herkennen dat het werd gevraagd om meer taken uit te voeren dan het zou moeten doen. Hij gaf dan een alarm af, wat voor de astronaut betekende: “Ik ben overbelast met meer taken dan ik op dit moment zou moeten doen en ik ga alleen de belangrijkere taken uitvoeren”; d.w.z. de taken die nodig zijn voor de landing … In feite was de computer geprogrammeerd om meer te doen dan het herkennen van foutcondities. Een complete set herstelprogramma’s werd in de software opgenomen. De actie van de software, in dit geval, was het elimineren van taken met een lagere prioriteit en het herstellen van de belangrijkere … Als de computer dit probleem niet had herkend en herstelacties had ondernomen, betwijfel ik of Apollo 11 de succesvolle maanlanding zou zijn geweest die het was.

– Brief van Margaret H. Hamilton, Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, getiteld “Computer Got Loaded”, gepubliceerd in Datamation, 1 maart 1971

BusinessesEdit

In 1976 richtte Hamilton samen met Saydean Zeldin een bedrijf op met de naam Higher Order Software (HOS) om ideeën over foutpreventie en fouttolerantie verder te ontwikkelen die voortkwamen uit hun ervaring bij MIT met het werken aan het Apollo-programma. Zij creëerden een product met de naam USE.IT, gebaseerd op de HOS-methodologie die zij bij MIT ontwikkelden. Het werd met succes gebruikt in talrijke overheidsprogramma’s, waaronder een project om C-IDEF te formaliseren en te implementeren, een geautomatiseerde versie van IDEF, een modelleertaal die door de Amerikaanse luchtmacht was ontwikkeld in het ICAM-project (Integrated Computer-Aided Manufacturing). In 1980 publiceerde de Brits-Israëlische computerwetenschapper David Harel een voorstel voor een gestructureerde programmeertaal die was afgeleid van HOS vanuit het gezichtspunt van en/of subdoelen. Anderen hebben HOS gebruikt om de semantiek van linguïstische kwantoren te formaliseren, en om het ontwerp van betrouwbare real-time embedded systemen te formaliseren.

Hamilton was tot 1984 de CEO van HOS en verliet het bedrijf in 1985. In maart 1986 richtte zij Hamilton Technologies, Inc. op in Cambridge, Massachusetts. Het bedrijf werd ontwikkeld rond de Universal Systems Language (USL) en de bijbehorende geautomatiseerde omgeving, de 001 Tool Suite, gebaseerd op haar paradigma van ontwikkeling vóór de feiten voor systeemontwerp en softwareontwikkeling.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.