伝統的な開発モデルのウォーターフォールとV字モデル。各工程の対応関係を理解しましょう。
ウォーターフォールってよく聞くよね!
ウォーターフォールモデルは1970年代から使われている古典的な開発手法。
「滝のように上から下へ」工程が進むの。
メリットは計画が立てやすく工程管理が簡単。
デメリットは後戻りが困難で、要件変更に弱いこと。
V字モデルとは何が違うんですかぁ?
V字モデルはウォーターフォールを発展させたもの。
開発工程 (左下がり) とテスト工程 (右上がり) を対応付けて、Vの字に並べた図。
対応関係を覚えてね。
要件定義 ↔ 受入テスト、外部設計 ↔ システムテスト、内部設計 ↔ 結合テスト、プログラミング ↔ 単体テスト、ということね。
つまり「要件定義の段階で受入テストの基準も同時に作る」「内部設計のときに結合テスト計画を立てる」というふうに、先回りして考えるモデルですね。
品質が上がるわけです。
なるほど、テストと設計は表裏一体なんだね!
あたし、しっかり覚えるよ!
EC注文機能でV字の対応をたどる
「利用者が商品を注文でき、確定後に在庫が減る」というシステムを例にします。左側の工程で決めた内容を、右側のどのテストで確認するかを対応付けると、丸暗記しなくても判断できます。
| 開発側 | 決める内容の例 | 対応するテスト | 確認例 |
|---|---|---|---|
| 要件定義 | 利用者が注文業務を完了できる | 受入テスト | 実際の業務手順で目的を満たすか |
| 外部設計 | 画面・外部インタフェース・全体機能 | システムテスト | システム全体が外部仕様どおりか |
| 内部設計 | 注文、在庫、決済モジュールの連携 | 結合テスト | モジュール間のデータ受渡しが正しいか |
| プログラミング | 在庫減算関数などの部品 | 単体テスト | 関数単独で境界値を正しく処理するか |
対応付けの目的は、後からテスト名を付けることではありません。上流で定義した条件を、検証可能なテスト条件として早い段階から考え、要件の抜けや曖昧さを減らすことです。
変更の時期と問題文の語からモデルを判断する
ウォーターフォールは工程の成果物と承認点を明確にしやすく、要件が安定し、法令や契約で文書化が重視される大規模開発などで管理しやすい面があります。一方、完成品を見てから利用者の希望が大きく変わる案件では、後工程から要件定義へ戻るほど、設計・実装・テストの手戻りが増えます。
試験では「短い反復」「優先順位を変えながら段階的に提供」ならアジャイルを考えます。「工程を順次完了」「前工程の成果物を基に次へ」「計画と進捗を工程別に管理」ならウォーターフォールが手掛かりです。ただし、ウォーターフォールでも変更管理を行い、アジャイルでも設計やテストを行います。極端な説明は誤答になりやすい点に注意しましょう。
V字モデルのよくある取り違えは、要件定義をシステムテストへ結ぶことです。最も上流で利用者の目的を定める要件定義は、最終的に利用者側が受入可能かを確かめる受入テストに対応します。中央に近い詳細な実装ほど、中央に近い単体テストへ対応するとVの左右を内側からたどれます。
確認クイズ
V字モデルにおいて要件定義工程と対応するテスト工程はどれか。
- 単体テスト
- 結合テスト
- システムテスト
- 受入テスト
こたえを見る
正解: 4. 受入テスト
V字モデルでは 要件定義 ↔ 受入テスト、外部設計 ↔ システムテスト、内部設計 ↔ 結合テスト、プログラミング ↔ 単体テスト、と対応します。要件定義は最上流なので最も右側 (上) のテストに対応します。