マーガレット・ハミルトン (科学者)

生い立ち

ケニス・ハーフィールドとルース・エスター・ハーフィールド（旧姓パーティングトン）の間に生まれた。1954年にハンコック高校を卒業し、1958年、アーラム大学において、数学と副専攻の哲学の分野でBA（Bachelor of Arts）を獲った。卒業後、夫が学士号を獲るまでの間、一時的に高校数学とフランス語を教えた。その後ブランダイス大学の大学院で純粋数学を学ぶため、ボストンへと移り住んだ。1960年、気象学のエドワード・ローレンツ教授のもとでコンピュータLGP-30とPDP-1（マービン・ミンスキーのプロジェクト）による天気予報用ソフトウェアを開発するため、マサチューセッツ工科大学(MIT)の暫定的な職に就いた。コンピュータ科学やソフトウェア工学は現代と比べれば未確立であり、プログラマたちは現場で、それらに相当するものを実践から確立している状況だった。
1961年から1963年まで、リンカーン研究所で防空管制システムSAGEのプロジェクトに関わった。そこでハミルトンは、「敵性航空機」を見つけ出すための、最初のAN/FSQ-7コンピュータ（XD-1）用のソフトウェアを書くプログラマーの１人だった。また、空軍ケンブリッジ研究所用のソフトウェアも担当した。

SAGEプロジェクト

MITによって始められたWhirlwindプロジェクトの拡張によって、天気を予測できるシステムや、行動を追跡できるシミュレータといったコンピュータシステムが作られるようになると、SAGEは間もなく、冷戦時におけるソ連からの潜在的な攻撃を防ぐための対空防御として軍事利用するために発展した。ハミルトンは、担当分野における自身の任務について次のように述べている。
新人としてこの組織に入り込んだとき、組織がしていたことは、その人に、今までだれも解決できていない、または走らせることができていないプログラムを任せることでした。私が入ってきたときもそうでした。そしてそれはやっかいなプログラムで、おまけにこれを書いた人は、全てのコメントをギリシャ語とラテン語でつけるという、楽しいことをしてくれていました。それで私はこのプログラムを任されて、実際に動かすことができました。ついでに回答をラテン語とギリシャ語で出力するようにしました。動かすことができたのは私が初めてだったのです。
この努力の甲斐あって、ハミルトンはNASAにおけるアポロフライトソフトウェア開発責任者の有力候補となった。

NASA

ハミルトンはその後、MITでチャールズ・スターク・ドレイパー研究所の一員となった。当時そこではアポロ宇宙ミッションに取り組んでいた。ハミルトンは最終的にアポロ計画とスカイラブ計画用のソフトウェアプログラムの指導者であり監督者となった。
NASAでハミルトンのチームは、アポロに搭載され、誘導と月面着陸で必要となるガイダンスソフトウェアの開発責任を負うことになった。その多種のソフトウェアは、（後のスカイラブ計画を含めて）数々のミッションで使われた。ハミルトンはコンピュータ科学とソフトウェアエンジニアリングのコースや訓練が無いときには、経験を積むため現場に出て働いた。
ハミルトンの専門分野は、システムデザインとソフトウェア開発、エンタープライズモデリングとビジネスプロセスモデリングの開発パラダイム、正式なシステムモデリング言語、システムモデリングと開発のためのシステム指向オブジェクト、ライフサイクル環境の自動化、ソフトウェア品質の最大化とコードの再利用のための手法。ドメイン解析、構築された言語属性の正統性、安定したシステムにするためのオープンアーキテクチャ技術、最大限のライフサイクルの自動化、品質保証、シームレス統合、エラー検出と復旧技術、マン・マシン・インターフェイスシステム（ユーザーインターフェース）、オペレーティングシステム、エンドツーエンドテスト技術、ライフサイクル管理技術などであった。

アポロ11号

アポロ11号ミッションにおける1つの重大な局面において、アポロ誘導コンピュータソフトウェアでのハミルトンチームの仕事は、月面着陸が失敗するのを回避することになった。アポロ月着陸船が月面に降り立つ3分前、いくつかのコンピュータアラームが鳴った。ランデブーのレーダーシステム（着陸には必要ない）がコンピュータからのサイクルスチールによって知らず知らずのうちにカウンタを更新したので、コンピュータは受信データで過負荷を起こしていたためである。このとき、コンピュータの安定した仕組みによって、着陸動作を続けることができた。というのも、アポロに搭載されたフライトソフトウェアは、（着陸の際に重要な）優先度の高い命令を、優先度の低い命令に先んじて実行できるような、非同期実行を用いて作られていたのである。このときに起きたアラームは、誤ったチェックリストに起因していた。
チェックリストマニュアルに誤りがあって、ランデブーのレーダースイッチが違った場所に置かれていました。だから間違った信号がコンピュータに送られていたのです。その結果、15％長い時間をかけて誤った別の信号を受信しながら、コンピュータは着陸のための通常の機能すべてを実施するようになっていました。コンピュータ（というより、その中に入っているソフトウェア）は頭が良かったので、やらなければならない命令以上のことを頼まれたということが分かるようになっていました。それで宇宙飛行士に知らせるためにアラームを鳴らしました。「今しなければいけないこと以上の命令が入り込んできて手が回らない。だから続けるのは重要な命令だけにするよ」すなわち、着陸に必要な命令を……。実際、コンピュータはエラー状態を認識する以上のことを実行するようプログラムされていました。ソフトウェアには回復プログラム一式が組み込まれていたのです。ソフトウェアの動作としては、この場合、優先度の低い仕事を除外し、重要なものに再構築します。……もしコンピュータがこの問題を認識できずに回復動作をとらなかったら、月への着陸が上手くいったかどうか、疑わしいと思います。
—Margaret Hamilton、Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Letter to Datamation, March 1, 1971

経営

1976年から1984年まで、ハミルトンは共同で設立したハイヤー・オーダー・ソフトウェア(HOS)社のCEOであった。同社は、自社独自の手法を基盤にして、USE.ITと呼ばれる製品を開発した。
1986年には、マサチューセッツ州ケンブリッジにハミルトンテクノロジー社を創設し、CEOとなった。同社はユニバーサルシステム言語(USL)と、それに関連する自動化環境 001 Tool Suite について開発した。これはシステムデザインとソフトウェア開発のための、ハミルトンによるDevelopment Before the Factパラダイム(DBTF)を基盤としている。

業績

アンソニー・エッティンガーが作ったとされる「ソフトウェア工学」という用語を一般化させた。ハミルトンはこの分野で非同期ソフトウェア、優先度スケジュール、エンドツーエンドテスト、ヒューマン・イン・ザ・ループ決定機能のコンセプトを作り上げた人物の一人だった。たとえば、のちに信頼性を強化したソフトウェアデザインの基盤となる優先度表示がその一例として挙げられる。

私生活

夫のジェームズ・コックス・ハミルトンとはアーラム大学で知り合った。2人は1950年代後半に結婚し、ローレンという娘をもうけた。最終的には2人は離婚した。