ITパスポート 2015年 秋期 問43
問題文
ウォータフォールモデルで開発を行うプロジェクトにおいて、システム要件定義の不具合を後続の工程で発見した。不具合を発見した工程のうち、不具合の修正や修正に伴う手戻りが最も少なく済む工程はどれか。
選択肢
ア:システム設計(正解)
イ:プログラミング
ウ:テスト
エ:ソフトウェア受入れ
🔒 解説は解答すると表示されます
ウォータフォールモデル:要件定義の不具合を発見した工程のうち修正の手戻りが最も少なく済むのはどれか【ITパスポート 解説】
正解の理由
ウォータフォールモデル(ウォータフォールモデル:工程を上から順に進める直線的な開発手法)では、上流工程で作った成果物が下流工程で使われます。要件定義(要件定義:システムに何をさせるかを決める工程)での不具合を後続工程で見つけた場合、後の工程ほど修正しなければならない成果物(設計書、ソース、テスト仕様、受入れ準備など)が増えます。
選択肢のうち、もっとも上流に近いのは ア の「システム設計(システム設計:要件をもとにシステム全体の構造や機能を具体化する工程)」です。上流に近い工程で発見されれば、変更対象は主に設計関連にとどまり、プログラム修正や大規模なテストや受入れ作業の手戻りが比較的少なく済みます。したがって、修正や手戻りが最も少なくなるのは ア(システム設計)です。
選択肢のうち、もっとも上流に近いのは ア の「システム設計(システム設計:要件をもとにシステム全体の構造や機能を具体化する工程)」です。上流に近い工程で発見されれば、変更対象は主に設計関連にとどまり、プログラム修正や大規模なテストや受入れ作業の手戻りが比較的少なく済みます。したがって、修正や手戻りが最も少なくなるのは ア(システム設計)です。
解法ステップ
- 各工程の順序を確認する。
ウォータフォールの基本的な流れは、要件定義 → システム設計 → プログラミング → テスト → ソフトウェア受入れ。 - 問題は「要件定義の不具合を後続のどの工程で発見したときに手戻りが最も少ないか」を問うていると理解する。
要点:見つかった工程が「上流に近いほど」手戻りは少ない。 - 選択肢を工程の順序で比べる。
ア(システム設計)→ イ(プログラミング)→ ウ(テスト)→ エ(ソフトウェア受入れ) - 一番上流に近い選択肢を選ぶ → ア が正解。
このように「工程の順序」を意識して考えれば短時間で正解にたどり着けます。
選択肢別の誤答解説
-
ア:システム設計
正しい。要件不具合を比較的早期に発見するため、影響範囲は設計書や一部要件の修正で済みやすい。プログラム修正や大規模なテストや受入れ対応が不要または小規模で済む可能性が高い。 -
イ:プログラミング(プログラミング:設計に従って実際にコードを書く工程)
誤り。プログラミング段階で要件不具合を発見すると、設計とソースコードの両方を修正する必要が生じます。コードの書き直しや、修正後の単体テストが追加で必要になります。 -
ウ:テスト(テスト:作成したプログラムが仕様通り動くかを検証する工程)
誤り。テストで見つかると、多数のモジュールや結合部分に影響が及ぶ可能性があります。修正後に広範囲の回帰テスト(修正によって他が壊れていないか確認するテスト)が必要になり、手戻りは大きいです。 -
エ:ソフトウェア受入れ(ソフトウェア受入れ:顧客が最終製品を受け入れる工程)
誤り。最も後工程です。ここで要件不具合が見つかると、顧客対応、再納品、契約上の調整など多方面に影響し、手戻りとコストが最大になります。
よくある誤解
- 「テストで見つければ修正は簡単」
→ テストで見つかると、既に作られた多数の成果物に影響するため、修正と再テストの範囲が大きくなります。簡単ではありません。 - 「発見箇所(見つけた工程)だけ直せばよい」
→ 要件の誤りは設計・実装・テスト仕様に反映されているため、関連するすべての成果物を見直す必要があります。
補足コラム
- コストと手戻りの関係:一般に、ウォータフォールでは「検出が遅れるほど修正コストが増える」と言われます。感覚的には早期は小さな修正(設計書1部の修正)、後期は大規模な修正(複数モジュールの書き直し+再テスト+顧客対応)になります。
例:修正コストを単純な数値で表すと、要件定義で見つかれば 、システム設計で 、プログラミングで 、受入れで など、後に行くほど倍増傾向になります(実際の比率はプロジェクトによる)。 - 現代開発では、アジャイル(Agile:短い反復で進める開発手法)やプロトタイピング(試作品で早期に確認)を使い、要件の誤りを早期に発見することが推奨されます。ウォータフォールを使う場合でも、要件レビューやステークホルダー確認を厳密に行うことで手戻りを減らせます。
FAQ
Q1. もし要件の誤りが設計にしか影響しない場合はどう判断すべきですか?
A1. 影響範囲が本当に設計だけで完結するなら、設計段階で見つかった方が少ない手戻りで済みます。重要なのは「影響する成果物がどれだけあるか」を考えることです。
A1. 影響範囲が本当に設計だけで完結するなら、設計段階で見つかった方が少ない手戻りで済みます。重要なのは「影響する成果物がどれだけあるか」を考えることです。
Q2. ウォータフォールでも小さな変更なら後工程でも影響は小さいですか?
A2. 小さな変更であれば影響は限定的ですが、どの程度が「小さいか」は設計の粒度や結合の強さによります。結合が強い(変更が波及しやすい)場合は注意が必要です。
A2. 小さな変更であれば影響は限定的ですが、どの程度が「小さいか」は設計の粒度や結合の強さによります。結合が強い(変更が波及しやすい)場合は注意が必要です。
Q3. アジャイルならこの問題は無意味ですか?
A3. アジャイルでも要件誤りは問題です。ただし、短いイテレーション(反復)で早めに気づきやすく、手戻りコストを下げやすいという利点があります。
A3. アジャイルでも要件誤りは問題です。ただし、短いイテレーション(反復)で早めに気づきやすく、手戻りコストを下げやすいという利点があります。
関連キーワード: ウォータフォール, 要件定義, システム設計, 手戻り, プログラミング, テスト, ソフトウェア受入れ, 要件レビュー, トレーサビリティ, プロトタイピング

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

