Software Engineering

About the Major

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.