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.

18 Chapter 1 ■ <strong>Software</strong> – problems and prospects<br />

■ greater emphasis on trying to ensure that software is free of errors (verification).<br />

■ incremental development, where a project proceeds in small, manageable steps<br />

We will be looking at all of these ideas in this book. These solutions are not mutually<br />

exclusive; indeed they often complement each other.<br />

Verification, prototyping and other such techniques actually address only some of the<br />

problems encountered in software development. A large-scale software project will comprise<br />

a number of separate related activities, analysis, specification, design, implementation,<br />

and so on. It may be carried out by a large number of people working to strict deadlines,<br />

and the end product usually has to con<strong>for</strong>m to prescribed standards. Clearly, if software<br />

projects are to have any chance of successfully delivering correct software on time within<br />

budget, they must be thoroughly planned in advance and effectively managed as they are<br />

executed. Thus the aim is to replace ad hoc methods with an organized discipline.<br />

One term that is used a lot these days in connection with software is the word quality.<br />

One might argue that any product (from a cream bun to a washing machine) that<br />

fulfills the purpose <strong>for</strong> which it was produced could be considered to be a quality product.<br />

In the context of software, if a package meets, and continues to meet, a customer’s<br />

expectations, then it too can be considered to be a quality product. In this perspective,<br />

quality can be attained only if effective standards, techniques and procedures exist to be<br />

applied, and are seen to be properly employed and monitored. Thus, not only do good<br />

methods have to be applied, but they also have to be seen to be applied. Such procedures<br />

are central to the activity called “quality assurance”.<br />

The problem of producing “correct” software can be addressed by using appropriate<br />

specification and verification techniques (<strong>for</strong>mal or in<strong>for</strong>mal). However, correctness<br />

is just one aspect of quality; the explicit use of project management discipline is a key<br />

factor in achieving high-quality software.<br />

Summary<br />

We have considered a number of goals and problem areas in software development.<br />

Generally, software developers have a bad image, a reputation <strong>for</strong> producing software<br />

that is:<br />

■ late<br />

■ over budget<br />

■ unreliable<br />

■ inflexible<br />

■ hard to use.<br />

Because the problems are so great, there has been widespread talk of a crisis in software<br />

production. The general response to these problems has been the creation of a<br />

number of systematic approaches, novel techniques and notations to address the software<br />

development task. The different methods, tools and languages fit within a plan<br />

of action (called a process model). This book is about these approaches. Now read on.

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

Saved successfully!

Ooh no, something went wrong!