108 IEEE SOFTWARE | PUBLISHED BY THE IEEE COMPUTER SOCIETY 0740-7459/18/$33.00 © 2018 IEEE
ON COMPUTING
The History of Software
Engineering
Grady Booch
THE FIRST COMPUTERS
were hu-
man (and for the most part, women).
The term “digital” didn’t enter cir-
culation until around 1942, when
George Stibitz took the ideas from
another George (Boole) and applied
them to electromechanical devices. It
took another decade for John Tukey
to popularize the term “software.”
What, then, of the term “software
engineering”?
The Origins of the Term
Many suggest it came from the 1968
NATO Conference on Software
Engineering, coined by Friedrich
Bauer. Others have pointed to the 1966
letter by Anthony Oettinger in Com-
munications of the ACM, wherein
he used the term “software engineer-
ing” to make the distinction between
computer science and the building of
software-intensive systems.
1
Even ear-
lier, in the June 1965 issue of Comput-
ers and Automation, there appeared a
classied ad seeking a “systems soft-
ware engineer.”
All the data I have points to
Margaret Hamilton as the person who
rst coined the term. Having worked
on the SAGE (Semi-automatic Ground
Environment) program, she became
the lead developer for Skylab and
Apollo while working at the Draper
Lab. According to an (unpublished)
oral history, she began to use the term
“software engineering” sometime in
1963 or 1964 to distinguish her work
from the hardware engineering taking
place in the nascent US space program.
Software Engineering versus
Computer Science
Grace Hopper suggested that pro-
gramming is a practical art; Edsger
Dijkstra called the art of program-
ming the art of organizing com-
plexity; Donald Knuth referred to
programming as art because it pro-
duced objects of beauty. I suspect
that all of these observations are true,
but what I like best is David Parnas’s
observation—much like Anthony
Oettinger’s—that there is a distinc-
tion between “computer science” and
the other stuff that we do. This is not
unlike the distinction between chem-
ical engineering and chemistry: both
are valid; both have their particular
sets of practices; both are very differ-
ent things. Software engineering is,
in my experience, equally an art and
a science: it is the art of the practical.
Engineering in all elds is all
about the resolution of forces. In
civil engineering, one must consider
static and dynamic forces of a physi-
cal nature and of human nature. In
software engineering, one also must
balance cost, schedule, complexity,
functionality, performance, reliabil-
ity, and security, as well as legal and
ethical forces. Computing technol-
ogy has certainly changed since the
time of Charles Babbage. However,
the fundamentals of engineering
hold true, although, as we shall see,
each age discovers some new truth
about engineering software.
From the 19th to the 20th
Century: Human Computers
Ada Lovelace was perhaps the rst
person to understand that program-
ming was a thing unto itself. Around
that same time, George Boole
brought a new way of thinking to the
mathematicians and philosophers of
the world, as expressed in his clas-
sic book The Laws of Thought.
2
At
the end of the 19th century, we saw
the rst human computers, such as
Annie Cannon, Henrietta Leavitt,
and others, the so-called “Harvard
Computers” working for the astron-
omer Edward Pickering. The way
these women organized their work
was astonishingly similar to contem-
porary agile development practices;
they too had a different way of think-
ing, very different for their time.
Around the start of the new cen-
tury, as computational problems be-
gan to scale up and as mechanical
aids to calculation became more reli-
able and economical, the process of
computing underwent further regi-
mentation. It was common to see
large rooms lled with human com-
puters (again, mostly women), all
lined up in rows. Data would enter