Introduction
システム開発を行う際には、開発やテストを行いやすく、プロジェクトの状況にあった開発モデルを選ぶ必要があります。V字モデルは、開発工程とテスト工程をリンクさせることで、バグの発生や手戻りを減らせる開発モデルのひとつです。
この記事では、V字モデルについての基本事項、要素と対応関係、メリット、注意点などについて解説します。
目次
V字モデルとは?
V字モデルは、ITの開発現場で用いられる開発工程のひとつです。
ここでは、V字モデルとはどのようなものなのか、具体的な例も交えてご説明します。
開発工程とテスト工程を対にして表したモデルのこと
V字モデルは、開発工程とテスト工程をそれぞれ対にして表した開発モデルのことです。
一般的にITの開発工程は、要件定義→基本設計→詳細設計→実装→コンポーネントテスト→結合テスト→システム/受入テストと進んでいきます。このときに、この工程の流れを、実装工程を中心にしてV字の形に折り曲げると、以下のように対応します。
・要件定義⇔システム/受入テスト
・基本設計⇔結合テスト
・詳細設計⇔コンポーネントテスト
・実装
たとえば、要件定義で「画面に検索ワードを入力すると、検索結果が表示される」という要件を定義するとしましょう。対応するシステム/受入テスト工程で、これらの内容をテストします。
基本設計で上記の機能を設計する際には「画面に文字列を入力するとDB検索を行う」「その結果を画面に表示する」などと設計します。その後、対応する結合テストで、上記の内容をテストするのです。
詳細設計で上記の機能を詳細に設計する際には「入力された文字列で~~という検索方法でDB検索する」「DBから~~のような形式でデータを返す」などと設計します。その後、対応するコンポーネントテストで、この内容をテストします。
このように、上記の開発工程とテスト工程の組み合わせでは、それぞれ内容が直接つながっているのが特徴です。そのため、それぞれの開発工程が終わると、すぐにテスト観点や項目の抽出を行うことが可能です。
ソフトウェアテストに関してはこちらもご覧ください。
>>ソフトウェアテストとは?種類や目的、重要な7原則を紹介のページへ
>>ソフトウェアテストのよくある質問にお答えします。目的や種類、作業内容、外注先の選び方などを解説のページへ
>>ソフトウェアテストを効率化するには?テスト設計・テスト実行それぞれの方法を解説のページへ
>>「良い」ソフトウェアテストの定義~プロが教える4つのポイント~のページへ
V字モデルの要素と対応関係
V字モデルの要素となっている各工程の対応関係について、具体的にご説明します。
要件定義=システム/受入テスト
要件定義とは、開発するシステムやソフトウェアのユーザー目線で、どのような要件が必要かを具体的に洗い出して明確にする工程です。
たとえば、ECサイトを開発する場合には、商品情報や過去の取引履歴、手数料情報などどのような情報を必要としているのかを定義します。
要件定義工程に対応するのは、システム/受入テストです。上記のような要件が満たされているかテストします。ユーザーがシステムやソフトウェアを利用するのと同じ環境で、画面配置や機能、画面遷移、買い物を一通り行えるか、ユーザーが迷わず買い物できるかなど、要件定義書の内容を満たしているかテストしていきます。
基本設計=結合テスト
基本設計は外部設計とも呼ばれます。要件定義工程で定義された要件に基づいて設計していきます。ここで、ユーザーとのインターフェースや外部システムとのインターフェースを決めていきます。
対応する結合テストでは、それぞれのモジュールやコンポーネントが結合して、システム全体が正しく動作することを検証します。基本設計書に記された内容どおりかをテストするのが、結合テスト工程です。
詳細設計=コンポーネントテスト(単体テスト、ユニットテスト)
詳細設計工程では、基本設計で定義されたモジュールやコンポーネントごとに、詳細な設計を行います。
設計工程で、それぞれのモジュールやコンポーネントの設計が行われます。基本設計に従いどのように実現していくかを設計します。
対応するコンポーネントテストでは、モジュール単体が正しく機能しているかをテストします。
実装
詳細設計書に記載された関数仕様や処理概要をもとに具体的な処理を実装していきます。
V字モデルのメリット
V字モデルを導入することで得られるメリットについて、解説します。
テスト内容を的確に把握できる
開発工程とテスト工程が明確に対応しており、それぞれのテスト工程でテストする内容が、それぞれの工程の仕様書そのものです。システム/受入テストでは要件定義書、結合テストでは基本設計書、コンポーネントテストでは詳細設計書を、それぞれインプットしてテストを行います。
このようにテストの内容が明確なため、的確に把握することが可能です。
各段階での責任者が明確になる
各段階のテストの結果に対する、責任の所在が明確です。
システム/受入テストは要件定義担当、結合テストは基本設計担当、コンポーネントテストは詳細設計担当がそれぞれ責任者となります。テストをしていて不明点、問題点があれば、それぞれの工程の担当者に確認すればよいでしょう。そのやりとりのなかで、仕様書の記載に不明確な点や、仕様の問題点が浮かびあがってくることもあります。
テスト工程と開発工程がバラバラだと、テスト担当者が疑問を感じたときに、誰に問い合わせればよいかわからなくなるでしょう。開発側の窓口が決まっていたとしても、要件定義から実装までのどの工程で起きた問題なのかを判断してから、再度問い合わせなければなりません。
V字モデルでは責任の所在が明確なため、問い合わせ対応が明確です。そのため、テストでの問題発生から検証、問題解決までがスムーズに行えます。
作業進捗が明確になる
主にテスト工程でのメリットになりますが、対応すべきテスト内容が明確なため、作業の進捗も明確です。
システムテストなら、要件定義書の内容などテストすべき範囲が明確なため、作業内容も明確に決められます。その結果、スケジューリングがしやすく、また進捗状況がわかりやすくなります。
手戻りのリスクが軽減される
V字モデルでは、実装レベルからモジュール単位、モジュール同士の結合、システムテストなど、機能レベルから順番にテストしていきます。不具合を確実につぶしていきながらテストを進めるため、後工程で大きな不具合が出ることを防ぎやすいです。
後工程で大きなバグが発生すると、仕様の変更、設計、コードの修正、その後に対応するテストなどをすべて行う必要があるため、手戻りが大きくなります。しかし、小さいところから確実に不具合をつぶしていくV字モデルは、手戻りのリスクを軽減しやすい手法です。
また、要件定義はシステムテスト、詳細設計は結合テストなど、開発時にテスト工程が対応しており、テストを意識した工程になっています。開発段階でテストされることを意識することで「この仕様はおかしいのでは」「この設計だと要件を満たせないかも」など、バグをつくりこまない意識で開発を進められるでしょう。
修正にかかるコストを削減できる
不具合が発生した際には、仕様の確認、不具合箇所の特定、正しい仕様・設計の決定、ドキュメント・コード修正、再テストという作業が必要です。その際に、実際の仕様はどうなっているのか、不具合箇所はどこかを明らかにするのがむずかしく、時間がかかることがあります。
その際に、テスト工程と開発工程がリンクしていることで、不具合箇所や仕様の確認がしやすくなります。そのため、そのぶんの修正コストを削減することが可能です。
関連サービスについて
V字モデルの注意点
V字モデルを採用する際に知っておくべき注意点について、解説します。
計画やドキュメントを入念に作成する
V字モデルでは、各工程のドキュメントをもとに、適切にテスト計画を立てる必要があります。そのため、開発時に作成する要件定義書や設計書などのドキュメントは、後でテスト担当者が使うことを前提に、的確に記載しなければなりません。また、テスト担当者はそれらのドキュメントをもとに、綿密な計画を立てる必要があります。
変更管理を適切に行う
V字モデルでは、開発工程のドキュメントを対応する工程のテスト担当者が使用します。そのため、仕様変更や設計変更が行われたときに、要件定義書や設計書などのドキュメントの変更管理を適切に行わないと、テスト工程に影響してしまうのです。
テスト担当者の作業は、開発ドキュメントですべてが決まるので、ドキュメントに変更が行われないと、テスト作業への反映が漏れます。開発担当者だけが変更を把握していればよいなどとドキュメントの変更管理を怠ると、テストが漏れ、最悪の場合はバグを混入してしまうこともあります。
ドキュメントが変更された場合には、変更履歴を記録して、変更されたことがわかるようにドキュメントを変更しましょう。また、変更したことをその都度テスト担当者などの関係者に周知することも、重要です。
V字モデル以外の開発モデルとの違い
V字モデル以外にも、いくつかの開発モデルがあります。それぞれ何が違うのかを見ていきましょう。
ウォーターフォールモデル
ウォーターフォールモデルとは、上流から下流へ水が流れるように、要件定義→基本設計→詳細設計→実装→コンポーネントテスト→結合テスト→システムテストと開発が行われるモデルです。開発の流れ自体はV字モデルと同じですが、各開発工程とテスト工程を対応させているという点で、V字モデルは異なります。
V字モデルは、ウォーターフォールモデルの進化版といえます。
アジャイル開発
アジャイル開発は、開発からテストまでの流れを何度も行い、その都度問題解決や顧客からの要望のとり込みを行いながら、開発を進めていく手法です。上記のウォーターフォールモデルでは、最初にすべての仕様をすべて固めてから計画を立てて、設計→実装→テストと進めていくため、まったく異なることがわかります。
プロトタイプ開発
プロトタイプ開発は、試作品(プロトタイプ)を開発して、ユーザーに確認しながら開発を進めるモデルです。ユーザーに実際の製品を確かめてもらいながら開発を進めるため、ユーザーのニーズをとり入れやすくなっています。
V字モデルとは、明らかに異なる開発手法です。
V字モデルを発展させた「W字モデル」
ここでは、W字モデルとV字モデルとの違いなどについて解説します。
V字モデルとW字モデルの特徴の違い
W字モデルでは、開発工程で対応するテスト工程も並行して動きます。
たとえば、要件定義工程で、システムテスト担当者がテスト観点や項目の抽出も行います。テスト自体はできませんが、ドキュメントをもとにテスト準備をすることは可能です。また、テスト担当者がテストを行う目線で、要件定義書のレビューを行います。
V字モデルでは、ドキュメントを通して、開発担当者とテスト担当者がつながっているだけですが、W字モデルでは互いが協力して作業を行う点が異なります。
W字モデルのメリット・デメリット
開発時にテスト担当者が参画するため、品質の向上が期待できます。不具合の発生を抑えることで、手戻りを減らすことにもつながります。
一方で、システム開発とテスト設計が同時に進むためテスト担当者から開発担当者へ問い合わせが頻発するなど、想定外の事態が発生することもあります。このように、担当者が慣れない作業をすることで、プロジェクトが混乱する可能性もあるでしょう。W字モデルの作業の進め方を正しく周知していくことが重要です。
W字モデルが向いているケース
W字モデルが向いているのは、熟練のエンジニアが多い、開発担当とテスト担当の連携がとれている、そして、マネジメントが適切に行われているなどのケースです。それぞれの連携や適切なマネジメントが必要不可欠なので、経験豊富なマネージャーや熟練のテスト担当者などがいるプロジェクトなら、W字モデル開発を成功させやすいでしょう。
W字モデルについてはこちらもご覧ください。
>>W字モデルとは?V字モデルとの違い、導入するメリット・注意点を解説のページへ
システム開発における「テスト分離」「第三者テスト」の導入
※ご登録いただくとその場で無料動画の視聴が可能です。
本動画では、システム開発の「テスト分離」「第三者検証」の導入やメリットのほか、その実現に向けたアプローチについて、専門知識と経験豊富なテストの専門家が解説しています。
昨今のシステム開発は、ITシステムの有識者不足や開発効率に影響する品質など、さまざまな課題が発生しています。こうした問題を解決する一つの方策である「テスト分離」「第三者検証」をわかりやすく説明した内容になっておりますので、ぜひご視聴ください。
※ご登録いただくとその場で無料動画の視聴が可能です。
本動画では、システム開発の「テスト分離」「第三者検証」の導入やメリットのほか、その実現に向けたアプローチについて、専門知識と経験豊富なテストの専門家が解説しています。
昨今のシステム開発は、ITシステムの有識者不足や開発効率に影響する品質など、さまざまな課題が発生しています。こうした問題を解決する一つの方策である「テスト分離」「第三者検証」をわかりやすく説明した内容になっておりますので、ぜひご視聴ください。
関連サービスについて
まとめ
この記事では、V字モデルについての基本事項、要素と対応関係、メリット、注意点などについて解説しました。テスト手法は日々進化しており、状況にあわせて、バグの発生や手戻りを減らしやすいテストを導入していく必要があります。
SHIFTでは、精度と品質の高いソフトウェアテスト・第三者検証サービスを提供しています。システム開発の品質向上を行いたい場合など、ぜひご相談ください。
>>ソフトウェアテスト・第三者検証のページへ
>>導入事例ページへ
>>料金についてページへ
>>お問い合わせページへ
監修
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――