フォーカスノート
システム開発のV字モデルとは?工程・メリット・W字モデルとの違いを解説
目次
「システム開発手法のV字モデルって何?」
「システム開発V字モデルのメリットは? 基本概念や工程も知りたい!」
システム開発を担当する方の中には、上記のように考えることがあるかもしれません。まずV字モデルには以下のようなメリットがあります。
- テスト内容を明確にしやすい
- 各段階での責任者を明確にしやすい
- プロジェクトの進行段階を確認しやすい
- 手戻りリスクが比較的低い
最初に要件定義がしっかりと行われるため、テスト内容を適切に設定しやすいことが代表的なメリットです。またフェーズを1つずつ上げていくため、全体の進捗状況や各工程の責任者も明確にしやすくなります。マネジメントを円滑に進めることができるでしょう。
この記事では、システム開発V字モデルの基本情報・工程や役割・その他手法との違いについて詳しく解説します。ぜひご参考ください。
1.システム開発のV字モデルとは?
まずはシステム開発V字モデルや工程などの基本情報を解説します。
- システム開発手法であるV字モデルとは?
- そもそもシステム開発とは?
- 上流工程と下流工程とは?
システム開発手法であるV字モデルとは?
V字モデルとは、システム開発の各工程を要件定義・設計・実装・テストの工程に分類し、V字モデルの見た目に重ね合わせた手法を指します。特にテストフェーズの重要性を強調しているモデルとなっています。工程は以下の通り
V字モデルの左側(上流工程) | V字モデルの右側(下流工程) |
---|---|
1.要件定義 | 7.システムテスト |
2.基本設計 | 6.結合テスト |
3.詳細設計 | 5.単体テスト |
4.開発および実装 |
V字の左半分には要件定義・基本設計・詳細設計が、右半分には単体テスト・結合テスト・システムテストが配置されています。進む開発の流れに呼応して、テストが配置されています。1から7にいたるまでの一連の流れがVの字になっていることから、V字モデルと呼ばれています。
この形状により、定義や設計は各テストと密接にリンクされます。どの作業に対してどのテストが対応しているのかが一目瞭然です。そのため各フェーズのテストをしっかりと実施・チェックしたい方に、使いやすい開発モデルと言えます。
なお、伝統的で一般的な開発手法の1つに『ウォーターフォール』があります。しかしウォーターフォールでは、どの作業に対してのテストなのかが、わかりにくいというデメリットがあります。そこで、わかりやすく進捗が管理しやすいV字モデルが利用されることも多いでしょう。
そもそもシステム開発とは?
システム開発とはビジネスに役立つツール・ソフトウェアを具現化することを指します。既存システムを組み合わせ、環境を整える『システム構築』と言葉が似ていますが、システム開発は基本的に『イチから新しいものを作り上げること。もしくはその際に踏むプロセス』と考えて良いでしょう。
そんなシステム開発の基本工程は以下の通りです。
- 設計
- 構築
- テスト
- 導入
- 顧客情報管理システム
- 在庫一括管理システム
- 勤怠管理システム
- 生産管理システム
これらを開発・導入することで、業務の効率化、場合によっては自動化を実現できます。
なおシステム開発にはシステムエンジニアやプログラマーなどが携わり、プロジェクト全体の管理や責任をプロジェクトマネージャーが担う体制が一般的です。
上流工程と下流工程とは?
システム開発における上流工程と下流工程とは、プロジェクト進行の段階を指します。上流工程は初期段階に位置する工程で、方向性や計画などプランニング全般が行われるでしょう。
上流工程の内容としては、システムの目的や範囲をはっきりさせ、作るシステムの内容や必要な予算・スケジュールの設定があります。これらはプロジェクトの成否に影響を与えるため、とても重要な工程と言えるでしょう。
上流工程では、打ち合わせを重ねてユーザーが求めるシステムを具体化します。また、決まった工程をまとめ、効率的に進めるための指揮をとる必要があります。そのためコミュニケーション力・マネジメント力などを含む総合的な能力も重視されます。
一方、下流工程はシステム開発の後半で行われる工程です。上流工程で決定した要件に従い、テストを実行します。この工程では、作成された設計書に基づいた正確なプログラミング作業が求められます。また各開発段階の成果物に対する厳密なテストが不可欠なため、各種テスト技術に精通していることも求められるでしょう。
なおシステム開発の工程の詳細は以下の記事をご参考ください。
システム開発の工程は?流れやウォーターフォールモデルなどの種類を解説
設計内容は?V字モデルの工程と役割
システム開発のV字モデルの工程と役割は、以下の通りです。
要件定義
V字モデルでは、最初に行うのは『要件定義』です。要件定義は、どのような目的でシステムを構築するのか、どのような機能や特性が必要なのかを定める作業です。システムを作る理由や、システム本稼働後にどのような業務効率化などが期待されているかを定義する必要があります。基本的には以下のようなものを定義します。
定義例 | 具体例 |
---|---|
ユーザー要件 | ニーズや解決すべきことなど |
機能要件 | データ処理やレポートなど |
非機能要件 | 互換性や拡張性など |
その他制約 | 予算やスケジュールなど |
例えば、ユーザー情報を一元管理して業務プロセスを改善したい場合、そのために必要な機能やスケジュールをこの段階で具体的に決めます。プロジェクトの費用も、この時点で見積もり、部門責任者もしくは経営陣からの承認を得るのが一般的です。同時に、かかった経費がどれくらいの期間で回収できるかについても要件定義の段階で計画を立てます。
要件定義は、開発を進めるために重要な工程です。しっかり行わないと、開発や実装の段階でトラブルが生じるおそれがあります。よく話し合い、検討することが大切です。
基本設計
次に『基本設計』へと進みます。基本設計は要件定義でまとめた内容を実現するために、システムの全体的な構造と機能を定義する工程作業です。主に以下のような設計が考えられます。
設計対象の例 | 具体例 |
---|---|
業務フロー | システムを利用する際のフロー図 |
実装機能の一覧 | システムに実装する機能 |
レイアウト | 各種レイアウト |
画面遷移 | 画面の遷移の流れ |
要件定義が開発するシステムの目的を定めるのに対し、基本設計ではその目的を達成するための具体的な方法をまとめていく作業です。通常は、要件定義書を元にして、仕様を決めていきます。これには、画面デザインやインフラ構成を決めていく作業なども含まれます。そのためユーザーが理解しやすいように配慮し、システムの完成イメージを共有しながら進めましょう。
詳細設計
次は『詳細設計』です。詳細設計は、基本設計で定めた内容を実現するために、どのようにプログラムを書けばいいのか、設計図を作る工程です。主に以下のような設計が考えられます。
設計対象の例 | 具体例 |
---|---|
機能分割 | クラス図やシーケンス図など |
データフロー | データの流れを示すフロー図など |
画面設計書 | モジュール化など |
データベース関連 | テーブル定義書など |
主にプログラマーに実装方法を伝えるために行うフェーズで、処理フローやデータの流れなどを設計書にまとめます。プログラマーが実際にコーディングを進める上での指針が明確になり、効率の向上が期待できるでしょう。
基本設計は発注者に対して提示するので『外部設計』、詳細設計はプログラマーに提示するので『内部設計』と呼ぶこともあります。
開発および実装
次に詳細設計書をもとに、『開発および実装』を進めます。正しいプログラミングにより、定義された機能がシステム上で正確に動作するように設計します。
この作業は主にプログラマーの担当です。C言語・Java・JavaScript・PHPなどのプログラミング言語を使って作成します。
V字モデルでは、開発および実装の段階で折り返し地点になり、これ以降はテスト工程が進んでいきます。ここで作られたシステムは、後のテスト工程で詳細な動作確認の基盤となるため、とても重要なステップです。
単体テスト
システムやソフトウェア開発のプロジェクトで、最初に行うテストが『単体テスト』です。V字モデルでは、詳細設計の対に位置しています。つまり、詳細設計で計画した機能がプログラムに正しく実装されているかを確かめるテストです。
具体的には、プログラムを構成する小さな単位であるユニットやコンポーネントを個別にテストします。例えば関数や画面のパーツなど、できるだけ小さな単位でテストし、それぞれが正しく動作するかを検証します。このことから単体テストは、ユニットテスト・コンポーネントテストなどとも呼ばれます。
このテストは結合する前に行うため、問題が発見された場合も特定や修正を実行しやすいのが特徴です。単体テストは、作り上げたシステムに不具合が出ないように洗い出す機能を果たします。
結合テスト
『結合テスト』は、単体テストで動作したシステムを組み合わせて、連携や挙動をチェックするテストです。V字モデルでは、基本設計の対に位置しています。
単体テストが個別の機能に焦点を当ててテストしたのに対し、結合テストではそれらをつなぎ、全体のデータの流れに焦点を当てテストします。
そんな結合テストは大きく分けて、以下の4種類があります。
結合テストの例 | 特徴 |
---|---|
インターフェーステスト | 個々のプログラム・モジュールを連携させて動作を確認するテスト。データが正しく引き渡されるかなどを検証する。 |
ブラックボックステスト | 内部構造や実装の詳細を考慮せず、ソフトウェアの入出力に基づいて機能を確認するテスト。システムの外部から見た挙動を検証する。 |
シナリオテスト | 実際の業務を想定し、動作・挙動を確認するテスト。トランザクションなどを通じてシステムを検証する。 |
負荷テスト | システムに負荷をかけて、不具合が発生しないかを確認するテスト。大量のデータを処理させることで、処理能力などを検証する。 |
このように機能同士を組み合わせて、様々な検査項目で問題がないかを検証するテストが結合テストです。
システムテスト
『システムテスト』は、システムを構築した後に、要件定義で定めた仕様書に基づいて正しく動作しているか、要望通りの性能が発揮されているかを確認するテストです。V字モデルでは、要件定義の対に位置しており、総合テストとも呼ばれています。
このテストは、システム全体の最終チェックで、主に以下の2つの種類に分かれます。
- 機能テスト
- 非機能テスト
機能テストは、本番環境で実際のデータを使い、ソフトウェアの各機能が正しく動作しているかを確認するテストです。システムが期待通りに動くかどうかを最終的に確かめます。
非機能テストは、ソフトウェアの動作以外の側面、つまりパフォーマンスや非機能要件を満たしているかをチェックします。システムテストは、テストエンジニアもしくは、仕様を理解しているシステムエンジニアが担当するのが一般的です。
V字モデル活用のメリットを解説
V字モデル活用のメリットは、以下のとおりです。
- テスト内容を明確にしやすい
- 各段階での責任者を明確にしやすい
- 進行段階を確認しやすい
- 手戻りリスクが比較的低い
テスト内容を明確にしやすい
V字モデルを活用すれば、テスト内容を明確にしやすくなります。開発工程ごとにテスト内容が明確に定義されているからです。
工程 | システムをテストする過程 |
---|---|
要件定義 | 要件定義通りに実装されているかシステムテストを行う |
基本設計 | 基本設計通りに実装されているか結合テストを行う |
詳細設計 | 詳細設計通りに実装されているか単体テストを行う |
V字モデルを取り入れれば、上表のように各段階に沿ってテスト・検証を行うことができます。やるべきことが明確になるので、確認漏れが減少および品質向上につながるでしょう。
各段階での責任者を明確にしやすい
各段階での責任者を明確にしやすいのも、V字モデルの特徴です。各工程ごとの担当者がしっかりと区切られているためです。
工程 | 責任者の例 |
---|---|
要件定義 | プロジェクトマネージャー、ITコンサルタント |
基本設計 | オペレーション担当者 |
詳細設計 | システムエンジニア |
開発および実装 | プログラマー |
例えば現在の工程が基本設計なのであれば、責任者はオペレーション担当者になります。V字モデルを導入することで、このように各段階および現在の責任者を把握しやすくなります。
ただし、プロジェクトによっては複数の段階にまたがるタスクが存在することもあります。この場合は各段階における責任者を把握しにくくなることがあるため、注意が必要です。
進行段階を確認しやすい
V字モデルを採ると、プロジェクトの進行段階も確認しやすくなります。V字モデルではプロセスが段階的に進むためです。
V字モデルでは、各段階のスタートは前段階の完了が条件となります。例えば詳細設計に進むのは、基本設計が完了してからです。各フェーズの完了が明確なマイルストーンになります。
このようにV字モデルは進行プロセスおよび進行条件が極めてシンプルであり、基本的に確認に手間取ることはないと言えるでしょう。上述のように責任者も明確になりやすいため、プロジェクトの状態を管理・トラッキングしやすくします。
手戻りリスクが比較的低い
手戻りリスクが比較的低いという点も、V字モデルのメリットです。要件定義と設計が完了してから開発が始まるためです。
V字モデルでは、最初に厳格に要件を定義して、詳細に文書化・設計を行います。そして、各段階のテストレベルが明確に定義され、各工程が終わるたびに厳密なテストを行います。これにより何も考えずに開発をどんどん進めた場合と比べて、下流工程で抜け漏れが発覚することが起こりにくくなります。大きな手戻りの予防を期待できるでしょう。
ただし、これはあくまで『比較的低い』という話で、絶対ではありません。例えばテスト段階で致命的な欠陥が見つかった場合は、要件定義まで戻るおそれもあり得ます。ご注意ください。
V字モデル・W字モデル・アジャイルモデルの違いを解説
システム開発ではV字モデル以外にも、W字モデル・アジャイルモデルなどの手法があります。ここではV字モデルとの違いを解説します。
- V字モデルとW字モデルの違い
- V字モデルとアジャイルモデルの違い
- V字モデルとウォーターフォールモデルの違い
- V字モデルとプロトタイプモデルの違い
V字モデルとW字モデルの違い
『V字モデル』は、要求分析から開発・実装まで段階的に進むのに対し、『W字モデル』は以下のようにテスト工程も同時進行します。W字モデルの工程は以下のとおりです。
上流工程 | 下流工程 | ||
1. 要件定義 | 2. 担当者からのフィードバック システムテスト設計 | 12. システムテスト | 13. 修正 |
3. 基本設計 | 4. 担当者からのフィードバック 結合テスト設計 | 10. 結合テスト | 11. 修正 |
5. 詳細設計 | 6. 担当者からのフィードバック 単体テスト設計 | 8. 単体テスト | 9. 修正 |
7. 開発 |
こうすることで要件定義や設計の進捗に応じて、即座に検証できます。設計ミスを効率的に見つけられるため、修正しやすくなります。
V字モデルは前述のとおり、開発のステップをV字モデルに表したもので、要求分析から開発・実装まで段階的にテストします。V字モデルはW字モデルとテストの時期が異なります。V字モデルは開発後にテスト工程に入りますが、W字モデルでは前半にテスト設計します。
W字モデルは、設計ミスをより早い段階で把握したいプロジェクトにおすすめの開発手法です。
V字モデルとアジャイルモデルの違い
『V字モデル』は段階的に進みますが、『アジャイルモデル』は柔軟かつ素早くリリースできる手法です。アジャイルモデルの工程は以下のとおりです。
機能A | 機能B | 機能C | 機能D |
---|---|---|---|
1.要件定義 | 1.要件定義 | 1.要件定義 | 1.要件定義 |
2.設計 | 2.設計 | 2.設計 | 2.設計 |
3.開発 | 3.開発 | 3.開発 | 3.開発 |
4.テスト | 4.テスト | 4.テスト | 4.テスト |
5.リリース | 5.リリース | 5.リリース | 5.リリース |
※アジャイルモデルでは、同時進行で各機能を開発するのが一般的です。
まずアジャイルモデルは要求定義・設計・実装・テストの一連の工程を、機能ごとに短期間で繰り返す開発手法になっています。PDCAサイクルを高速で繰り返すようなイメージです。
機能ごとにリリースなどを繰り返すため、要求変更があった際にも柔軟に対応できます。それだけでなく、プロジェクト進行中に生じた市場変化も織り込みやすくなります。
対照的にV字モデルは、要求仕様書に沿って忠実に開発を進めるため、プロジェクト進行中に生じた要求変更への耐性が低いといえます。その代わり、各段階にて必ずテストするため、最終的な成果物の品質の高さには期待が持てます。
したがって変更に柔軟に対応したい場合は、アジャイルモデルがおすすめです。
V字モデルとウォーターフォールモデルの違い
『ウォーターフォールモデル』は順次進行するモデルで、V字モデルは各段階にテスト工程を組み込むモデルです。ウォーターフォールモデルの工程は以下のとおりです。
- 要件定義
- 設計
- プログラミング
- テスト
- 運用・保守
ウォーターフォールモデルはシステムの開発を段階に分けて、1つの段階が終了すると次の段階へ進みます。要件定義からシステムテストへと、上から下へ滝のように工程が下がっていくことから『ウォーターフォール(滝)』と呼ばれています。
ウォーターフォールモデルはV字モデルのように、各段階の目的と成果物がはっきりしているのが特徴です。プロジェクト管理が容易になり、プロセスを掌握しやすくなります。
対してV字モデルは、このウォーターフォールモデルにおける開発段階でV字になり、左側の工程に対してテストが組み込まれます。テストの範囲を明確にしやすい特徴があります。
両モデルはとても似ており、ウォーターフォールモデルを発展させた手法がV字モデルと言えるでしょう。
V字モデルとプロトタイプモデルの違い
『プロトタイプモデル』はプロトタイプ(試作品)を作成し、発注者に確認をとるモデルです。プロトタイプモデルの基本工程は以下のとおりです。
- 要件定義
- 設計
- プロトタイプ制作
- レビューおよびテスト
- プロトタイプの修正
- 本開発
- リリース
プロトタイプモデルはユーザーのフィードバックを受けて要件を細かく定め、プロトタイプが合格したら、製品の本開発へと進む手法です。上流工程の段階でユーザーのフィードバックを積極的に取り入れるため、ニーズをより正確に把握できる特徴があります。
その一方でV字モデルは、ユーザーへの確認テストが下流工程に存在します。そのためプロトタイプモデルに比べて、要件を変更しにくい点があります。
以上のことから、プロトタイプモデルはユーザーからの変更希望に柔軟に対応しつつ、最終製品がユーザーの期待により適合することを目指すプロジェクトにおすすめです。
ただしプロトタイプモデルは試作品の作成とその確認が必要なため、V字モデルに比べると工数とコストがかかる傾向にあります。ご注意ください。
まとめ
ここまでシステム開発のV字モデルを解説してきました。システム開発にV字モデルを使うことで、プロジェクト全体を管理しやすくなります。各工程が明確なため、テスト内容も把握しやすく、責任者も明確にしやすくなるでしょう。
V字モデルは柔軟な仕様変更を苦手とするため、要件を明確にできて変更が少ないプロジェクトに用いるのが良いでしょう。変更点があまりないことが予想されるプロジェクトを計画している場合は、V字モデルを取り入れてみてはいかがでしょうか。
システム開発で何かお悩みがございましたら、ぜひ当社にご相談ください。