
Margaret Heafield Hamilton (nata il 17 agosto 1936) è una scienziata informatica americana , ingegnere di sistemi e imprenditrice. È stata direttrice della Software Engineering Division del MIT Instrumentation Laboratory , che ha sviluppato software di volo a bordo per il programma Apollo della NASA. Successivamente ha fondato due società di software:
Higher Order Software nel 1976 e Hamilton Technologies nel 1986, entrambe a Cambridge, nel Massachusetts. Hamilton ha pubblicato più di 130 articoli, atti e rapporti, una sessantina di progetti e sei programmi principali. È una delle persone a cui è stato attribuito il merito di aver coniato il termine ” ingegneria del software “. Il 22 novembre 2016, Hamilton ha ricevuto la Presidential Medal of Freedom dal presidente Barack Obama per il suo lavoro che ha portato allo sviluppo del software di volo di bordo per le missioni Apollo Moon della NASA.
Primi anni di vita e istruzione:
Margaret Elaine Heafield è nata il 17 agosto 1936 a Paoli, Indiana , [3] da Kenneth Heafield e Ruth Esther Heafield (nata Partington). [4] [5] Successivamente la famiglia si trasferì nel Michigan , [6] dove Margaret si diplomò alla Hancock High School nel 1954. [4] Studiò matematica all’Università del Michigan nel 1955 prima di trasferirsi all’Earlham College , dove sua madre era una alunno; [7] [8] ha conseguito una laurea in matematica con una specializzazione in filosofia nel 1958. [7] [9] Cita Florence Long, capo del dipartimento di matematica a Earlham, che l’ha aiutata con il suo desiderio di perseguire la matematica astratta e diventare un professore di matematica. [10]Dice che suo padre poeta e nonno preside l’hanno ispirata a includere un minore in filosofia nei suoi studi. [11]
Carriera:
A Boston, Hamilton inizialmente intendeva iscriversi a studi universitari in matematica astratta presso la Brandeis University . [4] Tuttavia, a metà del 1959, Hamilton iniziò a lavorare per Edward Norton Lorenz , nel dipartimento di meteorologia del MIT . [12] Ha sviluppato software per la previsione del tempo, la programmazione sui computer LGP-30 e PDP-1 presso il Project MAC di Marvin Minsky . [13] [14] [15] Il suo lavoro ha contribuito alle pubblicazioni di Lorenz sulla teoria del caos . A quel tempo, l’informaticae l’ingegneria del software non erano ancora discipline consolidate; invece, i programmatori hanno imparato sul lavoro con l’esperienza pratica. [16] Passò a un altro progetto nell’estate del 1961 e assunse e addestrò Ellen Fetter come sua sostituta. [12]
Progetto SAGE:
Dal 1961 al 1963, Hamilton ha lavorato al progetto Semi-Automatic Ground Environment (SAGE) presso il Lincoln Lab del MIT , [14] dove è stata una dei programmatori che hanno scritto il software per il prototipo di computer AN/FSQ-7 (l’XD- 1) , utilizzato dalla US Air Force per cercare velivoli potenzialmente ostili. [3] Ha anche scritto un software per un progetto di tracciamento satellitare presso l’ Air Force Cambridge Research Laboratories . [14] Il progetto SAGE era un’estensione del progetto Whirlwind , avviato dal MITcreare un sistema informatico in grado di prevedere i sistemi meteorologici e tracciarne i movimenti utilizzando simulatori. SAGE fu presto sviluppato per uso militare nella difesa aerea antiaerea. Hamilton ha detto:
“Quello che facevano quando entravi in questa organizzazione come principiante, era assegnarti questo programma che nessuno era mai riuscito a capire o far funzionare. Quando ero alle prime armi l’hanno regalato anche a me. E quello che era successo era che si trattava di una programmazione complicata, e la persona che l’aveva scritta si rallegrava del fatto che tutti i suoi commenti fossero in greco e latino. Quindi mi è stato assegnato questo programma e l’ho fatto funzionare. Ha persino stampato le sue risposte in latino e greco. Sono stata la prima a farlo funzionare”. [17]
Sono stati i suoi sforzi in questo progetto a renderla candidata per la posizione alla NASA come principale sviluppatore del software di volo Apollo. [4]
Laboratorio Draper:
Hamilton si è poi unito al Charles Stark Draper Laboratory del MIT, che ha lavorato alla missione spaziale Apollo . Hamilton è stato inizialmente assunto come programmatore per questo processo, ma è passato alla progettazione dei sistemi. Nel 1965 era responsabile di tutto il software del modulo di comando, che era tutto il software per la navigazione e la guida all’atterraggio lunare. [20] Il team di Hamilton era responsabile dello sviluppo del software in volo, [21] che includeva algoritmi progettati da vari scienziati senior per il modulo di comando Apollo, il modulo lunare Apollo e il successivo Skylab. [22] [16] Un’altra parte del suo team ha progettato e sviluppato il software di sistema. [23]Ciò includeva il rilevamento degli errori e il software di ripristino come i riavvii e le routine dell’interfaccia di visualizzazione (note anche come display prioritari), che Hamilton ha progettato e sviluppato. [24] Ha lavorato per acquisire esperienza pratica in un periodo in cui i corsi di informatica erano rari e i corsi di ingegneria del software non esistevano. [16] Hamilton è stato anche direttore della divisione di ingegneria del software. [25]
Le sue aree di competenza includono: progettazione di sistemi e sviluppo software , modellazione aziendale e di processo , paradigma di sviluppo, linguaggi di modellazione di sistemi formali , oggetti orientati al sistema per la modellazione e lo sviluppo di sistemi, ambienti con ciclo di vita automatizzato, metodi per massimizzare l’affidabilità e il riutilizzo del software , dominio analisi , correttezza grazie alle proprietà del linguaggio integrate, tecniche di architettura aperta per sistemi robusti, automazione dell’intero ciclo di vita, garanzia della qualità , integrazione continua, rilevamento degli errori e tecniche di recupero,sistemi di interfaccia uomo-macchina, sistemi operativi , tecniche di test end-to-end e tecniche di gestione del ciclo di vita. [16] [18] Questi hanno reso il suo codice incredibilmente affidabile perché hanno aiutato i programmatori a identificare e correggere le anomalie prima che diventassero problemi importanti. [26]
Programma Apollo:

