Margaret Elaine Hamilton (nascida Heafield; nascida em 17 de agosto de 1936) é uma cientista da computação americana. Ela dirigiu a Divisão de Engenharia de Software no Laboratório de Instrumentação do MIT, onde liderou o desenvolvimento do software de voo a bordo do computador de bordo da NASA para o Programa Apollo. Mais tarde, ela fundou duas empresas de software, a Higher Order Software em 1976 e a Hamilton Technologies em 1986, ambas em Cambridge, Massachusetts.

Hamilton publicou mais de 130 artigos, atas de conferências e relatórios, sobre cerca de sessenta projetos e seis grandes programas. Ela cunhou o termo "engenharia de software", afirmando: "Comecei a usar o termo 'engenharia de software' para distingui-lo do hardware e de outros tipos de engenharia, e ainda assim tratar cada tipo de engenharia como parte do processo geral de engenharia de sistemas."

Em 22 de novembro de 2016, Hamilton recebeu a Medalha Presidencial da Liberdade do presidente Barack Obama por seu trabalho que levou ao desenvolvimento do software de voo a bordo para as missões da NASA à Lua do programa Apollo.

Primeiro anos e educação Margaret Elaine Heafield nasceu em 17 de agosto de 1936, em Paoli, Indiana, filha de Kenneth Heafield e Ruth Esther Heafield (nascida Heafield). A família mais tarde se mudou para o Michigan, onde Margaret se formou na Hancock High School em 1954.

Ela estudou matemática na Universidade de Michigan em 1955 antes de se transferir para o Earlham College, onde sua mãe tinha sido estudante. Ela obteve o bacharelado em matemática com habilitação menor em filosofia em 1958. Ela cita Florence Long, chefe do departamento de matemática de Earlham, por ter ajudado em seu desejo de seguir na matemática abstrata e se tornar uma professora de matemática.

Ela diz que seu pai, um poeta, e seu avô, um diretor de escola, a inspiraram a incluir uma habilitação menor em filosofia em seus estudos.

Carreira Em Boston, Hamilton inicialmente pretendia se matricular em uma pós-graduação em matemática abstrata na Universidade Brandeis. No entanto, em meados de 1959, Hamilton começou a trabalhar para Edward Norton Lorenz, no departamento de meteorologia do Instituto de Tecnologia de Massachusetts (MIT). Ela desenvolveu software para previsão do tempo, programando nos computadores LGP-30 e PDP-1 no Projeto MAC de Marvin Minsky. Seu trabalho contribuiu para as publicações futuras de Lorenz sobre a Teoria do caos, conforme reconhecido pelo próprio Lorenz. Na época, a ciência da computação e a engenharia de software ainda não eram disciplinas estabelecidas; em vez disso, os programadores aprendiam no trabalho, com experiência prática. Ela se transferiu para outro projeto no verão de 1961 e contratou e treinou Ellen Fetter como sua substituta.

Projeto SAGE De 1961 a 1963, Hamilton trabalhou no Projeto Semi-Automatic Ground Environment (SAGE) no Laboratório Lincoln do MIT, onde foi uma das programadoras que escreveu software para o protótipo do computador AN/FSQ-7 (o XD-1), usado pela Força Aérea dos Estados Unidos para buscar por aeronaves possivelmente inimigas. Ela também escreveu software para um projeto de rastreamento de satélites nos Laboratórios de Pesquisa da Força Aérea em Cambridge. O Projeto SAGE foi uma extensão do Projeto Whirlwind, iniciado pelo MIT para criar um sistema de computador que pudesse prever sistemas meteorológicos e rastrear seus movimentos usando simuladores. O SAGE logo foi desenvolvido para uso militar na defesa aérea antiaérea. Hamilton disse:Foram seus esforços nesse projeto que a tornaram uma candidata à posição na NASA como desenvolvedora líder para o software de voo da Apollo.

Laboratório de Instrumentação do MIT e o Apollo Guidance Computer miniaturadaimagem|Hamilton em 1969, ao lado das listagens do software de navegação da Apollo que ela e sua equipe do MIT produziram miniaturadaimagem|Hamilton durante seu tempo como designer líder do software de voo do programa Apollo Hamilton soube do projeto Apollo em 1965 e quis se envolver por ser "muito emocionante" como um programa espacial para a Lua. Ela ingressou no Laboratório de Instrumentação do MIT, que desenvolveu o Apollo Guidance Computer para o programa de exploração lunar Apollo. Hamilton foi a primeira programadora contratada para o projeto Apollo no MIT e a primeira mulher programadora no projeto, e mais tarde tornou-se Diretora da Divisão de Engenharia de Software. Ela era responsável pela equipe que escreveu e testou todo o software de bordo para o Módulo de Comando e Módulo Lunar da espaçonave Apollo e para a posterior estação espacial Skylab. Outra parte de sua equipe projetou e desenvolveu o software de sistema.Michael Braukus NASA News "NASA Honors Apollo Engineer" (3-9-2003) Isso incluía o software de detecção e recuperação de erros, como reinicializações e as Rotinas de Interface de Exibição (também conhecidas como Telas de Prioridade), projetadas e desenvolvidas por Hamilton. Ela trabalhou para obter experiência prática durante uma época em que os cursos de ciência da computação eram raros e não existiam cursos de engenharia de software.

