Apollo and the Birth of Software Engineering
The AGC software together with the Apollo Guidance Computer (AGC) was a revolutionary leap in technology that helped navigate the Apollo astronauts to the moon and back fifty years ago. The MIT instrumentation lab was awarded the first Apollo contract by NASA to design the computer and its software. The MIT engineering team would be basically starting from scratch.
And we’re not talking just about the nuts and bolts...the hardware. Software would need to be “programmed” and the software would be ground breaking. The design work at MIT IL would be one of the earliest foundations for computer programmers–even the term “software engineering” would be coined at the lab during this project. Just like the spacecraft and the computer hardware, the software had to be developed from scratch and evolved as NASA got closer and closer to the manned flights.
On-board flight software for the manned missions was developed for both the Command and Lunar Module computers. In addition to the operating system, the AGC had both an assembly language and a sophisticated software interpreter developed at the MIT lab that could handle more complex ‘pseudo’ instructions than the AGC. These instructions could simplify navigation programs and handle complex navigation equations in the background so as not to overwhelm the AGC power and memory capabilities.
The famous 1201 and 1202 priority alarm displays that interrupted and replaced the astronauts' normal displays with the Priority Displays during the Apollo 11 lunar descent signaled executive overflow was caused because the rendezvous radar was left on during the landing sequence and was stealing precious “cycles” from the AGC. This is in fact exactly what the computer and the software were meant to do– The MIT IL team (led by Margaret Hamilton) had intentionally designed the software with a priority scheduling capability that could identify the most important commands and that allows those to run without interruption pushing less important commands to the side.
The story about the Apollo 11 landing and the Priority Displays was one of error detection and recovery in real time. It was about the astronauts, mission control, the software and the hardware; and how they all worked together during an emergency as an integrated system of systems. It was about creating new, man-machine and software engineering concepts to do things never done before. Unlike a system where the software (or hardware) might "know" of a serious problem without the pilot's knowing it, the Priority Displays were able to determine right away if a particular alarm had occurred that fell within the category of an "emergency alarm" and they let the astronauts know about it too.
No known software errors ever occurred during any of the Apollo missions. The AGC software influenced the design of systems and software for future spacecraft including Skylab, the Space Shuttle and digital fly-by-wire aircraft systems.