ソフトウェア開発プロセスを“要件定義”, “システム設計”, “プログラミング”, “テスト”の各工程に区切って, この順に進める手法の長所はどれか。
平成21年度 春期 ITパスポート試験 問38
This question's explanation and your answers so far.
問 38
Incorrectア
This is a disadvantage of the waterfall model, not an advantage. Because each phase is fixed before the next one starts, a change of specifications that appears after a later phase has begun forces the team to go back to requirements definition or design and redo the work; this rework makes both cost and schedule swell greatly. Responding flexibly to specification changes at any point in the development process is a characteristic of methods such as agile development, which repeats short development cycles.
- イ
正解 The correct answer is イ. A method that divides the work into the phases of requirements definition → system design → programming → testing, and moves on to the next phase only after the previous one is finished, is called the waterfall model. Like water falling from top to bottom, it does not go back to earlier phases, and at the end of each phase there are deliverables (a requirements specification, design documents, programs, a test report, and so on) and a review that judges whether the phase is complete. Because of this, at every milestone it is clear which phase has been finished and how much of the whole work is done, so it is easy to grasp the progress status of the development. This is the representative advantage of the waterfall model, and it is also why the model is adopted for large-scale development and for development that emphasizes planning.
Incorrectウ
This is the opposite of reality. The waterfall model does not assume going back to earlier phases, so if a mistake in an upstream phase (requirements definition or system design) is corrected downstream, the rework is enormous. For that reason, the more upstream a phase is, the more carefully reviews are carried out, and many work-hours are spent there to build quality in. The statement that only a small number of review work-hours is needed in the upstream phases does not apply.
Incorrectエ
In the waterfall model, working software becomes visible to users only in the later part of development, after programming and testing have progressed. Being able to try out the software at an early stage of development is an advantage of the prototyping model, which builds a prototype for users to evaluate, or of agile development, which delivers working software in each short iteration; it is not an advantage of the method described in this question.
- Waterfall model = a development method that divides the development work into requirements definition, system design, programming, and testing, and proceeds through them in order without going back. Because the phase boundaries and the deliverables are clear, its advantage is that progress management and phase management are easy, and its disadvantage is that it is weak against specification changes in later phases, where the impact of rework is large.
- Learn development models as pairs of advantages and disadvantages. Waterfall = progress is easy to see but it is weak against change; prototyping = a prototype lets you obtain user evaluation at an early stage; agile = short iterations respond flexibly to change and can provide working software from an early stage.