# Margaret Hamilton (scientifique)

Margaret Heafield Hamilton, née Margaret Heafield le 17 août 1936, est une informaticienne, ingénieure système et cheffe d'entreprise américaine. Elle était directrice du département génie logiciel (« software engineering », terme de son invention) au sein du MIT Instrumentation Laboratory qui conçut le système embarqué du programme spatial Apollo. En 1986, elle fonde la société Hamilton Technologies, Inc. à partir de ses travaux entrepris au MIT.

## Biographie
### Famille et études

Margaret Heafield Hamilton est née à Paoli dans l'Indiana, États-Unis ; elle est la fille de Kenneth Heafield et Ruth Esther Heafield (née Partington)$^,$. Après avoir fini ses études secondaires à la Hancock High School, en 1954, elle étudie les mathématiques à l'Université du Michigan en 1955, avant d'obtenir sa licence (Bachelor of Arts) de mathématiques au sein du Earlham College en 1958 (mineure en philosophie)$^,$.
Elle déménage dans l'État du Massachusetts avec l'intention de poursuivre des études de Mathématiques pures à l'Université Brandeis mais finalement choisit d'intégrer le MIT en 1960 pour développer des programmes informatiques de prévision météorologiquesur des ordinateurs LGP-30 (en) et PDP-1$^,$ pour le professeur Edward Lorenz.

### Projet militaire SAGE

De 1961 à 1963 elle travaille sur le projet militaire SAGE au laboratoire Lincoln du MIT où elle développe des programmes de détection d'avions sur l'ordinateur géant AN/FSQ-7 (en). Elle rejoint en 1963 le Laboratoire Charles Stark Draper du MIT (en).

### Responsable de projets pour la NASA
#### Programme Apollo

Au laboratoire Draper elle travaille pour les missions du programme Apollo de la NASA sur les logiciels embarqués dans les vaisseaux spatiaux qui doivent prendre en charge la navigation et l'atterrissage sur la Lune. Elle devient responsable de l'équipe chargée du développement du logiciel embarqué utilisé par les missions Apollo puis Skylab. Elle acquiert ainsi une solide expérience sur la conception des logiciels à une époque où les méthodes de gestion et de conception des projets informatiques en sont à leur balbutiement.
Dans le cadre de ces projets informatiques, son domaine d'expertise concerne la conception de système et de développement de logiciels, la modélisation de processus, la conception de systèmes de prévention, le paradigme de développement, les systèmes formels et des langages informatiques de modélisation, la conception et de la programmation orientée objet, la gestion automatisée des cycles de vie, les méthodes de fiabilisation et de réutilisation des logiciels, l'analyse de domaine, l'exactitude de propriétés linguistiques intégrées, les techniques d'architecture ouverte pour des systèmes robustes, l'automatisation du cycle de vie complet, l'assurance qualité, l'intégration transparente, les systèmes distribués, les techniques de détection d'erreur et de récupération, les systèmes d'interface homme-machine, les systèmes d'exploitation, les techniques de test bout en bout et des techniques de gestion du cycle de vie.
Elle innove dans le domaine du processus de construction des programmes de vols et de leur environnement de développement, en normalisant et en rationalisant ces processus dans toutes les phases de développement, qui sont réutilisés de version en version, ou entre les logiciels du LM et le CM, jusqu'au programme Skylab.

#### Apollo 11

La qualité des programmes développés sous la supervision d'Hamilton et du système d'exploitation de J. Halcombe Laning installés sur l'ordinateur Apollo Guidance Computer (AGC) ont joué un rôle crucial au cours de la mission Apollo 11 en évitant une interruption de l'atterrissage du module lunaire Apollo sur la Lune.
Trois minutes avant que le module lunaire Apollo atteigne la surface de la Lune, des alarmes informatiques répétées se déclenchent. Elles signalent que l'ordinateur AGC est saturé. Par ailleurs, l'ordinateur de navigation ainsi que l’ordinateur de pilotage transmettent des ordres contradictoires.
Grâce à l'architecture du système d'exploitation attribuant des priorités aux programmes, l'ordinateur réussit néanmoins à mener sa mission principale consistant à poser le module lunaire sur la Lune. Le logiciel était conçu en utilisant des exécutions asynchrones de telle manière que les tâches ayant la plus haute priorité (essentielles à l'atterrissage) puissent interrompre des tâches moins prioritaires. L'analyse de l'incident effectuée après la mission l'avait attribué à une erreur de l'équipage qui aurait laissé le radar fonctionner dans cette phase de vol saturant les capacités de calcul limitées de l'AGC. Une nouvelle analyse réalisée en 2005 a conclu qu'il s'agissait d'une erreur dans la conception matérielle du radar qui continuait à envoyer des informations à l'ordinateur alors qu'il avait été mis en veille par l'équipage.
   « Suite à une erreur dans le manuel décrivant la checklist, le bouton d'arrêt du radar de rendez-vous a été placé dans la mauvaise position. Ce qui a provoqué l'envoi de mauvais signaux à l'ordinateur. Il était ainsi demandé à l'ordinateur de réaliser toutes les tâches liées à l'atterrissage tout en recevant une charge supplémentaire qui utilisait plus de 15 % du temps de traitement. L'ordinateur (ou plutôt son logiciel) a été assez intelligent pour reconnaître qu'on lui demandait d'effectuer plus de tâches qu'il ne devait en accomplir. Il a lancé une alarme qui indiquait aux astronautes "J'ai trop de tâches à effectuer par rapport à ce que je suis en mesure de réaliser et je vais continuer en n'effectuant que les tâches les plus importantes", c'est-à-dire celles associées à l'atterrissage. En fait, l'ordinateur était programmé pour faire mieux que simplement identifier une situation d'erreur. Des programmes de récupération avaient été incorporés dans le logiciel qui permettaient d'éliminer les tâches ayant les priorités plus faibles et d’exécuter les plus importantes. Si l'ordinateur n'avait pas reconnu le problème et entrepris ces actions de récupérations, je doute qu'Apollo 11 aurait réussi son atterrissage sur la Lune comme il l'a fait. »
