Sunday, 7 August 2011

Introduction

Virtually all countries now depend on complex computer-based systems. National
infrastructures and utilities rely on computer-based systems and most electrical products
include a computer and controlling software. Industrial manufacturing and distribution
is completely computerised, as is the financial system. Therefore,
producing and maintaining software cost-effectively is essential for the functioning
of national and international economies.
Software engineering is an engineering discipline whose focus is the costeffective
development of high-quality software systems. Software is abstract and
intangible. It is not constrained by materials, or governed by physical laws or by
manufacturing processes. In some ways, this simplifies software engineering as there
are no physical limitations on the potential of software. However, this lack of natural
constraints means that software can easily become extremely complex and hence
very difficult to understand.
The notion of software engineering was first proposed in 1968 at a conference
held to discuss what was then called the 'software crisis'. This software crisis resulted
directly from the introduction of new computer hardware based on integrated circuits.
Their power made hitherto unrealisable computer applications a feasible
proposition. The resulting software was orders of magnitude larger and more complex
than previous software systems.
Early experience in building these systems showed that informal software development
was not good enough. Major projects were sometimes years late. The software
cost much more than predicted, was unreliable, was difficult to maintain and
performed poorly. Software development was in crisis. Hardware costs were tumbling
whilst software costs were rising rapidly. New techniques and methods were
needed to control the complexity inherent in large software systems.
These techniques have become part of software engineering and are now widely
used. However, as our ability to produce software has increased, so too has the complexity
of the software systems that we need. New technologies resulting from the
convergence of computers and communication systems and complex graphical user
interfaces place new demands on software engineers. As many companies still do
not apply software engineering techniques effectively, too many projects still produce
software that is unreliable, delivered late and over budget.
I think that we have made tremendous progress since 1968 and that the development
of software engineering has markedly improved our software. We have a
much better understanding of the activities involved in software development. We
have developed effective methods of software specification, design and implementation.
New notations and tools reduce the effort required to produce large and complex
systems.
We know now that there is no single 'ideal' approach to software engineering.
The wide diversity of different types of systems and organisations that use these
systems means that we need a diversity of approaches to software development.
However, fundamental notions of process and system organisation underlie all of
these techniques, and these are the essence of software engineering.
Software engineers can be righl1y proud of their achievements. Without complex
software we would not have explored space, would not have the Internet and
modem telecommunications, and all forms of travel would be more dangerous and
expensive. Software engineering has contributed a great deal, and I am convinced
that, as the discipline matures, its contributions in the 21 st century will be even greater.

No comments:

Post a Comment

Your comments are welcome!