システム開発におけるV字開発モデルとは?そのメリットやデメリットまとめ

システム開発の方法には、色々な方法があります。

プロジェクトの規模や、顧客の予算や納期、メンバーの力量や人数などの体制など、様々な要素で決定するのが一般的です。

そんなシステム開発において
「V字開発モデル」
というものがあります。

今回は、このV字開発モデルの意味や、メリット・デメリット、そしてV字開発モデルを進化させたW字開発モデルについて触れていきたいと思います。

V字開発モデルとは

V字開発モデルとは、開発におけるプロセスに対して、開発工程以外の工程に対し、それぞれの工程に対応するテストを行うようなモデルです。

下記の画像の様に、
・要件定義とシステムテスト
・基本設計と結合テスト
・詳細設計と単体テスト
が、それぞれ対を成す形で行われるようなモデルです。

それぞれが対を成す形がV字に見えることからそう呼ばれるわけですが、定義によっては、

・開発工程とコードレビュー
・要件分析と受け入れテスト

などを更に追加して表現することなどもあります。

ここで重要なのが、
「左側で行った作業を、きちんと右側でテストする」
という部分ですので、細かい工程自体は、企業の進め方やプロジェクトによって異なる可能性があります。

ウォーターフォール開発と、工程自体は近いものがありますので、ウォーターフォール開発の上位互換という表現をされることもあります。

V字開発モデルの工程

では、次に具体的なV字開発モデルの工程を見ていきましょう。

今回は、前述の画像のような工程を想定しています。

要件定義

要件定義では、クライアントに対して
「どのようなシステムを作るのか」
の要件を詰めていきます。

この段階では、
「システムを具体的にどの様に作っていくか」
ではなく、
「そもそも何がやりたいのか」
「どういうことを実現したいのか」
を整理していきます。

クライアントの中には、
「なんとなく業務改善したい」
「仕事が早くなれば何でも良い」
などのように、要望はあるものの、それを実現する方法に関しては、専門外の方も多いです。

そういう方に対して、やりたいことをヒアリングしていく段階です。

また、クライアントの要望が
・現在の技術で実現可能なものか
・予算と見合う内容か
などを調査するとともに、

「そもそも、その作業は必要なのか」

という現状業務そのものの運用方法を変えるなど、様々な方面からアプローチをしていきます。

基本設計

次に基本設計です。

基本設計では、名前の通り基本的な方針を文書化していきます。

同じ目的を果たすためのシステムでも、様々な開発方法が考えられます。

例として「製造業における製品の品質改善」について考えましょう。

その企業では、品質改善においてExcelで改善案を提出していました。

しかし、その結果
・改善案のフォーマットが人によって違う
・画像の貼り方がバラバラ
・画質が悪い
・写真の容量が大きくて開かない
・過去の改善案を探せない
・承認するのに電子印が必要

など、様々な問題が起こっていたとします。


これらの要望が、前項の要件定義で挙がってきていたわけですが、この問題を解決するために、次のような方法が考えられます。

【改善方法1】
ワークフローシステムを導入し、Excelでの改善案を廃止する方法です。

フォーマットをワークフローシステムで作ることにより、人によってフォーマットが異なることがなくなり、データベース管理によって、集計や検索が容易になります。

【改善方法2】
チャットワークやSlackなどのようなグループウェアを利用する方法です。

Excelそのものは廃止しないものの、その共有方法を統一し、コミュニケーションを取りやすい環境を整えることで、円滑な運営を目指します。

更に、グループウェア内でフォルダ構成をきちんと整えることで、検索も容易にします。

【改善方法3】
IoTの活用で、改善案の作成をスムーズにする方法です。

IoT技術を使うことで、機器やセンサーによって収集されたデータをインターネットを通じて共有することができます。

結果的に、改善案を作る時間そのものを短縮したり、改善すべきポイントをAIによって分析するなどの効果が考えられます。

この様に、1つの課題に対して、様々な改善アプローチが考えられます。

基本設計では、どのような方法でアプローチをしていくのかを定めていきます。

詳細設計

詳細設計では、具体的にシステムにする際の細かい部分の設計を書いていきます。

例えば、
・どのような画面を作るのか
・各テキストボックスの文字数制限はいくつか
・検索ボタンを押したら、どのように動くのか
・ログイン画面はあるのか
・どのようなエラーチェックをするのか
・各画面の権限設定をどうするか

など、実際にプログラマーに渡して、動作を作れるレベルで資料を作っていきます。

実際の現場では、設計をした人と、プログラミングをする人が別になることはよくあり、
「誰がその資料を見ても、同じ物が出来上がる」
というレベルで情報を書き込んでいきます。

開発・コーディング

設計書が出来たら、それを元に実際にプログラミングをしていきます。

この時に、人数が多い場合などには、前述した
「コードレビュー」
が行われることがあります。

コードレビューは、その作り方が本当に正しいのかを確認する作業で、大勢で作る場合や、実務経験の浅いメンバーが参画する場合には、特に重要になってきます。

単体テスト

単体テストは、各プログラムがそれぞれ個別に動くかをテストする工程です。

システムは、単体で動かすものもありますが、基本的には色々な画面やシステムが連動しています。

それらを、いきなり動かすとバグが見つかった際の原因究明に時間がかかります。