In uno dei momenti critici della missione Apollo 11 , l’ Apollo Guidance Computer , insieme al software di volo di bordo, ha scongiurato l’aborto dell’atterraggio sulla Luna. Tre minuti prima che il lander lunare raggiungesse la superficie lunare, sono stati attivati diversi allarmi informatici. Il software di volo a bordo ha catturato questi allarmi con i “display che non dovrebbero mai accadere” interrompendo gli astronauti con display di allarme prioritari. [27] Hamilton si era preparato proprio per questa situazione anni prima:

«C’era un altro sistema di sicurezza che Hamilton ama ricordare. La sua innovazione di “visualizzazione prioritaria” aveva creato un rischio a catena che l’astronauta e il computer perdessero la sincronia proprio quando contava di più. Man mano che gli allarmi scattavano e i display prioritari sostituivano quelli normali, l’effettivo passaggio a nuovi programmi dietro gli schermi stava avvenendo “un passo più lentamente” di quanto sarebbe oggi“.
“Hamilton ci aveva pensato a lungo e intensamente. Significava che se Aldrin, diciamo, avesse premuto troppo velocemente un pulsante sul display di priorità, avrebbe potuto comunque ottenere una risposta “normale”. La sua soluzione: quando vedi un display prioritario, prima conta fino a cinque“. [28]
Secondo alcuni resoconti, gli astronauti avevano inavvertitamente lasciato acceso il radar rendezvous, provocando l’attivazione di questi allarmi (l’affermazione che il radar sia stato lasciato acceso inavvertitamente dagli astronauti è contestata da Robert Wills con il National Museum of Computing [29] ). Il computer era sovraccarico di interruzioni causate dall’alimentazione in fase errata fornita al radar rendezvous del lander. [30] [31] [32] Gli allarmi del programma indicavano “overflow esecutivi”, il che significava che il computer di guida non poteva completare tutti i suoi compiti in tempo reale e doveva rimandarne alcuni. [33] L’esecutivo asincrono progettato da J. Halcombe Laning [34] [30] [35]è stato utilizzato dal team di Hamilton per sviluppare software di volo asincrono:
“A causa delle tecniche di rilevamento e ripristino degli errori del software di sistema del software di volo che includevano il suo approccio di “uccisione e ricalcolo” a livello di sistema da un “luogo sicuro” al riavvio delle sue tecniche di snapshot e rollback, le routine dell’interfaccia di visualizzazione (alias i display di priorità) insieme con le sue capacità man-in-the-loop è stato possibile creare per avere la capacità di interrompere le normali visualizzazioni della missione degli astronauti con visualizzazioni prioritarie di allarmi critici in caso di emergenza. Ciò dipendeva dall’assegnazione di una priorità univoca a ogni processo nel software per garantire che tutti i suoi eventi si svolgessero nell’ordine corretto e al momento giusto rispetto a tutto ciò che stava accadendo“. [36]
I display di allarme prioritario di Hamilton hanno interrotto i normali display degli astronauti per avvertirli che c’era un’emergenza “dando agli astronauti una decisione di andare / non andare (di atterrare o non atterrare)”. [37] Jack Garman , un ingegnere informatico della NASA nel controllo della missione, ha riconosciuto il significato degli errori che sono stati presentati agli astronauti dai display di priorità e ha gridato: “Vai, vai!” e hanno continuato. [38] Paul Curto, tecnologo senior che ha nominato Hamilton per un NASA Space Act Award, ha definito il lavoro di Hamilton “la base per la progettazione di software ultra affidabile“. [23] Hamilton in seguito scrisse dell’incidente:
“Il computer (o meglio il software in esso contenuto) era abbastanza intelligente da riconoscere che gli veniva chiesto di eseguire più attività di quelle che avrebbe dovuto eseguire. Quindi ha inviato un allarme, che significava per l’astronauta: “Sono sovraccarico di più compiti di quanti dovrei svolgere in questo momento e manterrò solo i compiti più importanti”; cioè, quelli necessari per l’atterraggio… In realtà, il computer era programmato per fare qualcosa di più che riconoscere le condizioni di errore. Nel software è stato incorporato un set completo di programmi di ripristino. L’azione del software, in questo caso, è stata quella di eliminare le attività con priorità inferiore e ristabilire quelle più importanti… Se il computer non avesse riconosciuto questo problema e non avesse intrapreso un’azione di ripristino, dubito che l’Apollo 11 sarebbe stata la luna di successo l’atterraggio è stato“. — dalla Lettera di Margaret H. Hamilton, direttrice dell’Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, intitolata “Computer Got Loaded”, pubblicata su Datamation , 1 marzo 1971 [39]
Aziende:
Nel 1976, Hamilton ha co-fondato con Saydean Zeldin una società chiamata Higher Order Software (HOS) [40] per sviluppare ulteriormente le idee sulla prevenzione degli errori e la tolleranza ai guasti che emergono dalla loro esperienza al MIT lavorando al programma Apollo. [20] [41] Hanno creato un prodotto chiamato USE.IT, basato sulla metodologia HOS che hanno sviluppato al MIT. [42] [43] [44] È stato utilizzato con successo in numerosi programmi governativi [45] [46] incluso un progetto per formalizzare e implementare C-IDEF, una versione automatizzata di IDEF , un linguaggio di modellazione sviluppato dall’aeronautica americana in il progetto ICAM ( Integrated Computer Aided Manufacturing ).[47] Nel 1980, l’informatico britannico-israeliano David Harel pubblicò una proposta per un linguaggio di programmazione strutturato derivato da HOS dal punto di vista di e/o sotto- obiettivi. [48] Altri hanno utilizzato HOS per formalizzare la semantica dei quantificatori linguistici, [49] e per formalizzare la progettazione di sistemi embedded affidabili in tempo reale. [50]
Hamilton è stata l’amministratore delegato di HOS fino al 1984 [20] e ha lasciato l’azienda nel 1985. Nel marzo 1986 ha fondato Hamilton Technologies, Inc. a Cambridge, Massachusetts . L’azienda è stata sviluppata attorno all’Universal Systems Language (USL) e al suo ambiente automatizzato associato, la 001 Tool Suite, basata sul suo paradigma di sviluppo prima del fatto per la progettazione di sistemi e lo sviluppo di software. [32] [51] [52]
Eredità:
Ad Anthony Oettinger , [53] Barry Boehm , e Hamilton è stato attribuito il nome della disciplina di ” ingegneria del software “. [54] [55] [56] Hamilton descrive in dettaglio come è arrivata a inventare il termine “ingegneria del software”:
“Quando ho inventato il termine per la prima volta, nessuno ne aveva mai sentito parlare prima, almeno nel nostro mondo. È stato uno scherzo in corso per molto tempo. A loro piaceva prendermi in giro sulle mie idee radicali. È stato un giorno memorabile quando uno dei più rispettati guru dell’hardware ha spiegato a tutti in una riunione che era d’accordo con me sul fatto che anche il processo di creazione del software dovrebbe essere considerato una disciplina ingegneristica, proprio come con l’hardware. Non a causa della sua accettazione del nuovo “termine” in sé, ma perché ci eravamo guadagnati l’accettazione sua e degli altri nella stanza come appartenenti a un campo di ingegneria a sé stante“. [36]

