the profession of it
is Software engineering
Software engineering continues to be dogged by claims it is not engineering.
Adopting more of a computer-systems view may help.
It iS a
trospection for the computing
field. We recognize the need to
transcend the time-honored,
but narrow image of, “We are
time of considerable in-
programmers.” That image conveys
no hint of our larger responsibilities
as software professionals and limits us
in our pursuit of an engineering model
for software practice.
The search for an alternative to the
programmer image is already a generation old. In 1989 we asked: Are we
mathematicians? Scientists? Engineers? 3 We concluded that we are all
three. We adopted the term “
computing,” an analogue to the European “
in-formatics,” to avoid bias toward any
one label or description.
Today, we want all three faces to be
credible in an expanding world. The
cases for computing as mathematics and as science appear to be widely
accepted outside the field. 1 However,
the case for computing as engineering is still disputed by traditional engineers. Computer engineering (the
architecture and design of computing
machines) is accepted, but software
engineering remains controversial.
In this column, we examine reasons
for the persistent questions about software engineering and suggest directions to overcome them.
The dictionary defines engineering as
the application of scientific and mathematical principles to achieve the design, manufacture, and operation of
efficient and economical structures,
machines, processes, and systems.
may suffer from
our habit of paying
too little attention to
how other engineers
When applied to software engineering, this definition calls attention to
the importance of science and math
principles of computing. Software engineering has also contributed principles for managing complexity in software systems.
Some definitions insist that engineering mobilizes properties of matter
and sources of energy in nature. Although software engineering does not
directly involve forces of nature, this
difference is less important in modern
The main point of contention is
whether the engineering practices for
software are able to deliver reliable,
dependable, and affordable software.
With this in mind, the founders of the
software engineering field, at the legendary 1968 NATO conference, proposed that rigorous engineering process in the design and implementation
of software would help to overcome the
In its most general form, the “
engineering process” consists of a repeated cycle through requirements,
specifications, prototypes, and test-