NASA’s first software engineer: Margaret Hamilton - Matt Porter and Margaret Hamilton
- 218,557 Views
- 11,084 Questions Answered
- TEDEd Animation
The on-board flight software team led by Margaret Hamilton developed the software on the Apollo Guidance Computer (AGC) that took humans to the moon and back.
The software was developed by the software people, a new breed of engineer. The task at hand for the software people (the "software engineers"): develop the software for the Command Module (CM), the Lunar Module (LM) and the systems software (used by and residing in both the CM and the LM). The systems software included the design and development of the error detection and recovery programs such as restarts and the Display-Interface-Routines' Priority Displays. The software engineers created the overall design of the software structure (the “glue”) that held everything together as an integrated system of systems.
Updates were continuously being submitted into the software over time and over many releases for each and every mission (when software for one mission was often being worked on concurrently with software for other missions); making sure everything would play together and that the software would successfully interface to and work together with all the other systems for each mission.
Because the onboard flight software for the manned missions was asynchronous, it had the flexibility to handle the unpredictable: higher priority jobs interrupted lower priority jobs, based on events as they happened. It was up to the team to determine the relative importance of each process and to assign to it a unique priority to ensure that all events would occur in the correct order and time relative to everything else going on.
The Priority Displays interface routines gave the software the ability to communicate asynchronously in real time with the astronauts. For the first time, the new displays warned the astronauts in the case of an emergency by interrupting their normal mission displays and replacing them with priority alarms. Just before landing on the moon, the Apollo 11 computer, as a result of the rendezvous radar switch having been left on, became overloaded. The priority alarm displays were a reminder to the astronauts to put the radar switch back to where it belonged.
Since it was not possible (certainly not practical) on Apollo to test the software "before the fact" by ”flying” an actual mission, it was necessary to test the software by developing a mix of hardware and digital simulations of every (and all aspects of an) Apollo mission which included man-in-the-loop simulations (with real or simulated human interaction); and variations of real or simulated hardware and their integration in order to make sure that a complete mission from start to finish would behave exactly as expected.
Margaret Hamilton called the development of the AGC an “opportunity of a lifetime.” She said, “We were handicapped by the computer's time and space constraints, giving "software experts" the license to be “creative", resulting in tricky programming. Requirements were "thrown over the wall" by "non-software experts" who assumed that all the software programs would somehow "magically" interface together. Fortunately, this was not the case. For, if it had been, we would never have learned what we did about errors and how to prevent them.
Although there were more than enough opportunities to make errors, there were now the opportunities to come up with new ways to prevent them. We evolved “software engineering” rules and techniques with each relevant discovery. Although many errors were found during the software’s pre-flight phases, no software errors were known to have occurred during flight on any of the Apollo missions.
The Space Race
Against the backdrop of the Cold War conflict, a new kind of rivalry took shape in the early 1960s between the United States and the Soviet Union. The Russians appeared to be ahead in the so-called "race for space" as they followed their launching of the first satellite, Sputnik, in 1957 with the history-making flight of cosmonaut Yuri Gagarin in April 1961. In 1962 at Rice University, President Kennedy called for the landing of an American on the moon by the end of the decade as he sought a major mobilization of the nation's resources to catch up with and surpass the USSR in the space race.
President Kennedy understood the need to restore America's confidence and intended not merely to match the Soviets, but surpass them. On May 25, 1961, he stood before Congress to deliver a special message on "urgent national needs." He asked for an additional $7 to $9 billion over the next five years for the space program, proclaiming that the nation should commit itself to landing a man on the Moon and returning him safely to the earth by the end of the 1960s. President Kennedy settled upon this dramatic goal as a means of focusing and mobilizing the nation's lagging space efforts.
On July 20, 1969, the Apollo 11 astronauts—Neil Armstrong, Michael Collins, and Edwin "Buzz" Aldrin Jr.—realized President Kennedy's dream.
Create and share a new lesson based on this one.