— Margaret Hamilton, Lettre à Datamation (en), 1er mars 1971

### Carrière post-MIT

De 1976 à 1984, Hamilton est la PDG de l'entreprise Higher Order Software (HOS), qu'elle co-fonde avec Saydean Zeldin, d'après son expérience au MIT où elle a développé des techniques, notamment pour la détection des erreurs. L'entreprise produit un programme appelé USE.IT basé sur la technologie HOS développée au MIT. Il est utilisé dans de nombreux projets gouvernementaux.
En 1986, elle crée et dirige la société Hamilton Technologies qui met au point un nouveau langage de programmation : l'Universal Systems Language (en) (USL) et son environnement automatique associé, le « 001 Tool Suite ». Cet environnement est basé sur le paradigme « Development Before The Fact » (DBTF) pour le design de systèmes et le développement logiciel. Le DBTF est mis au point lors de son expérience avec la NASA.

## Un rôle de précurseur en rupture avec les usages de l'époque

Dans les années 1960 Margaret Hamilton constituait une exception dans le milieu scientifique essentiellement masculin dans lesquels les postes de responsabilité technique étaient rarement attribués aux femmes. Toutefois, l'informatique était encore peu reconnue, et peu prisée par les hommes. Mère d'une petite fille, elle devait affronter les critiques des personnes qui ne comprenaient pas qu'une mère puisse poursuivre une carrière en parallèle. Malgré les réalisations et les innovations de Margaret Hamilton, la proportion de femmes dans ce domaine reste faible. Elle est notamment citée dans l'initiative de Maia Weinstock pour que Lego crée des figurines pour rendre hommage aux « femmes de la Nasa ».

## Récompenses et hommages

* 1986, Prix Ada-Lovelace, Association for Women in Computing.
* 2003, NASA Exceptional Space Act Award for scientific and technical contributions. Cette récompense de 37 200 $ représente la plus forte somme donnée en récompense à un individu de l'histoire de la NASA$^,$$^,$.
* 2009, Outstanding Alumni Award, Earlham College.
* 2016, médaille présidentielle de la Liberté de la part de Barack Obama, la plus haute distinction civile aux États-Unis$^,$
* 2017, « Computer History Museum Fellow Award »$^,$.
* 2017, Figurine LEGO à son effigie au sein d'un lot « Women of NASA » dont Mae Jemison, Sally Ride et Nancy Grace Roman.
* 2018 Doctorat Honoris Causa de l'Université polytechnique de Catalogne.
* 2019, pour célébrer les 50 ans de l'alunissage d'Apollo 11, Google décide de rendre hommage à Margaret Hamilton. Les miroirs de l'installation solaire Ivanpah sont configurés de manière à refléter la lumière de la Lune pour créer une image de Margaret Hamilton et d'Apollo 11.
* 2022, National Aviation Hall of Fame.

## Publications

Hamilton a publié plus de 130 articles et rapports concernant la soixantaine de projets et les 6 programmes majeurs auxquels elle a participé.
* M. Hamilton, S. Zeldin (1976) "Higher order software—A methodology for defining software" IEEE Transactions on Software Engineering, vol. SE-2, no. 1, mars 1976.
* M. Hamilton (1994), Inside Development Before the Fact, cover story, Editorial Supplement, 8ES-24ES. Electronic Design, Apr. 1994.
* M. Hamilton, Hackler, W.R.. (2004), Deeply Integrated Guidance Navigation Unit (DI-GNU) Common Software Architecture Principles (revised dec-29-04), DAAAE30-02-D-1020 and DAAB07-98-D-H502/0180, Picatinny Arsenal, NJ, 2003-2004.
* M. Hamilton and W.R. M. Hackler (2007), Universal Systems Language for Preventative Systems Engineering, Proc. 5th Ann. Conf. Systems Eng. Res. (CSER), Stevens Institute of Technology, mars 2007, paper #36.