Quando Hamilton iniziò a usare il termine “ingegneria del software” durante le prime missioni Apollo, [57] lo sviluppo del software non fu preso sul serio rispetto ad altri tipi di ingegneria, [58] né era considerato una scienza. Hamilton si preoccupava di legittimare lo sviluppo del software come disciplina ingegneristica. [59] Nel corso del tempo il termine “ingegneria del software” ha guadagnato lo stesso rispetto di qualsiasi altra disciplina tecnica. [54] [60] Il numero di settembre/ottobre 2018 di IEEE Software celebra il 50° anniversario dell’ingegneria del software. [61]Hamilton parla degli “errori” e di come hanno influenzato il suo lavoro relativo all’ingegneria del software e di come il suo linguaggio, USL, potrebbe essere utilizzato per prevenire la maggior parte degli “errori” in un sistema. [62] Scrivendo su Wired , Robert McMillan ha osservato: “Al MIT ha assistito alla creazione dei principi fondamentali nella programmazione dei computer mentre lavorava con i suoi colleghi alla scrittura del codice per il primo computer portatile al mondo”. [63] Le innovazioni di Hamilton vanno oltre le imprese di svolgere un ruolo importante nel portare gli esseri umani sulla Luna. Secondo Karen Tegan Padir di Wired : “ Lei, insieme a quell’altra pioniera della programmazione, l’ inventore di COBOL Grace Hopper, meritano anche un enorme merito per aver contribuito ad aprire la porta a più donne per entrare e avere successo in campi STEM come il software.” [64] [65]
Nel 2019, per festeggiare i 50 anni dallo sbarco dell’Apollo, Google ha deciso di rendere omaggio ad Hamilton. Gli specchi dello stabilimento di Ivanpah sono stati configurati per creare un’immagine di Hamilton e dell’Apollo 11 al chiaro di luna. [66]
Premi:

