Apollo 11 and the forgotten art of software engineering

The Apollo lunar landing programme, which culminated in Neil Armstrong
and Buzz Aldrin’s moon walk on 20 July 1969, represents a technical
achievement that has yet to be surpassed.
The computer systems that helped them get there were among the most
advanced of the time. Certainly, no more complex public software project
had been undertaken before the Apollo programme.
The Apollo Guidance Computer, developed at MIT for the lunar landings,
was the first embedded system. It was also the first example of a
fly-by-wire system. Such systems are used today on modern aircraft such
as the airbus A-380.
The pilots relied on computers controlled by safety-critical software to
keep them alive and enable them to navigate the 384,400km to the moon,
control the descent and launch of the lunar lander, and return safely
back to Earth.
Thousands of computer technicians and programmers were involved in the
Apollo programme. The software development process Nasa used to
co-ordinate these people is often cited as an example of software
engineering, although the term was coined midway through the lunar
As the world celebrates the 40th anniversary of one of man’s greatest
achievements this week, the idea of software projects being engineering
projects has somehow been forgotten.
Businesses are keen to gain a competitive edge by churning out software.
Apart from in aerospace and some safety-critical -applications, speed of
application development has become more important than quality.
End-users accept computer bugs as a way of life.
The British Computer Society is keen to raise the bar, with training,
accreditation and certification, which it hopes will turn computer
programming into a profession, with professional standards.
Microsoft’s Trustworthy Computing initiative shows that commercial
software can be made less buggy.
But will users accept the price of higher quality software, the longer
development time and the potentially higher licence fee? They need to.
As computer technology becomes embedded in human society, the effects of
buggy code will become more obvious and damaging. Software must be
engineered to a high quality.