21.08.2013 Views

Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

400 Chapter 32 ■ Conclusion<br />

engineering. Such components need to be useful, easy to use and interoperable.<br />

They also need to be reliable, fast, secure and scalable. They need to work across networks,<br />

the internet and with web browsers.<br />

At the time of writing, the major players in the software industry are offering technologies<br />

that claim to meet these goals.<br />

32.8 ● History<br />

Let us look at some of the history of software development methods. In the early days<br />

of computing, the hardware was the challenge and programming was considered to be<br />

easy – an undemanding activity very similar to clerical work. The first programmers<br />

were exclusively women because it was considered unsuitable work <strong>for</strong> men. Fairly soon<br />

it was realized that programming demanded a logical approach and abstract thinking.<br />

(Regrettably, sexism asserted itself and the women were replaced by men.)<br />

As the problems of software production began to restrict the application of computers,<br />

the principle of the division of labor was applied to software development. First,<br />

the job of the analyst was separated from that of the programmer. Later, with the invention<br />

of high-level languages, operating systems and packages, the work of applications<br />

programmers was distinguished from that of systems programmers.<br />

Sometimes looking at the past helps us to visualize the future. Arguably there have<br />

been a number of significant milestones in the history of software engineering. The first<br />

was high-level languages, such as Fortran and Cobol, that allowed programmers to<br />

express solution in problem-oriented rather than machine-oriented notations. Next was<br />

structured programming, the idea that some constructs (such as goto) are dangerous<br />

and that design is important. Then came object-oriented design and programming as a<br />

way of modularizing software.<br />

While each of these innovations was significant, none of them has dramatically solved<br />

the problem of ensuring that software is reliable and useful. Perhaps the lesson of history<br />

is that there is no silver bullet that can be applied to these problems. Arguably this<br />

is because software has an inherent complexity which cannot be eliminated.<br />

32.9 ● The future of software engineering<br />

The demise of applications programming has been regularly predicted <strong>for</strong> many years,<br />

and yet the demand <strong>for</strong> programmers is ever-increasing. What methods are likely to be<br />

used in the future? What is likely to happen to the jobs of those involved in software<br />

development?<br />

Today, the cost of software generally overwhelms the cost of the hardware it runs on.<br />

<strong>Software</strong> production is labor-intensive and developers are in short supply. A major remedy<br />

offered is to provide developers with more powerful tools – usually computer<br />

based. Examples are UML editors, high-level languages and software development<br />

environments.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!