Margaret Hamilton (szoftvermérnök)

Bostonban eredetileg absztrakt matematika szakra akart beiratkozni a Brandeis Egyetemre. Hamilton azonban 1959 nyarán Edward Norton Lorenznél kezdett dolgozni, az MIT meteorológiai tanszékén. Időjárás-előrejelző szoftvereket fejlesztett, a Marvin Minsky-féle MAC projektben az LGP-30 és a PDP-1 számítógépeken programozva. Munkája hozzájárult Lorenz káoszelméletről szóló publikációihoz. Abban az időben a számítástechnika és a szoftverfejlesztés még nem volt kialakult tudományág; ehelyett a programozók a munkahelyükön tanultak gyakorlati tapasztalatokkal. Hamilton 1961 nyarán egy másik projektre ment át, és utódjaként Ellen Fettert vette fel és képezte ki.

SAGE ProjectEdit

Hamilton 1961-től 1963-ig az MIT Lincoln Lab-ban a Semi-Automatic Ground Environment (SAGE) projektben dolgozott, ahol ő volt az egyik programozó, aki szoftvert írt az AN/FSQ-7 számítógép prototípusához (az XD-1), amelyet az amerikai légierő használt az esetlegesen ellenséges repülőgépek keresésére. A Légierő Cambridge-i Kutató Laboratóriumában egy műholdkövető projekthez is írt szoftvert. A SAGE projekt az MIT által indított Project Whirlwind projekt kiterjesztése volt, amelynek célja egy olyan számítógépes rendszer létrehozása volt, amely szimulátorok segítségével képes volt előrejelezni az időjárási rendszereket és nyomon követni azok mozgását. A SAGE-t hamarosan katonai felhasználásra fejlesztették ki a légvédelmi légvédelemben. Hamilton elmondta:

Azt szokták csinálni, amikor az ember kezdőként belépett ebbe a szervezetbe, hogy hozzárendelték ezt a programot, amelyet soha senki nem volt képes megfejteni vagy futtatni. 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, amely az Apollo űrmisszión dolgozott. Hamiltont kezdetben programozóként alkalmazták ehhez a folyamathoz, de továbblépett a rendszertervezéshez. Végül ő volt a felelős az összes parancsnoki modul szoftveréért, ami a navigáció és a holdraszállás irányításának összes szoftverét jelentette. Végül ő vezette azt a csapatot, amelynek az Apollo és a Skylab szoftverének kifejlesztését tulajdonították. Hamilton csapata volt felelős a repülés közbeni szoftverek fejlesztéséért, amelyek különböző vezető tudósok által tervezett algoritmusokat tartalmaztak az Apollo parancsnoki modul, a holdraszállóegység és a későbbi Skylab számára. Csapatának egy másik része a rendszerszoftvereket tervezte és fejlesztette. Ez magában foglalta a hibafelismerő és helyreállító szoftvereket, mint például az újraindításokat és a Display Interface Routines (más néven a Priority Displays), amelyeket Hamilton tervezett és fejlesztett ki. Azért dolgozott, hogy gyakorlati tapasztalatot szerezzen egy olyan időszakban, amikor az informatikai kurzusok ritkák voltak, és nem léteztek szoftvermérnöki kurzusok. Hamilton a szoftvermérnöki részleg igazgatójaként is tevékenykedett.

A szakterületei a következők: rendszertervezés és szoftverfejlesztés, vállalati és folyamatmodellezés, fejlesztési paradigma, formális rendszermodellező nyelvek, rendszerorientált objektumok a rendszerek modellezéséhez és fejlesztéséhez, automatizált életciklus-környezetek, módszerek a szoftver megbízhatóságának és újrafelhasználásának maximalizálására, tartományelemzés, helyesség a beépített nyelvi tulajdonságok révén, nyílt architektúrájú technikák robusztus rendszerekhez, teljes életciklusú automatizálás, minőségbiztosítás, zökkenőmentes integráció, hibafelismerési és helyreállítási technikák, ember-gép interfész rendszerek, operációs rendszerek, végponttól végpontig tartó tesztelési technikák és életciklus-kezelési technikák. Ezek hihetetlenül megbízhatóvá tették a kódját, mert segítettek a programozóknak azonosítani és kijavítani a rendellenességeket, mielőtt azok komoly problémává válnának.

Apollo programEdit

Az Apollo-11 küldetés egyik kritikus pillanatában az Apollo Guidance Computer a fedélzeti repülési szoftverrel együtt megakadályozta a Holdra szállás megszakítását. Három perccel azelőtt, hogy a holdjáró elérte volna a Hold felszínét, több számítógépes riasztás is beindult. A fedélzeti repülési szoftver ezeket a riasztásokat a “soha nem szabadna megtörténnie” kijelzőkkel rögzítette, megszakítva az űrhajósokat az elsőbbségi riasztások kijelzésével.” Hamilton évekkel korábban éppen erre a helyzetre készült:

Volt még egy másik biztonsági hiba, amire Hamilton szívesen emlékszik. Az ő “elsőbbségi kijelzős” újítása megteremtette annak a kockázatát, hogy az űrhajós és a számítógép éppen akkor csúszik ki a szinkronból, amikor a legfontosabb lenne. Ahogy a riasztások megszólaltak, és az elsőbbségi kijelzők felváltották a normál kijelzőket, a képernyők mögötti új programokra való tényleges átállás “egy lépéssel lassabban” történt, mint manapság.

