ボストンでは、当初、ブランダイス大学で抽象数学の大学院に入学するつもりだった。 しかし、1959年の夏、ハミルトンは MIT の気象学部門の Edward Norton Lorenz のもとで働き始めた。 彼女は、マービン・ミンスキーのプロジェクトMACの導光板30とPDP-1コンピュータでプログラミングを行い、天気予報のソフトウェアを開発した。 彼女の研究は、ローレンツのカオス理論に関する出版に貢献した。 当時、コンピュータサイエンスやソフトウェア工学はまだ確立された分野ではなく、プログラマーは実地で学びました。
SAGE ProjectEdit
1961年から1963年まで、ハミルトンは MIT リンカーン研究所で半自動地上環境 (SAGE) プロジェクトを担当し、アメリカ空軍が敵対する可能性のある航空機を探索するために使用した AN/FSQ-7 コンピューター (XD-1) プロトタイプ用のソフトウェアを作成するプログラマーの 1 人となりました。 また、空軍ケンブリッジ研究所の衛星追跡プロジェクト用のソフトウェアも作成しました。 SAGEプロジェクトは、MITが気象システムを予測し、シミュレーターを使ってその動きを追跡できるコンピューターシステムを作るために始めた「ワールウィンド計画」の延長線上にあるものでした。 SAGEはやがて、対空防空という軍事利用を目的に開発された。
この組織に初心者として入ってきたときによくされたのは、誰も解明したり実行したりすることができないようなプログラムを割り当てるということでした。 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 then joined the Charles Stark Draper Laboratory at MIT, アポロ宇宙計画に携わった ハミルトンは当初、このプロセスのプログラマーとして採用されたが、システム設計に移行した。 最終的には、ナビゲーションと月面着陸誘導のためのすべてのソフトウェアであるコマンドモジュールのソフトウェアを担当することになった。 最終的に彼女は、アポロとスカイラブのソフトウェア開発で功績のあったチームを率いた。 ハミルトンのチームは、アポロ司令船、月着陸船、それに続くスカイラブ用に、さまざまな上級科学者が設計したアルゴリズムを含む飛行中のソフトウェアの開発を担当した。 また、システムソフトウェアの設計・開発も担当しました。 これには、再起動などのエラー検出・回復ソフトウェアや、ハミルトンが設計・開発したディスプレイ・インターフェース・ルーチン(プライオリティ・ディスプレイとも呼ばれる)などが含まれる。 コンピュータサイエンスのコースが珍しく、ソフトウェアエンジニアリングのコースが存在しなかった時代に、彼女は実地経験を積むために努力した。 ハミルトンは、ソフトウェアエンジニアリング部門のディレクターも務めた。
専門分野は、システム設計とソフトウェア開発、企業とプロセスのモデリング、開発パラダイム、形式システムモデリング言語、システムモデリングと開発のためのシステム指向オブジェクト、自動ライフサイクル環境、ソフトウェアの信頼性と再利用を最大化する方法、ドメイン分析、組み込み言語特性による正確さ、堅牢なシステムのためのオープンアーキテクチャ技術、ライフサイクルの完全自動化、品質保証、シームレス統合、エラー検出と回復技術、マンマシンインターフェースシステム、OS、エンドツーエンドテスト技術、ライフサイクルマネジメント技術などである。
Apollo programEdit
アポロ 11 号ミッションの重大な瞬間の 1 つで、アポロ誘導コンピュータと搭載された飛行ソフトウェアが、月面着陸の中止を回避させました。 月着陸船が月面に到達する 3 分前に、いくつかのコンピューター アラームが作動しました。 ハミルトンは、このような事態に備えて、何年も前から準備を進めていました。 彼女の「優先ディスプレイ」の革新は、最も重要なときに宇宙飛行士とコンピューターの同期がずれてしまうという、ノックオンのリスクを生み出しました。
アラームが鳴り、優先ディスプレイが通常のディスプレイに置き換わったとき、画面の背後にある新しいプログラムへの実際の切り替えは、今日よりも「一段階遅く」行われました。
ハミルトンはこのことについて長い間考えました。
ある説明によると、宇宙飛行士はランデブー レーダーのスイッチを不注意でオンにしたままにしていたため、これらのアラームがトリガーされました (宇宙飛行士がレーダーを不注意でオンにしたかどうかは、国立コンピューター博物館の Robert Wills によって異論があるそうです)。 着陸船のランデブーレーダーに供給される電源の位相が正しくないため、コンピュータに割り込みが入り、過負荷になった。 プログラムのアラームは「エグゼクティブ・オーバーフロー」を示し、誘導コンピュータがすべてのタスクをリアルタイムで完了できず、その一部を延期せざるを得なかったことを意味する。 J.S.が設計した非同期式エグゼクティブは、その名の通り非同期式である。 Halcombe Laningによって設計された非同期エグゼクティブは、ハミルトンのチームが非同期飛行ソフトウェアを開発するために使用された。
飛行ソフトウェアのシステム-ソフトウェアのエラー検出および回復技術には、「安全な場所」からのシステム全体の「キルと再計算」再起動アプローチ、スナップショットとロールバック技術などがありました。 緊急時に宇宙飛行士の通常のミッション表示を中断して、重要なアラームを優先的に表示する機能を持たせるために、ディスプレイ・インターフェース・ルーチン(別名、優先表示)とそのマンインザループ機能を作成することができました。
ハミルトンの優先アラーム表示は、宇宙飛行士の通常の表示を中断して緊急事態であることを警告し、宇宙飛行士に (着陸するかしないかの) ゴー/ノー ゴーを決定させるのでした。 ミッションコントロールにいたNASAのコンピュータエンジニア、ジャック・ガーマンは、優先ディスプレイが宇宙飛行士に提示したエラーの意味を認識し、「行け、行け!」と叫び、彼らは続行しました。 ハミルトンを NASA スペース アクト賞に推薦した上級技術者ポール・クルトは、ハミルトンの仕事を「超信頼性のソフトウェア設計の基礎」と呼びました。
ハミルトンは後にこの出来事について次のように書いています。
コンピューター(というかその中のソフトウェア)は十分に賢く、実行すべき以上のタスクを求められていることを認識することができたのです。 これは、宇宙飛行士に対して、「今やるべきことよりも多くのタスクで負荷がかかりすぎているので、より重要なタスクだけを残す」、つまり、着陸に必要なタスクだけを残す、という意味です。 実は、コンピュータはエラー状態を認識するだけでなく、それ以上のことをするようにプログラムされていた。 実は、コンピュータはエラー状態を認識するだけではなく、リカバリープログラムの一式をソフトウェアに組み込んでいたのだ。 この場合、ソフトウェアの役割は、優先順位の低いタスクを排除し、より重要なタスクを再確立することだった……。
– マーガレット・H.の手紙– アポロ11号が月面着陸を成功させたかどうかは、コンピュータがこの問題を認識し回復措置をとらなければ、疑わしい。 Hamilton, Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, title “Computer Got Loaded”, published in Datamation, March 1, 1971
BusinessesEdit
1976年に、ハミルトンは Saydean Zeldin と共同で Higher Order Software (HOS) という企業を設立し、アポロ計画に従事していた MIT の経験から生まれたエラー防止と耐障害性に関する考えをさらに発展させることに努めました。 彼らは、MITで開発したHOSの方法論に基づき、USE.ITと呼ばれる製品を作りました。 この製品は、アメリカ空軍の統合コンピュータ支援製造(ICAM)プロジェクトで開発されたモデリング言語、IDEFの自動化バージョンであるC-IDEFを形式化し実装するプロジェクトなど、数多くの政府プログラムで使用され、成功を収めたのです。 1980年には、英国・イスラエルのコンピュータ科学者David Harelが、HOSから派生した構造化プログラミング言語を、サブゴールおよび/またはサブゴールの観点から提案し、発表している。
ハミルトンは1984年までHOSのCEOを務め、1985年に同社を退社した。 1986年3月、マサチューセッツ州ケンブリッジにハミルトン・テクノロジー社を設立した。 同社は、システム設計とソフトウェア開発のための「事前開発」という彼女のパラダイムに基づき、ユニバーサルシステム言語(USL)とその関連自動化環境である001ツールスイートを中心に開発されました
。