システム開発未経験でもわかる!V字モデルの基本と各工程での活用方法

システム開発 v字モデル システム開発
「V字モデルについてイマイチ理解できない」
「V字モデルの活用方法について知りたい」

このようにお悩みではありませんか?

V字モデルについて説明を受けても、初心者の方にとってはそれが何なのか、どのように活用すればよいのか、一発で理解するのは難しいですよね。

そんなあなたに向けて、この記事ではソフトウェア開発未経験者でも「V字モデル」をどのように開発工程の中で活用すればよいのかを理解できるように解説しています。
読み終えた後には、「V字モデル」の全体像、開発工程の中での活用方法がクリアになっており、それに加えて代表的な開発手法についても概要の理解ができているでしょう。

当記事を読むことで、皆さんがソフトウェア開発チームの一員としてプロジェクトの成功へ貢献できる人財となる一助となれれば幸いです。

ソフトウェア開発の主な開発手法について

システム開発 v字モデル
ソフトウェア開発のプロセスや手法は様々なものがあり、ソフトウェア開発の効率化や品質向上のために用いられます。
そこで利用される主な3つの開発手法を説明していきます。

ウォーターフォール型開発

最も一般的な、古くからあるソフトウェア開発モデルです。

開発を時系列に「要件定義」「設計」「製造」「テスト」というように作業工程に分解し、それを水の流れのように上流(要件定義)から下流(テスト)と順番に進めていきます。
大規模開発でよく採用され、後戻りしないようにしながら工程を進めていく必要があります。

利点

各工程で何を成果物として作成するかを文書化し、承認した上で次の工程へ進むため、成果物が確実に残る点や、作業工程に対応する成果物が明確で進捗が管理しやすくなります。

欠点

上流から下流へと順番に進めることが前提となっているため、基本的には前工程へ手戻りすることが想定されていません。

しかし、実際のシステム開発では、要件定義時ではなかった想定外の要望やニーズが、仕様を詳細化していくにつれて明らかになることが多々あります。
その際には、前工程にさかのぼって追加で設計をし直し、システム全体の整合性を確認する必要があるため手戻りが発生します。

よって、追加要件の内容によっては納期遅延や予算超過に繋がっていきます。

プロトタイプ型開発

開発の早い段階で「要件定義」「設計」「製造」により試作品(プロトタイプ)を作成し、それをエンドユーザが確認し評価することでシステムの仕様を確定し、期間をかけて徐々に品質を上げていく手法です。
「要件定義」工程で決まりきらない事柄があっても、プロトタイプをもとにエンドユーザが利用イメージを明確にできることで、要件を確定していくことができます。

利点

エンドユーザに対して早い段階で目に見える形でシステムを提供することにより、システムの最終形をエンドユーザがイメージし易くなります。
それにより、エンドユーザが無駄な機能や不足している機能を具体的に指摘することが可能となり、システムを使う側、作成する側のイメージのずれや認識の齟齬を少なくすることができます。

また、システム開発に不慣れなエンドユーザでも要求事項を具体的に伝えやすくなります。

欠点

あまりに大規模な開発の場合は、プロトタイプを作成するまでの期間が長くなり、その後の確認や修正対応などの調整にも時間がかかることで、かえって手戻りや開発効率が悪くなる場合があります。

また、プロトタイプを確認していく中で、追加の要件やニーズが膨れ上がり当初想定していたシステム規模よりも増大することで、納期遅延や予算超過につながる可能性があります。

アジャイル型開発

迅速にソフトウェア開発を行う手法の総称です。

数週間でリリースできる規模のソフトウェア開発として小さな単位で、「要件定義」「設計」「製造」「テスト」を行い、期間内で要求を満たすまで何度も繰り返します。
小さな単位へ分割し、それをどのような優先順位で開発するかをエンドユーザ側と開発側でコミュニケーションを密にとり決定して進める必要があります。

利点

小さな単位に分割して要求を出してすぐに開発に反映させることができるため、仕様の不備や要求漏れに早い段階で気づくことができることで、要求通りの商品を提供することが可能となります。
開発途中で問題点が発生したとしても、小さな単位へ分割しているため短時間での修正が可能となります。

また、ビジネス要求の優先順位の変更が多いプロジェクトに対して、小さな単位の開発の順序を入れ替えることで柔軟に対応できます。

欠点

変化に柔軟に対応しようとするあまり、エンドユーザからの要求がまとまらず優先順位も明確にならず全体の見通しが立たないことにより、結果的にスケジュールが長期化したり予算超過へつながる場合もあります。

「V字モデル」の活用方法について

システム開発 v字モデル
前章では、「V字モデル」の理解に必要なソフトウェア開発手法について説明しました。
本章では、「V字モデル」について説明していきます。

「V字モデル」とは

「V字モデル」(Vモデル)は ウィキペディアで以下の通り記載されています。

