110 Software Engineering Methods After the programmers complete the analysis step, they should know exactly what the program is supposed to do. Then they can start the design phase and decide how they’ll create this program. Design The design phase is when the programmers write a plan for creating a program that meets all the customer’s requirements. This can involve deciding how to break the overall program into smaller parts and then assigning each part to a different programming team. At the design phase, the programmers also need to decide on ✦ The programming language to use ✦ A specific compiler and other tools to use ✦ Procedures for keeping all programmers in constant contact with each other so one programmer doesn’t accidentally duplicate the efforts of another programmer The biggest problem with the waterfall model is that if one step isn’t completed correctly, the rest of the steps won’t work correctly either. For example, if the analysis part of the waterfall model is done poorly, then it will be impossible for the design part to be accurate. ✦ Many times the design doesn’t accurately reflect what the customer wants. Because the programmers talk only to the customer during the analysis phase, they may cheerfully design a program that almost does what the customer wants, but not quite. That means the programmers often create a program that the customer can’t even use without moderate-to-extensive modifications. ✦ During the design phase, every programmer is supposed to know what the customer wants, but sometimes programmers leave and new programmers get added. These new programmers may not have participated in the analysis phase, so now they have to take time to understand what the customer wants, which delays the design phase for the entire project. When everyone finishes deciding how to create the project within a specific deadline, the design phase is considered over. By forcing programmers to design a program on paper and create a plan for writing that program, the waterfall method makes sure that nobody starts writing the program until they first have a clear idea what they’re doing. Implementation After the design phase is done, the implementation phase begins with programmers actually writing their portion of the program. If the programmers
Software Engineering Methods 111 developed a clear plan during the design phase, they can monitor their progress during the implementation phase and see, at any given time, what needs to be done next. Book I Chapter 5 If the programmers don’t fully understand the design, the program that they write reflects this misinterpretation. Sometimes after writing part of the program, the programmers suddenly realize that their initial design was flawed, but now it’s too late to change, so the project winds up being harder to create than expected. Managing Large Projects with Software Engineering After everyone finishes writing their part of the program, they put it all together, like a giant jigsaw puzzle. At this point, all further programming stops, and the testing phase begins. Testing The testing phase insures that the entire program works. If the programmers find any problems, they fix the bugs and then test to make sure their fixes don’t accidentally wreck another part of the program. When the program finally works, the testing phase is over and the program’s ready for delivery. In theory, the waterfall method makes sense because everyone has a clear idea what needs to be done at any given time. Unfortunately in the real world, life rarely works according to theory. After the testing phase, the program should be complete, but if the customer’s idea of what he wanted and the programmers’ analysis, design, and implementation of those ideas aren’t completely accurate, the customer may wind up with a program that almost does what it’s supposed to do. To add new features or features that should’ve been in the program to begin with, the waterfall method starts with a new analysis phase all over again, with the possibility that the revised program could wind up just as flawed as before. Although the waterfall method makes sense and can work, it assumes that ✦ A project can progress through a series of distinct steps that are done once and are never needed again for the remainder of the project. ✦ The time needed to complete each step can be predicted. ✦ Each step can accurately translate the customer’s needs from the preceding step.