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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Analysis<br />

and<br />

design<br />

1<br />

/3<br />

Coding<br />

1 /6<br />

Testing<br />

1 /2<br />

Figure 1.3 Relative costs of the stages of software development<br />

1.3 The cost of software production 9<br />

method was devised that ensured the software was correct from the start, then testing<br />

would be unnecessary, and there<strong>for</strong>e only half the usual ef<strong>for</strong>t would be needed. Such<br />

a method would be a discovery indeed!<br />

If mistakes are a major problem, when are they made? Figure 1.4 shows figures<br />

showing the number of errors made at the various stages of a typical project:<br />

However, this data is rather misleading. What matters is how much it costs to fix<br />

a fault. And the longer the fault remains undiscovered, the more a fault costs to fix.<br />

Errors made during the earlier stages of a project tend to be more expensive, unless they<br />

are discovered almost immediately. Hence Figure 1.5 showing the relative costs of fixing<br />

mistakes in a typical project is probably more relevant.<br />

A design flaw made early in the project may not be detected until late on in system<br />

testing – and it will certainly involve a whole lot of rework. By contrast, a syntax error<br />

in a program made late in the project will be automatically detected on a first compilation<br />

and then easily corrected.<br />

Design<br />

1 /2<br />

<strong>Programming</strong><br />

and<br />

logic<br />

1<br />

/3<br />

Syntax<br />

1 /6<br />

Figure 1.4 Relative numbers of errors made during the stages of software development

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

Saved successfully!

Ooh no, something went wrong!