問題本文
ウォータフォールモデルで開発を行うプロジェクトにおいて,システム要件定義の不具合を後続の工程で発見した。不具合を発見した工程のうち,不具合の修正や修正に伴う手戻りが最も少なく済む工程はどれか。
選択肢
- ア.システム設計
- イ.プログラミング
- ウ.テスト
- エ.ソフトウェア受入れ
解説
ウォータフォールモデルにおける手戻りコスト最小化の原則を問う問題. ウォータフォール開発では,要件定義→外部設計→内部設計→プログラミング→単体テスト→結合テスト→システムテスト→ソフトウェア受入れの順に進み,不具合発見が遅い工程ほど手戻り範囲が広がり修正コストが指数関数的に増加する(後工程ほどコスト増大の法則). 要件定義の不具合を最も早く検知できるのは直後の工程であるシステム設計(外部設計)であり,この時点での修正なら影響範囲が限定的. プログラミング・テスト・受入と進むほどコード量・成果物量が増え,連鎖的な修正が必要になる. 「早期発見・早期修正」がウォータフォールでの鉄則.
選択肢ごとの解説
- ア.正解. 要件定義の直後工程であるシステム設計で不具合を発見すれば,設計成果物のみの修正で済み,プログラミング以降の作業はまだ着手していないため手戻り範囲が最小化される. 早期発見ほど修正コストが少ない原則そのものに合致し,本問の正答として最も適切な選択肢となる.
- イ.誤り. プログラミング段階で要件定義の不具合を発見すると,設計のやり直しに加えてコード修正も必要になり,既に書いた実装の廃棄や書き直しが発生する. システム設計より工数が増え修正コストが大きくなるため,「最も手戻りが少ない」工程としては不適切である.
- ウ.誤り. テスト工程で要件定義の不具合を発見すると,要件・設計・実装・テストデータの全てを修正する必要があり,手戻り規模はさらに大きい. プログラミングを既に終えているため修正範囲が広がり,コスト・スケジュール影響も大きくなるため最も手戻り少ない工程ではない.
- エ.誤り. ソフトウェア受入れ工程で要件定義の不具合を発見するのは最悪のタイミングで,要件・設計・実装・テスト・移行準備の全てに影響が及び,プロジェクト後半での大規模手戻りとなる. 修正コストが最大化する段階であり,「最も手戻りが少ない」工程の対極にある.
ITパスポート 2015年 (平成27年 秋期) の過去問一覧へ戻る・問43