Hamilton hosszasan gondolkodott ezen. Ez azt jelentette, hogy ha Aldrin például túl gyorsan nyomott meg egy gombot a kiemelt kijelzőn, még mindig kaphatott “normál” választ. Az ő megoldása: amikor elsőbbségi kijelzőt lát, először számoljon el ötig.

Egyes beszámolók szerint az űrhajósok véletlenül bekapcsolva hagyták a randevúradar kapcsolóját, ami miatt ezek a riasztások beindultak (hogy a radart az űrhajósok véletlenül hagyták-e bekapcsolva, azt Robert Wills, a National Museum of Computing munkatársa vitatja). A számítógépet túlterhelték a megszakítások, amelyeket a leszállóegység randevúradarjának helytelenül szakaszolt áramellátása okozott. A program riasztásai “végrehajtó túlcsordulást” jeleztek, ami azt jelentette, hogy az irányító számítógép nem tudta minden feladatát valós időben elvégezni, és néhányat el kellett halasztania. Az aszinkron végrehajtó rendszert a J. Halcombe Laning által tervezett aszinkron repülési szoftvert használta Hamilton csapata:

A repülési szoftver rendszer-szoftver hibaérzékelési és helyreállítási technikái miatt, amelyek közé tartozott az egész rendszerre kiterjedő “kill and recompute” “biztonságos helyről” történő újraindítási megközelítése a pillanatfelvételi és visszaállítási technikákhoz, a kijelző interfész rutinok (más néven a prioritást élvező kijelzők) és az ember a hurokban (man-in-the-loop) képességek létrehozásával együtt képesek voltak arra, hogy vészhelyzet esetén az űrhajósok normál küldetéskijelzőit megszakítsák a kritikus riasztások prioritást élvező kijelzéseivel. Ez azon múlott, hogy a szoftverben minden folyamathoz egyedi prioritást rendeltünk, hogy biztosítsuk, hogy minden esemény a megfelelő sorrendben és a megfelelő időben történjen minden más eseményhez képest.

A Hamilton elsőbbségi riasztási kijelzői megszakították az asztronauták normál kijelzőit, hogy figyelmeztessék őket, hogy vészhelyzet van, “és az asztronautáknak döntést kell hozniuk (leszállás vagy nem leszállás)”. Jack Garman, a NASA számítógépes mérnöke a küldetésirányításban felismerte az elsőbbségi kijelzők által az űrhajósok elé tárt hibák jelentését, és azt kiáltotta: “Menj, menj!”, és ők folytatták. Paul Curto, vezető technológus, aki Hamiltont a NASA Space Act Award díjra jelölte, Hamilton munkáját “a rendkívül megbízható szoftvertervezés alapjának” nevezte.

Hamilton később így írt az esetről:

A számítógép (vagy inkább a benne lévő szoftver) elég okos volt ahhoz, hogy felismerje, hogy több feladatot kérnek tőle, mint amennyit el kellene végeznie. Ekkor riasztást küldött, ami azt jelentette az űrhajósnak: “Túlterhelt vagyok több feladattal, mint amennyit most kellene elvégeznem, és csak a fontosabb feladatokat fogom megtartani”; vagyis azokat, amelyek a leszálláshoz szükségesek … Valójában a számítógépet többre programozták, mint a hibaállapotok felismerésére. Egy teljes helyreállító programkészletet építettek be a szoftverbe. A szoftver cselekvése ebben az esetben az volt, hogy az alacsonyabb prioritású feladatokat megszüntette, és a fontosabbakat helyreállította … Ha a számítógép nem ismerte volna fel ezt a problémát és nem hajtott volna végre helyreállítási műveleteket, kétlem, hogy az Apollo-11 olyan sikeres holdraszállás lett volna, amilyen sikeres volt.”

– Margaret H. levele. Hamilton, az Apollo repülési számítógép programozásának igazgatója MIT Draper Laboratory, Cambridge, Massachusetts, “Computer Got Loaded” címmel, megjelent: Datamation, 1971. március 1.

BusinessesEdit

1976-ban Hamilton Saydean Zeldinnel együtt megalapította a Higher Order Software (HOS) nevű céget, hogy továbbfejlesszék az MIT-n az Apollo-programon végzett munkájukból származó hibamegelőzési és hibatűrési ötleteket. Létrehoztak egy USE.IT nevű terméket, amely az MIT-n kifejlesztett HOS módszertanon alapult. Ezt sikeresen alkalmazták számos kormányzati programban, többek között az amerikai légierő által az ICAM (Integrated Computer-Aided Manufacturing) projektben kifejlesztett modellezési nyelv, az IDEF automatizált változatának, a C-IDEF-nek a formalizálására és bevezetésére irányuló projektben. 1980-ban David Harel brit-izraeli informatikus publikált egy javaslatot a HOS-ból származtatott strukturált programozási nyelvre a HOS és/vagy a részcélok szempontjából. Mások a HOS-t a nyelvi kvantorok szemantikájának formalizálására és a megbízható valós idejű beágyazott rendszerek tervezésének formalizálására használták.

Hamilton 1984-ig a HOS vezérigazgatója volt, majd 1985-ben távozott a cégtől. 1986 márciusában megalapította a Hamilton Technologies, Inc. vállalatot a Massachusetts állambeli Cambridge-ben. A vállalatot a Universal Systems Language (USL) és a hozzá tartozó automatizált környezet, a 001 Tool Suite köré fejlesztette ki, amely az ő paradigmáján alapult, a rendszertervezés és a szoftverfejlesztés tény előtti fejlesztésére.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.