Margaret Hamilton (ingegnere del software)

A Boston, inizialmente intendeva iscriversi a studi di matematica astratta alla Brandeis. Tuttavia, nell’estate del 1959, Hamilton iniziò a lavorare per Edward Norton Lorenz, nel dipartimento di meteorologia del MIT. Sviluppò software per prevedere il tempo, programmando sul LGP-30 e sui computer PDP-1 del Progetto MAC di Marvin Minsky. Il suo lavoro contribuì alle pubblicazioni di Lorenz sulla teoria del caos. A quel tempo, l’informatica e l’ingegneria del software non erano ancora discipline affermate; invece, i programmatori imparavano sul lavoro con l’esperienza pratica. Passò ad un altro progetto nell’estate del 1961, e assunse e formò Ellen Fetter come sua sostituta.

SAGE ProjectEdit

Dal 1961 al 1963, Hamilton lavorò al Semi-Automatic Ground Environment (SAGE) Project al MIT Lincoln Lab, dove fu una dei programmatori che scrisse il software per il prototipo di computer AN/FSQ-7 (l’XD-1), usato dalla U.S. Air Force per cercare aerei possibilmente ostili. Scrisse anche il software per un progetto di localizzazione satellitare presso gli Air Force Cambridge Research Laboratories. Il progetto SAGE era un’estensione del progetto Whirlwind, iniziato dal MIT per creare un sistema informatico che potesse prevedere i sistemi meteorologici e tracciare i loro movimenti usando 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 di assegnarti questo programma che nessuno era mai riuscito a capire o a far funzionare. 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, che lavorava alla missione spaziale Apollo. Hamilton è stato inizialmente assunto come programmatore per questo processo, ma è passato alla progettazione di sistemi. Alla fine, fu responsabile di tutto il software del Modulo di Comando, che era tutto il software per la navigazione e la guida all’atterraggio lunare. Alla fine ha guidato un team accreditato per lo sviluppo del software per Apollo e Skylab. Il team di Hamilton era responsabile dello sviluppo del software in volo, che comprendeva algoritmi progettati da vari scienziati senior per il modulo di comando Apollo, il lander lunare e il successivo Skylab. Un’altra parte del suo team ha progettato e sviluppato il software dei sistemi. Questo includeva il software di rilevamento e recupero degli errori come i riavvii e le Routine di interfaccia del display (note anche come display di priorità), che Hamilton ha progettato e sviluppato. Ha lavorato per acquisire esperienza pratica in un periodo in cui i corsi di informatica non erano comuni e quelli di ingegneria del software non esistevano. Hamilton è stato anche direttore della divisione di ingegneria del software.

Le sue aree di competenza comprendono: progettazione di sistemi e sviluppo di software, modellazione aziendale e di processo, paradigma di sviluppo, linguaggi formali di modellazione di sistemi, oggetti orientati al sistema per la modellazione e lo sviluppo di sistemi, ambienti automatizzati del ciclo di vita, metodi per massimizzare l’affidabilità e il riutilizzo del software, analisi del dominio, correttezza mediante proprietà integrate nel linguaggio, tecniche di architettura aperta per sistemi robusti, automazione dell’intero ciclo di vita, garanzia della qualità, integrazione senza soluzione di continuità, tecniche di rilevamento e recupero degli errori, sistemi di interfaccia uomo-macchina, sistemi operativi, tecniche di test end-to-end e tecniche di gestione del ciclo di vita. Questi hanno reso il suo codice incredibilmente affidabile perché hanno aiutato i programmatori a identificare e correggere le anomalie prima che diventassero problemi gravi.

Apollo programEdit

In uno dei momenti critici della missione Apollo 11, l’Apollo Guidance Computer insieme al software di volo di bordo ha evitato un aborto dell’atterraggio sulla Luna. Tre minuti prima che il lander lunare raggiungesse la superficie lunare, sono scattati diversi allarmi del computer. Il software di volo di bordo ha catturato questi allarmi con i “display di priorità” interrompendo gli astronauti con display di priorità.Hamilton si era preparato proprio per questa situazione anni prima:

C’era un altro failsafe che Hamilton ama ricordare. La sua innovazione del “display prioritario” aveva creato un rischio a catena che astronauta e computer sfuggissero alla sincronizzazione proprio quando era più importante. Mentre gli allarmi si spegnevano e i display prioritari sostituivano quelli normali, il passaggio effettivo ai nuovi programmi dietro gli schermi avveniva “un passo più lento” di quanto avverrebbe oggi.

