Margaret Hamilton (inżynier oprogramowania)

W Bostonie, początkowo zamierzała zapisać się na studia magisterskie z matematyki abstrakcyjnej w Brandeis. Jednak latem 1959 roku Hamilton zaczęła pracować dla Edwarda Nortona Lorenza, w dziale meteorologii na MIT. Tworzyła oprogramowanie do przewidywania pogody, programując na komputerach LGP-30 i PDP-1 w projekcie MAC Marvina Minsky’ego. Jej praca przyczyniła się do publikacji Lorenza na temat teorii chaosu. W tamtych czasach informatyka i inżynieria oprogramowania nie były jeszcze uznanymi dyscyplinami; zamiast tego programiści uczyli się w pracy, zdobywając praktyczne doświadczenie. Latem 1961 roku przeniosła się do innego projektu, a na jej miejsce zatrudniono i przeszkolono Ellen Fetter.

Projekt SAGEEdit

W latach 1961-1963 Hamilton pracowała nad projektem Semi-Automatic Ground Environment (SAGE) w MIT Lincoln Lab, gdzie była jednym z programistów, którzy napisali oprogramowanie dla prototypowego komputera AN/FSQ-7 (XD-1), używanego przez U.S. Air Force do poszukiwania potencjalnie nieprzyjaznych samolotów. Napisała także oprogramowanie dla projektu śledzenia satelitów w Laboratoriach Badawczych Sił Powietrznych w Cambridge. Projekt SAGE był rozszerzeniem Projektu Whirlwind, rozpoczętego przez MIT w celu stworzenia systemu komputerowego, który mógłby przewidywać systemy pogodowe i śledzić ich ruchy za pomocą symulatorów. SAGE został wkrótce opracowany do użytku wojskowego w przeciwlotniczej obronie powietrznej. Hamilton powiedział:

To, co robili, kiedy przychodziłeś do tej organizacji jako początkujący, to przydzielanie ci tego programu, którego nikt nigdy nie był w stanie rozgryźć ani uruchomić. 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, które pracowało nad misją kosmiczną Apollo. Hamilton została początkowo zatrudniona jako programistka do tego procesu, ale przeszła do projektowania systemów. Ostatecznie była odpowiedzialna za całe oprogramowanie Command Module, które było całym oprogramowaniem do nawigacji i naprowadzania na lądowanie na Księżycu. Ostatecznie kierowała zespołem, któremu przypisuje się stworzenie oprogramowania dla Apollo i Skylab. Zespół Hamilton był odpowiedzialny za rozwój oprogramowania pokładowego, które zawierało algorytmy zaprojektowane przez różnych starszych naukowców dla modułu dowodzenia Apollo, lądownika księżycowego i późniejszego Skylaba. Inna część jej zespołu zaprojektowała i rozwinęła oprogramowanie systemowe. Obejmowało ono oprogramowanie do wykrywania i usuwania błędów, takie jak restarty oraz Display Interface Routines (znane również jako Priority Displays), które Hamilton zaprojektowała i rozwinęła. Pracowała, aby zdobyć praktyczne doświadczenie w czasie, gdy kursy informatyki były rzadkością, a kursy inżynierii oprogramowania nie istniały. Hamilton pełniła również funkcję dyrektora Wydziału Inżynierii Oprogramowania.

Jej obszary specjalizacji obejmują: projektowanie systemów i rozwój oprogramowania, modelowanie przedsiębiorstw i procesów, paradygmat rozwoju, formalne języki modelowania systemów, obiekty zorientowane systemowo do modelowania i rozwoju systemów, zautomatyzowane środowiska cyklu życia, metody maksymalizacji niezawodności i ponownego użycia oprogramowania, analizę domenową, poprawność poprzez wbudowane właściwości języka, techniki otwartej architektury dla solidnych systemów, pełną automatyzację cyklu życia, zapewnienie jakości, płynną integrację, techniki wykrywania i usuwania błędów, systemy interfejsów człowiek-maszyna, systemy operacyjne, techniki testowania end-to-end oraz techniki zarządzania cyklem życia. Dzięki nim jej kod stał się niewiarygodnie niezawodny, ponieważ pomogły one programistom zidentyfikować i usunąć anomalie, zanim stały się one poważnymi problemami.

Program ApolloEdit

W jednym z krytycznych momentów misji Apollo 11, komputer naprowadzający Apollo wraz z oprogramowaniem pokładowym zapobiegły przerwaniu lądowania na Księżycu. Trzy minuty przed dotarciem lądownika do powierzchni Księżyca uruchomiło się kilka alarmów komputerowych. Oprogramowanie pokładowe uchwyciło te alarmy za pomocą „wyświetlaczy, które nigdy nie powinny się zdarzyć”, przerywając astronautom wyświetlanie alarmów priorytetowych.Hamilton przygotowała się na tę sytuację wiele lat wcześniej:

Był jeszcze jeden rodzaj failsafe, o którym Hamilton lubi pamiętać. Jej innowacja „wyświetlacza priorytetowego” stworzyła ryzyko, że astronauta i komputer stracą synchronizację właśnie wtedy, gdy było to najważniejsze. W miarę jak alarmy się wyłączały, a wyświetlacze priorytetowe zastępowały normalne, faktyczne przełączanie się na nowe programy za ekranami odbywało się „o krok wolniej” niż miałoby to miejsce dzisiaj.

