Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach Software Engineering for Students A Programming Approach

web.firat.edu.tr
from web.firat.edu.tr More from this publisher
21.08.2013 Views

Stage Input Output 21.3 Feedback between stages 293 requirements engineering none requirements specification architectural design requirements specification architectural design detailed design architectural design module specifications coding module specifications coding unit testing coding tested modules system testing tested modules tested system acceptance tested system satisfied client SELF-TEST QUESTION 21.2 Someone enhances the waterfall model by including a user interface design stage immediately after the requirements engineering stage. What are its inputs and outputs? 21.3 ● Feedback between stages One of the drawbacks of a strict waterfall model is that the water cannot flow upwards – if a problem is found at a particular stage in development, there is no way of redoing an earlier stage in order to rectify the problem. For example, testing usually finds errors in the (preceding) coding stage, but in the strict waterfall approach, the coding cannot be corrected. When preparing a meal, if you find that some ingredient is missing when you get to the stage of cooking the vegetables, you need to go back to the shopping stage. To overcome this obvious drawback, a variation of the waterfall model provides for feedback between adjoining stages, so that a problem uncovered at one stage can cause remedial action to be taken at the previous stage. Thus the waterfall model with feedback between stages is as shown in Figure 21.2. You will see, however, that this approach only provides for feedback to the immediately preceding step. But, in reality, any step may necessitate changes in any of the preceding stages. For example: ■ during system testing, an architectural design fault is revealed ■ during user acceptance, a problem with the specification becomes evident. So the reality of using the waterfall model is that development does not proceed in one direction, step by step. Instead, there is commonly frequent feedback to earlier stages, requiring rework (which can seriously disrupt the timescale of a project). To be more realistic, Figure 21.2 should show arrows leading backwards from every activity to every preceding activity. This, of course, undermines the model and any planning.

294 Chapter 21 ■ The waterfall model Requirements Engineering The instigators of the waterfall model clearly and wrongly perceived software development to be simple and straightforward, with development proceeding smoothly onwards from stage to stage without disruption. But, as we have seen, there are fundamental problems with using the waterfall model as a basis for a project plan. Nonetheless, it is common to use this process model. 21.4 ● Discussion Architectural design Detailed design The strengths of the waterfall model are: Coding Figure 21.2 Modified waterfall model with feedback ■ it divides a complex task into smaller, more manageable tasks ■ each task produces a well-defined deliverable. Unit testing System testing Acceptance Thus the process is well-defined. Anyone can see exactly what has been completed and what remains to be done. Perhaps the most serious problem with the waterfall model is that the client only gets to see the product at the very end of the development – and if it is not what they want, it is too late! The problem is the huge gap between requirements analysis at an early stage in a project and acceptance testing near the end. There is no opportunity to validate the user requirements at an early stage in development. This is a major problem with the waterfall model. But there are also less obvious, but equally important drawbacks. If a problem is discovered at any stage which reveals a mistake at an earlier stage, nothing can be done about it.

Stage Input Output<br />

21.3 Feedback between stages 293<br />

requirements engineering none requirements specification<br />

architectural design requirements specification architectural design<br />

detailed design architectural design module specifications<br />

coding module specifications coding<br />

unit testing coding tested modules<br />

system testing tested modules tested system<br />

acceptance tested system satisfied client<br />

SELF-TEST QUESTION<br />

21.2 Someone enhances the waterfall model by including a user interface<br />

design stage immediately after the requirements engineering stage.<br />

What are its inputs and outputs?<br />

21.3 ● Feedback between stages<br />

One of the drawbacks of a strict waterfall model is that the water cannot flow upwards –<br />

if a problem is found at a particular stage in development, there is no way of redoing an<br />

earlier stage in order to rectify the problem. For example, testing usually finds errors in<br />

the (preceding) coding stage, but in the strict waterfall approach, the coding cannot be<br />

corrected. When preparing a meal, if you find that some ingredient is missing when you<br />

get to the stage of cooking the vegetables, you need to go back to the shopping stage.<br />

To overcome this obvious drawback, a variation of the waterfall model provides <strong>for</strong><br />

feedback between adjoining stages, so that a problem uncovered at one stage can cause<br />

remedial action to be taken at the previous stage. Thus the waterfall model with feedback<br />

between stages is as shown in Figure 21.2.<br />

You will see, however, that this approach only provides <strong>for</strong> feedback to the immediately<br />

preceding step. But, in reality, any step may necessitate changes in any of the preceding<br />

stages. For example:<br />

■ during system testing, an architectural design fault is revealed<br />

■ during user acceptance, a problem with the specification becomes evident.<br />

So the reality of using the waterfall model is that development does not proceed in<br />

one direction, step by step. Instead, there is commonly frequent feedback to earlier<br />

stages, requiring rework (which can seriously disrupt the timescale of a project). To be<br />

more realistic, Figure 21.2 should show arrows leading backwards from every activity<br />

to every preceding activity. This, of course, undermines the model and any planning.

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

Saved successfully!

Ooh no, something went wrong!