そのため、単体テストを行う必要があるのです。

この単体テストは、V字開発において「詳細設計」と対を成す位置づけにあります。

そのため、詳細設計で決められた要件を重点的にテストしていくことが求められます。

結合テスト

単体テストが終了したら、次に結合テストを行います。

結合テストでは、それぞれのシステムを連動させた時に、きちんと想定通りの動きになるかを確認していきます。

この工程は「基本設計」と対を成す位置づけで、
・そもそもどういう事がしたかったのか
・どのような理念で作るのか
ということをきちんと抑えた上でのテストが求められます。

シナリオテスト

次に、シナリオテストです。

シナリオテストでは、実際にユーザーが利用することを想定して、シナリオを考えます。

業務に準じて、日常的に想定される動きを行い、それらの動きに問題が無いかを確認します。

これらは、
「そもそも何がしたかったのか」
という要件定義の段階とリンクしており、クライアントの課題をきちんと解決できるものであるかを最終的に確認していきます。

例えば、ユーザーを想定してシナリオを考えた時に、結果的に業務時間が増えてしまったら、要件定義で挙げた問題点を解決したことにはなりません。

それでも、それ以外のメリットが大きかった場合には、問題が無いこともありますが、それらを見極めるためにも、シナリオテストが重要になるのです。

V字開発モデルのメリット

次に、V字開発モデルのメリットを見ていきましょう。

テスト項目を決定しやすい

V字開発モデルでは、詳細設計に対して単体テストを行う様に、それぞれのレベルでテストを行います。

そのため、テスト項目は詳細設計書にある内容をベースにすることが出来、テスト項目を決定しやすいというメリットがあります。

更に、それぞれの段階でテストする方針が決められているため、テストの重複が起こりにくいのも特徴でしょう。

テストのコストが下がる

テスト項目を決定しやすいことにも関連してきますが、V字開発モデルで、各テストの方針が定まっている事で、
・管理コストが下がる
・進捗が管理しやすい
・手戻りが少なくなる
など、色々なメリットがあります。

これらによって、結果的にテストにかかるコストが少なくなる事がメリットです。

V字開発モデルのデメリット

次にデメリットについてです。

クライアントからの後出しの要望には答えにくい

クライアントは、最初の段階で完璧に要望を出せていない事が多々あります。

やっていく内に
「これもやって欲しい」
「こんなこともできるの?」
という希望が出てきたり、
「思っていたほど、その部分は問題ではないのかもしれない」
というように、憶測が誤っているケースがあります。

これらの際に、急遽方針を変更しようとする時に、すでに開発が進んでいて、変更が難しい・・・などの問題が発生することがあります。

反対に、アジャイル開発の場合、影響範囲が小さくて対応が可能になる可能性があり、このあたりが開発モデルを選ぶ際の一つの基準になるといえるでしょう。

上位工程のミスが大きな影響を与える

V字開発モデルでは、基本的に一度設計を完了させると、再度設計に戻ってくることはありません。

そのため、最初の段階で、きちんと設計を行えていなかった場合に、大きな影響を与えるというのがデメリットです。

特に、設計する人と開発する人が別々の場合などは、慎重にプロジェクトを進める必要性があるでしょう。

更に進化したW字開発モデルも存在する

V字開発モデルには、それぞれメリットもデメリットもありましたが、近年ではこの概念を更に進化させたW字開発モデルというものも出てきました。

W字開発モデルは、V字開発モデルが1つのプロセスで成り立つのに対して、2つのプロセスが並行して動きます。

「設計・製造」と「テスト」のプロセスが同時に進み、それらの各工程がV字開発モデルと同様に対を成すような形で進行します。

下記の図のように、見た目的にWのように見えることからこの名前がついています。

W字開発モデルは、テストの工程そのものは増えるものの、早い段階からテストやコードレビューを行うため、最終的な手戻りなどが少ないです。

そのため、特に現場経験が浅いエンジニアが多いプロジェクトでは、非常に有効な開発モデルと考えられます。

また、設計に関してもテストが入ることで、
・仕様に無理が無いか
・セキュリティ的な懸念点が無いか
・顧客の要望通りの設計になっているのか
を、早い段階で確認できます。

基本的に開発や設計は、後半になってから問題点に気付くほど、修正が難しくなります。

そのため、こういった開発モデルは、非常に重要とされるのです。

安全なシステム開発はAMELAに

今回は、V字開発モデルと、それを進化させたW字開発モデルについて見てきました。

システムの開発には、様々な手法があり、どのように進めていくのかは、会社によって異なります。

更に、同じ企業に依頼してもエンジニアのスキルレベル次第では、出来上がる納品物や設計書の完成度に差があります。

例えば、最初に依頼した企業のドキュメントがわかりにくいものだった場合、次に別の企業に依頼したときにも
「ドキュメントがわかりにくいため、再度システム全体を調査する工数が必要になる」
というように、無駄な費用がかかる可能性があります。

長期間使い続けるシステムだからこそ、依頼する企業には慎重になる必要があるのです。

AMELAでは、専任のITコンサルタントがきちんとヒアリングを行い、海外の優秀なエンジニアがしっかりとした開発を行います。

多くの業界での実績もあり、過去に開発に失敗した経験がある方でも、是非一度ご相談いただければと思います。