Hamilton długo się nad tym zastanawiała. Oznaczało to, że jeśli Aldrin, powiedzmy, uderzył w przycisk na wyświetlaczu priorytetowym zbyt szybko, nadal mógł otrzymać „normalną” odpowiedź. Jej rozwiązanie: gdy widzisz wyświetlacz priorytetowy, najpierw policz do pięciu.

Podług niektórych relacji, astronauci nieumyślnie pozostawili włączony radar rendezvous, powodując uruchomienie tych alarmów (to, czy radar został pozostawiony włączony nieumyślnie przez astronautów, jest kwestionowane przez Roberta Willsa z National Museum of Computing). Komputer był przeciążony przerwami spowodowanymi nieprawidłowym fazowaniem zasilania radaru lądownika. Alarmy programu wskazywały na „przepełnienie układu wykonawczego”, co oznaczało, że komputer naprowadzający nie mógł wykonać wszystkich swoich zadań w czasie rzeczywistym i musiał odłożyć niektóre z nich na później. Asynchroniczny układ wykonawczy zaprojektowany przez J. Halcombe Laninga został wykorzystany przez zespół Hamiltona do opracowania asynchronicznego oprogramowania lotu:

Z powodu systemowych technik wykrywania i odzyskiwania błędów oprogramowania lotu, które obejmowały jego ogólnosystemowe podejście do restartu „kill and recompute” z „bezpiecznego miejsca” do jego technik snapshot i rollback, Display Interface Routines (AKA the priority displays) wraz z jego możliwościami man-in-the-loop były w stanie być stworzone, aby mieć zdolność do przerwania normalnych wyświetlaczy misji astronautów z priorytetowymi wyświetlaczami krytycznych alarmów w przypadku zagrożenia. Zależało to od przypisania unikalnego priorytetu każdemu procesowi w oprogramowaniu, aby zapewnić, że wszystkie zdarzenia będą miały miejsce w odpowiedniej kolejności i w odpowiednim czasie w stosunku do wszystkiego innego, co się dzieje.

Hamilton’s priority alarm displays interrupted the astronauts’ normal displays to warn them that there was an emergency „giving the astronauts a go/no go decision (to land or not to land)”. Jack Garman, inżynier komputerowy NASA w kontroli misji, rozpoznał znaczenie błędów, które zostały przedstawione astronautom przez wyświetlacze priorytetowe i krzyknął, „Go, go!”, a oni kontynuowali. Paul Curto, starszy technolog, który nominował Hamiltona do nagrody NASA Space Act Award, nazwał pracę Hamiltona „fundamentem ultra-reliable software design”.

Hamilton napisał później o tym incydencie:

Komputer (a raczej oprogramowanie w nim) był na tyle inteligentny, by rozpoznać, że jest proszony o wykonanie większej ilości zadań niż powinien. Następnie wysłał alarm, co oznaczało dla astronauty: „Jestem przeciążony większą ilością zadań niż powinienem wykonywać w tym czasie i zamierzam zachować tylko ważniejsze zadania”; tj. te, które są potrzebne do lądowania … W rzeczywistości komputer został zaprogramowany do czegoś więcej niż tylko do rozpoznawania stanów błędu. Kompletny zestaw programów naprawczych został włączony do oprogramowania. Działanie oprogramowania, w tym przypadku, polegało na wyeliminowaniu zadań o niższym priorytecie i przywróceniu tych ważniejszych … Gdyby komputer nie rozpoznał tego problemu i nie podjął działań naprawczych, wątpię, czy Apollo 11 byłby udanym lądowaniem na Księżycu, jakim był.

– List od Margaret H. Hamilton, Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, zatytułowany „Computer Got Loaded”, opublikowany w Datamation, March 1, 1971

BusinessesEdit

W 1976 roku Hamilton współzałożyła z Saydeanem Zeldinem firmę o nazwie Higher Order Software (HOS), aby dalej rozwijać idee dotyczące zapobiegania błędom i odporności na błędy wyłaniające się z ich doświadczeń w MIT pracujących nad programem Apollo. Stworzyli produkt o nazwie USE.IT, oparty na metodologii HOS, którą opracowali na MIT. Był on z powodzeniem stosowany w wielu programach rządowych, w tym w projekcie formalizacji i implementacji C-IDEF, zautomatyzowanej wersji IDEF, języka modelowania opracowanego przez U.S. Air Force w projekcie Integrated Computer-Aided Manufacturing (ICAM). W 1980 r. brytyjsko-izraelski informatyk David Harel opublikował propozycję strukturalnego języka programowania wywodzącego się z HOS z punktu widzenia i/lub podcelów. Inni użyli HOS do sformalizowania semantyki kwantyfikatorów lingwistycznych oraz do sformalizowania projektu niezawodnych systemów wbudowanych czasu rzeczywistego.

Hamilton była dyrektorem generalnym HOS do 1984 roku i opuściła firmę w 1985 roku. W marcu 1986 roku założyła firmę Hamilton Technologies, Inc. w Cambridge, Massachusetts. Firma powstała wokół Universal Systems Language (USL) i związanego z nim zautomatyzowanego środowiska, 001 Tool Suite, opartego na jej paradygmacie rozwoju przed faktem dla projektowania systemów i rozwoju oprogramowania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.