Hamilton aveva pensato a lungo e duramente a questo. Significava che se Aldrin, per esempio, premeva un pulsante sul display prioritario troppo velocemente, poteva ancora ottenere una risposta “normale”. La sua soluzione: quando vedi un display di priorità, conta prima fino a cinque.

Secondo alcuni resoconti, gli astronauti avevano inavvertitamente lasciato acceso l’interruttore del radar del rendezvous, facendo scattare questi allarmi (se il radar sia stato lasciato acceso inavvertitamente dagli astronauti è contestato da Robert Wills del National Museum of Computing). Il computer era sovraccarico di interruzioni causate dall’alimentazione erroneamente fasata fornita al radar di rendez-vous del lander. Gli allarmi del programma indicavano “executive overflows”, cioè il computer di guida non poteva completare tutti i suoi compiti in tempo reale e doveva rimandarne alcuni. L’esecutivo asincrono progettato da J. Halcombe Laning fu usato dal team di Hamilton per sviluppare un software di volo asincrono:

A causa delle tecniche di rilevamento e recupero degli errori del software di volo che includevano il suo approccio di sistema “kill and recompute” da un “posto sicuro” restart alle sue tecniche di snapshot e rollback, le Display Interface Routines (AKA le visualizzazioni prioritarie) insieme alle sue capacità man-in-the-loop sono state in grado di essere create per avere la capacità di interrompere le normali visualizzazioni della missione degli astronauti con visualizzazioni prioritarie di allarmi critici in caso di emergenza. Questo dipendeva dall’assegnazione di una priorità unica a ogni processo nel software per garantire che tutti i suoi eventi avvenissero nell’ordine corretto e al momento giusto rispetto a tutto il resto che stava accadendo.

I display di allarme prioritari di Hamilton interrompevano i normali display degli astronauti per avvisarli che c’era un’emergenza “dando agli astronauti una decisione go/no go (di atterrare o non atterrare)”. Jack Garman, un ingegnere informatico della NASA nel controllo missione, riconobbe il significato degli errori che venivano presentati agli astronauti dai display di priorità e gridò: “Vai, vai!” e continuarono. 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-affidabili”.

Hamilton ha scritto in seguito sull’incidente:

Il computer (o meglio il software in esso contenuto) era abbastanza intelligente da riconoscere che gli venivano richiesti più compiti di quelli che doveva svolgere. Ha quindi inviato un allarme, che significava per l’astronauta, ‘Sono sovraccarico di più compiti di quelli che dovrei fare in questo momento e ho intenzione di mantenere solo i compiti più importanti’; cioè, quelli necessari per l’atterraggio … In realtà, il computer è stato programmato per fare più che riconoscere le condizioni di errore. Un set completo di programmi di recupero era incorporato nel software. L’azione del software, in questo caso, era di eliminare i compiti a bassa priorità e ristabilire quelli più importanti … Se il computer non avesse riconosciuto questo problema e non avesse intrapreso azioni di recupero, dubito che l’Apollo 11 sarebbe stato l’atterraggio sulla luna di successo che è stato.

– Lettera di Margaret H. Hamilton, Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, intitolata “Computer Got Loaded”, pubblicata su Datamation, 1 marzo 1971

BusinessesEdit

Nel 1976, Hamilton ha co-fondato con Saydean Zeldin una società chiamata Higher Order Software (HOS) per sviluppare ulteriormente le idee sulla prevenzione degli errori e la tolleranza agli errori emerse dalla loro esperienza al MIT lavorando sul programma Apollo. Hanno creato un prodotto chiamato USE.IT, basato sulla metodologia HOS che hanno sviluppato al MIT. Fu usato con successo in numerosi programmi governativi, compreso un progetto per formalizzare e implementare C-IDEF, una versione automatizzata di IDEF, un linguaggio di modellazione sviluppato dalla U.S. Air Force nel progetto Integrated Computer-Aided Manufacturing (ICAM). Nel 1980, l’informatico britannico-israeliano David Harel ha pubblicato una proposta per un linguaggio di programmazione strutturato derivato da HOS dal punto di vista di e/o sotto-obiettivi. Altri hanno usato HOS per formalizzare la semantica dei quantificatori linguistici e per formalizzare la progettazione di sistemi embedded affidabili in tempo reale.

Hamilton è stato il CEO di HOS fino al 1984 e ha lasciato la società nel 1985. Nel marzo 1986, ha fondato Hamilton Technologies, Inc. a Cambridge, Massachusetts. L’azienda è stata sviluppata intorno all’Universal Systems Language (USL) e al suo ambiente automatizzato associato, lo 001 Tool Suite, basato sul suo paradigma di sviluppo prima del fatto per la progettazione di sistemi e lo sviluppo di software.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.