【開発管理】設計とテストは表裏一体!「Vモデル」|情報処理問題1000本ノック
ソフトウェア開発の流れを「Vの字」で表現するVモデル。各開発工程の成果物が、どのテスト工程の基準(インプット)になるのか、その美しい対応関係を攻略しましょう。
1. 【 問題 】:ソフトウェア開発プロセスモデル
【 問題 】 ソフトウェア開発における「Vモデル」に関する記述として、最も適切なものはどれでしょうか?
① 開発工程の初期段階でプロトタイプ(試作品)を作成し、ユーザーの評価を得ながら仕様を確定していくモデルである。
② 開発工程とテスト工程を対比させて並べたものであり、各開発工程の成果物(アウトプット)が、それぞれ対応するテスト工程の検証基準(インプット)となることを示したモデルである。
③ システムをいくつかの機能単位に分割し、優先度の高い機能から順に設計、開発、テスト、リリースを繰り返していくモデルである。
④ 設計書のレビュー(静的テスト)を重視し、コードを書く前の段階で仕様の矛盾をすべて洗い出すことを目的としたモデルである。
2. 正解:
正解: ② 開発工程とテスト工程を対比させて並べたものであり、各開発工程の成果物が、それぞれ対応するテスト工程の検証基準となることを示したモデルである。
3. 解説:左で作り、右で試す
Vモデルは、ウォーターフォール開発における「開発工程」と「テスト工程」の1対1の対応関係を分かりやすく視覚化したものです。Vの字の左側を下に向かって進むのが開発、右側を上に向かって進むのがテストになります。
左側の開発で作った「設計書(アウトプット)」は、右側のテストを行う際の「テスト仕様書(インプット)」に化けます。
・要件定義(ユーザーの要望)
↔ システムテスト/受入れテスト(本当に要望通り動くか?)
・基本設計/外部設計(画面や全体の仕組み)
↔ 統合テスト/結合テスト(部品を繋げて仕様通り動くか?)
・詳細設計/内部設計(プログラムの細かいロジック)
↔ 単体テスト(関数やクラス単体で正しく動くか?)
★ ①:これは「プロトタイピングモデル」の説明です。
★ ③:これは「イテレーティブ(反復)開発」や「アジャイル開発」に近い説明です。
1. 理解のコツ: 「取扱説明書」をイメージしてください。基本設計の段階で「この電化製品のリモコンのボタンを押すと、画面が切り替わります(取扱説明書の内容)」と決めたら、後で行う結合テストでは、その取扱説明書を読みながら「よし、ボタンを押して本当に画面が切り替わるな」とテストをします。左側で作った仕様書がないと、右側のテストができないという強い結びつきを示すのがVモデルです。
2. 試験対策の視点: 「開発工程とテスト工程の対応」「成果物がテストのインプット(基準)になる」という記述があればVモデルで間違いありません。午前問題では概念を問われ、午後問題では「基本設計書の不備は、どのテスト工程で発覚するか?(答え:結合テスト)」といった、具体的な対応関係を突っ込んでくる問題が頻出します。
4. まとめ
「上流の設計と、下流のテストを1対1でペアリングした開発モデル」。これがVモデルです。このモデルを意識することで、設計書を書いている段階から「この仕様はどうやってテストしようか?」と考える視点が生まれ、結果として手戻りの少ない高品質な開発ができるようになります。