As áreas de especialidade de Hamilton incluem projeto de sistemas e desenvolvimento de software, modelagem empresarial e de processos, paradigma de desenvolvimento, linguagens formais de modelagem de sistemas, objetos orientados a sistemas para modelagem e desenvolvimento de sistemas, ambientes automatizados de ciclo de vida, métodos para maximizar a confiabilidade e reutilização de software, análise de domínio, corretude por propriedades embutidas na linguagem, técnicas de arquitetura aberta para sistemas robustos, automação completa do ciclo de vida, garantia de qualidade, integração perfeita, técnicas de detecção e recuperação de erros, sistemas de interface homem-máquina, sistemas operacionais, técnicas de testes ponta a ponta e técnicas de gerenciamento do ciclo de vida. Essas técnicas visam tornar o código mais confiável porque ajudam os programadores a identificar e corrigir erros mais cedo no processo de desenvolvimento.

Pouso da Apollo 11 Em um dos momentos críticos da missão Apollo 11, o Apollo Guidance Computer, junto com o software de voo de bordo, evitou o aborto do pouso na Lua. Três minutos antes de o módulo lunar atingir a superfície da Lua, vários alarmes do computador foram acionados. De acordo com o engenheiro de software Robert Wills, Buzz Aldrin digitou os códigos para solicitar que o computador exibisse a altitude e outros dados na tela. O sistema foi projetado para suportar sete programas executados simultaneamente, mas a solicitação de Aldrin era a oitava. Essa ação era algo que ele havia solicitado muitas vezes enquanto trabalhava no simulador. O resultado foi uma série de códigos de erro inesperados durante a descida em tempo real. O software de voo de bordo capturou esses alarmes com as "telas que nunca deveriam acontecer", interrompendo os astronautas com telas de alarme prioritárias. Hamilton se preparara para essa exata situação anos antes:Segundo alguns relatos, os astronautas deixaram inadvertidamente o interruptor do radar de aproximação ligado, fazendo com que esses alarmes fossem acionados (a afirmação de que o radar foi deixado ligado inadvertidamente pelos astronautas é contestada por Robert Wills, do The National Museum of Computing). O computador ficou sobrecarregado com interrupções causadas por energia fornecida de forma incorretamente faseada ao radar de aproximação do módulo lunar. Os alarmes do programa indicavam "estouro do executivo", o que significava que o computador de orientação não conseguia concluir todas as suas tarefas em tempo real e teve que adiar algumas delas. Capítulo 11.4. O executivo assíncrono projetado por J. Halcombe Laning foi usado pela equipe de Hamilton para desenvolver o software de voo assíncrono:As telas de alarme de prioridade de Hamilton interromperam as exibições normais dos astronautas para alertá-los de que havia uma emergência, "dando aos astronautas uma decisão de ir/não ir (pousar ou não pousar)". Jack Garman, um engenheiro de computação da NASA no controle da missão, reconheceu o significado dos erros apresentados aos astronautas pelas telas prioritárias e gritou: "Go, go!" ("Vai, vai!"), e eles continuaram. Paul Curto, um tecnologista sênior que indicou Hamilton para o NASA Space Act Award, chamou o trabalho de Hamilton de "a base para o projeto de software ultra-confiável".

Hamilton mais tarde escreveu sobre o incidente:

Empresas Em 1976, Hamilton cofundou com Saydean Zeldin uma empresa chamada Higher Order Software (HOS) para desenvolver ainda mais ideias sobre prevenção de erros e tolerância a falhas emergentes de sua experiência no MIT trabalhando no programa Apollo. Elas criaram um produto chamado USE.IT, baseado na metodologia HOS que desenvolveram no MIT.M. Hamilton, S. Zeldin (1976) "Higher order software—A methodology for defining software" IEEE Transactions on Software Engineering, vol. SE-2, no. 1, Mar. 1976.Thompson, Arthur A.; Strickland, A. J., (1996), "Strategic Management: Concepts and Cases", McGraw-Hill Companies, Ele foi usado com sucesso em inúmeros programas governamentais incluindo um projeto para formalizar e implementar o C-IDEF, uma versão automatizada do IDEF, uma linguagem de modelagem desenvolvida pela Força Aérea dos EUA no projeto Integrated Computer-Aided Manufacturing (ICAM). Em 1980, o cientista da computação britânico-israelense David Harel publicou uma proposta para uma linguagem de programação estruturada derivada do HOS do ponto de vista de submetas e/ou. Outros usaram o HOS para formalizar a semântica de quantificadores linguísticos, e para formalizar o projeto de sistemas embarcados em tempo real confiáveis.

Hamilton foi a CEO da HOS até 1984 e deixou a empresa em 1985. Em março de 1986, ela fundou a Hamilton Technologies, Inc. em Cambridge, Massachusetts. A empresa foi desenvolvida em torno da Universal Systems Language (USL) e seu ambiente automatizado associado, o 001 Tool Suite, com base em seu paradigma de desenvolvimento antes do fato para projeto de sistemas e desenvolvimento de software.

Legado miniaturadaimagem|Foto oficial para a NASA, 1989