Introduction to Software Engineering
LThe nature and complexity of software have changed significantly in the last 30 years. In the
1970s, applications ran on a single processor, produced alphanumeric output, and received
their input from a linear source. Today’s applications are far more complex; typically have
graphical user interface and client-server architecture. They frequently run on two or more
processors, under different operating systems, and on geographically distributed machines.
Software engineering is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them. It is important because of the impact of large, expensive software systems and the role of software in safety-critical applications. It integrates significant mathematics, computer science and practices whose origins are in engineering.
"Avoiding a bug is more cost-effective rather finding it later and fixing"
"Quality is never an accident; it is always the result of intelligent effort." -- John Ruskin
Bill Gates recently said of Microsoft "We have as many testers as we have developers. And developers spend half their time testing. We're more of a testing organization than we're a software organization."