- Nel 1986, Hamilton ha ricevuto l’ Augusta Ada Lovelace Award dall’Association for Women in Computing . [9] [67]
- Nel 2003 le è stato conferito il NASA Exceptional Space Act Award per i contributi scientifici e tecnici. Il premio includeva $ 37.200, l’importo più alto assegnato a qualsiasi individuo nella storia della NASA. [23] [68]
- Nel 2009 ha ricevuto l’Outstanding Alumni Award dall’Earlham College . [9]
- Nel 2016 ha ricevuto da Barack Obama la Presidential Medal of Freedom , la più alta onorificenza civile degli Stati Uniti. [2] [69] [70] [71]
- Il 28 aprile 2017 ha ricevuto il Computer History Museum Fellow Award, che premia uomini e donne eccezionali le cui idee informatiche hanno cambiato il mondo. [25] [72]
- Nel 2017 è stato messo in vendita un set LEGO “Women of NASA” con minifigure di Hamilton, Mae Jemison , Sally Ride e Nancy Grace Roman . [73]
- Nel 2018 le è stato conferito un dottorato honoris causa dall’Università Politecnica della Catalogna . [74]
- Nel 2019 le è stato conferito il Washington Award. [75]
- Nel 2019 le è stato conferito un dottorato honoris causa dal Bard College . [76]
- Nel 2019 le è stato conferito l’Intrepid Lifetime Achievement Award. [77]
Pubblicazioni:
- Hamilton, M.; Zeldin, S. (marzo 1976). “Software di ordine superiore: una metodologia per la definizione del software”. Transazioni IEEE sull’ingegneria del software . SE-2 (1): 9–32. doi : 10.1109/TSE.1976.233798 . S2CID 7799553 .
- Hamilton, M.; Zeldin, S. (1 gennaio 1979). “Il rapporto tra progetto e verifica”. Rivista di sistemi e software . 1 : 29–56. doi : 10.1016/0164-1212(79)90004-9 .
- Hamilton, M. (aprile 1994). “Sviluppo interno prima del fatto” . (Storia di copertina). Supplemento editoriale speciale. 8ES-24ES. Progettazione elettronica .
- Hamilton, M. (giugno 1994). “001: un ambiente di sviluppo software e ingegneria dei sistemi a ciclo di vita completo” . (Storia di copertina). Supplemento editoriale speciale. 22ES-30ES. Progettazione elettronica .
- Hamilton, M.; Hackler, WR (2004). “Principi di architettura software comune dell’unità di navigazione di guida profondamente integrata (DI-GNU)” . (Revisionato il 29 dicembre 2004). DAAAE30-02-D-1020 e DAAB07-98-D-H502/0180, Picatinny Arsenal, NJ, 2003-2004.
- Hamilton, M.; Hackler, WR (2007). ” Linguaggio dei sistemi universali per l’ingegneria preventiva dei sistemi “, Proc. 5° ann. Conf. Ing. Sistemi Ris. (CSER), Stevens Institute of Technology, marzo 2007, documento n. 36.
- Hamilton, M.; Hackler, WR (2007). ” Una semantica formale dei sistemi universali per SysML “. 17° Simposio Internazionale Annuale, INCOSE 2007, San Diego, CA, giugno 2007.
- Hamilton, M.; Hackler, WR (2008). ” Linguaggio dei sistemi universali: lezioni apprese da Apollo “. Computer IEEE , dicembre 2008.
- Hamilton, MH (settembre 2018). “Cosa ci dicono gli errori” . Software IEEE . 35 (5): 32–37. doi : 10.1109/MS.2018.290110447 . S2CID 52896962 .
Vita personale:
Hamilton ha una sorella di nome Kathryn. [78] Ha incontrato il suo primo marito, James Cox Hamilton, [79] a metà degli anni ’50 mentre frequentava il college. Si sposarono il 15 giugno 1958, l’estate dopo che si era laureata a Earlham. [80] [79] Insegnò per un breve periodo matematica e francese nelle scuole superiori in una scuola pubblica a Boston, nell’Indiana . [80] [14] La coppia si è poi trasferita a Boston , Massachusetts , [14] dove hanno avuto una figlia, Lauren, nata il 10 novembre 1959. [4] Divorziarono nel 1967 e Margaret sposò Dan Lickly due anni dopo. [79] [81]
Video approfondimenti:
#MargaretHamilton #apollo11 #nasa #luna