Vモデルはドイツ政府関連のソフトウェア開発工程を規定するために開発された。
ソフトウェア開発の中で行うべき活動とその成果物を規定している。
Vモデルはソフトウェア開発のライフサイクルをグラフィカルに表現したものでもある。自動化されたシステム検証フレームワークとの関連でなされるステップを要約している。
V字型に表される概念図の左側はシステムの仕様を記述していく流れを示している。
右側はテストの流れを示す。
それぞれの同じ高さの部分は開発の詳細さのレベルを表している。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

つまり、左半分に開発工程を右下がりに並べ、右半分にテスト工程を右上がりに並べた図として表現されます。
この左右での対応付けが「V」字型で表現されるため「V字モデル」と言われています。

要件定義 ⇔ ユーザ受入れテスト(業務運用テスト)
基本設計 ⇔ システムテスト
機能設計 ⇔ 結合テスト
詳細設計 ⇔ 単体テスト
製造(プログラミング)

ここで出てきました開発工程のそれぞれに対して、どのようなことを実施するかについて説明していきます。

「要件定義」(Requirements Definition)

システムの仕様書で、システムが何をしなければならないかなどを記載したものです。

「基本設計」(Basic Design)

システムを外から見たときどういう動きをするかを決めるもので、システムの専門家でないエンドユーザでも理解可能な設計書です。
主な記載内容は以下の通りです。

業務フロー、機能一覧表、ネットワーク構成図、テーブル定義、データベースの関連(ER図)、画面遷移図、画面レイアウト、帳票レイアウト
「機能設計」(Function Design)

基本設計の一部である、機能、データベースのテーブル定義、データベースの関連(ER図)の仕様を詳細化する設計書です。

「詳細設計」(Detail Design)

プログラマーが理解できるように機能設計書をもとにさらに詳細化した設計書で、エンドユーザでは理解が難しい設計書です。

「製造」(Programming)

詳細設計書に基づいてプログラマーがプログラミングを作成します。

「単体テスト」(Unit Test)

製造したプログラムに対してテスト可能な最小のプログラム単位にテストを実施し、仕様書通りにプログラミングされているかを確認し、不具合がなくなるまで修正、テストを繰り返します。

「結合テスト」(Integration Testing)

単体テストが完了した、複数の最小プログラムを組み合わせて行うテストです。
不具合がなくなるまで修正、テストを繰り返します。

「システムテスト」(System Testing)

製造したすべてのプログラムを対象に行うテストです。
一部で不具合が発生した場合でも、その修正プログラムが他のプログラムへ影響しないかも含めて回帰テスト(リグレッションテスト)を実施する必要があります。

「受入れテスト」(Acceptance Test)

エンドユーザの要求通りにソフトウェアが製造されているかを、エンドユーザの実業務で問題なく使用できるかをテストします。

「V字モデル」の活用方法

最後に、「V字モデル」をどのようにソフトウェア開発において活用するのかについて記載します。

「V字モデル」を有効に活用するには、開発の各工程である要件定義や各種設計において、テスト工程ではどのようなテストケースを作成し、システムの動作を確認するかをイメージしながら要件定義や各種設計書を作成していきます。それにより、設計書においてどこまで詳細化するか、モジュール間の整合性がとれているか、抜け漏れがないかなどを設計段階でチェックして品質を向上させることが可能となります。

「要件定義 ⇔ ユーザ受入れテスト(業務運用テスト)」

エンドユーザの実際の業務でどのような機能をどのようなタイミングでどのように操作するかをイメージして要件定義書、 ユーザ受入れテストのテストケースを作成します。

「基本設計 ⇔ システムテスト」

想定される業務でのシステム利用開始から終了までの業務シナリオをすべてのパターンに対して、システムが正しく動作するように、業務ロジック、データベースのテーブル定義、テーブル間の関連、画面レイアウト、画面遷移、帳票などを基本設計書として作成し、システムテストとしてシナリオテストのテストケースを作成します。

「機能設計 ⇔ 結合テスト」

作成する機能の機能間のロジックやデータの整合性を確認するべく、機能設計書、結合テストのテストケースを作成します。

「詳細設計 ⇔ 単体テスト」

プログラマーがプログラミング可能なレベルまで、インプットデータに対して機能がどのような処理をしてアウトプットを返すかを具体的に詳細設計書へ記載し、単体テストのテストケースを作成します。

「製造(プログラミング)」

詳細設計書に忠実にプログラミングを実施します。
設計書に矛盾や考慮漏れがある場合は、設計者に対して質問し、疑問点を解消することで品質を高めていくことができます。

まとめ

ここまで、ソフトウェア開発の主な開発手法および、「V字モデル」について説明してきました。
最も一般的なウォーターフォール型開発で活用される「V字モデル」は、ソフトウェア開発の基本としてどの開発手法においても必要な知識です。

実際のソフトウェア開発でこの知識を活用し、また様々な業務のソフトウェア開発を経験することで、高品質なソフトウェアを決められた予算、期間で作成し、プロジェクトを成功へと導く一助となることを願っております。

コメント