|
Software Engineering
Advances in information technology have captured the public imagination and
had tremendous economic and social impact over the last 50 years. These advances
offer great benefit, but have also created a great need for highly dependable
systems developed at predictable cost. Unfortunately, it has become increasingly
clear that our ability to produce the software for these systems in a way that
meets cost and quality requirements is quite limited.
For example:
- Studies conclude
that cost and schedule overruns on commercial software projects commonly
average at least 100%. Some studies report averages as high
as 300 - 400%.
- Studies of large projects indicate that about 25% of
them are abandoned and never completed.
- There is a growing list of
incidents in which software failures have caused injury and death.
Software engineering is an attempt to solve this problem. The notion
can be traced to a conference sponsored by NATO in 1967. The conference
was organized to discuss the problems in creating software systems
reliably. In the years since, there has been some progress, but the problems
that
motivated the original conference are still very much in evidence.
There is good reason to believe that the creation of software will never
be easy.
But there is tremendous incentive to make the process as efficient
and reliable as possible.
In summary, software engineering can be defined as the application of
processes, methods, and tools to the problem of building and maintaining
computer software with a defined level of quality, at a predictable cost,
on a predictable schedule.
|