Page 4 -
P. 4
PREFACE
As I was writing the final chapters in this book in the summer of 2009, I realized
that software engineering was 40 years old. The name ‘software engineering’ was
proposed in 1969 at a NATO conference to discuss software development problems—
large software systems were late, did not deliver the functionality needed by their
users, cost more than expected, and were unreliable. I did not attend that conference
but, a year later, I wrote my first program and started my professional life in software.
Progress in software engineering has been remarkable over my professional life-
time. Our societies could not function without large, professional software systems.
For building business systems, there is an alphabet soup of technologies—J2EE,
.NET, SaaS, SAP, BPEL4WS, SOAP, CBSE, etc.—that support the development and
deployment of large enterprise applications. National utilities and infrastructure—
energy, communications, and transport—all rely on complex and mostly reliable
computer systems. Software has allowed us to explore space and to create the World
Wide Web, the most significant information system in the history of mankind.
Humanity is now faced with a new set of challenges—climate change and extreme
weather, declining natural resources, an increasing world population to be fed and
housed, international terrorism, and the need to help elderly people lead satisfying
and fulfilled lives. We need new technologies to help us address these problems and,
for sure, software will play a central role in these technologies.
Software engineering is, therefore, a critically important technology for the future
of mankind. We must continue to educate software engineers and develop the disci-
pline so that we can create more complex software systems. Of course, there are still
problems with software projects. Software is still sometimes late and costs more
than expected. However, we should not let these problems conceal the real successes
in software engineering and the impressive software engineering methods and tech-
nologies that have been developed.
Software engineering is now such a huge area that it is impossible to cover the
whole subject in one book. My focus, therefore, is on key topics that are fundamental