シリーズ: システム開発の基礎
- システム開発におけるシステムとは何か
- V字モデルを使って開発プロセスを組み立てよう〜システム開発で迷子にならないために
- V字モデルの基本構造をWhy,What,How,Make,Testの視点で理解する
- V字モデルの各レイヤー(企画、運用・評価編)
- V字モデルの各レイヤー(要件定義、運用テスト・システムテスト編)
- V字モデルの各レイヤー(基本設計、結合テスト編)
- V字モデルの各レイヤー(詳細設計、単体テスト編)(本記事)
- V字モデルの各レイヤー(プログラミング、コードレビュー編)
TRACERYプロダクトマネージャーの haru です。
この記事ではV字モデルのレイヤーのうち、「詳細設計」プロセスと「単体テスト」プロセスについて説明します。
V字モデルの各レイヤーの説明は以下の記事を参照してください。
V字モデル上の「詳細設計」と「単体テスト」
V字モデルでは、右側のプロセスが左側のプロセスの検証を行う役割を果たします。
詳細設計では、ソフトウェアを構成するコンポーネント、画面、API、機能などの詳細な構造、そしてそれらを構成する関数やメソッドなどのモジュールを実装可能なレベルまで具体化します。
単体テストでは設計どおりに各モジュールや機能が正しく動作するかを検証します。

以下、それぞれのプロセスを説明します。
詳細設計プロセス
詳細設計は、基本設計で定義したソフトウェアの各コンポーネント(画面、API、機能)やクラス、データベース構造を、実装可能なレベルまで具体化するプロセスです。
モジュールやクラス、処理フロー、データ構造などをさらに明確にし、実装担当者が迷わずに実装できる状態にすることを目指します。

ただし、すべてをドキュメントで定義することが必ずしも効率的とは限りません。
開発チームのスキルや設計対象の機能によっては、コードを書きながら設計を具体化するほうが生産性や理解度が高い場合もあります。
一方で、複雑な処理や複数モジュールが連携する部分では、クラス図やシーケンス図などを併用して設計意図を共有することが有効です。
詳細設計は「必要な部分を明確に伝える」ことを重視し、状況に応じて設計と実装の最適なバランスを取ることが「すべて書く」事よりも重要です。
単体テストプロセス
単体テストは、ソフトウェアを構成する画面、API、機能、そしてそれらを構成する関数やメソッドなどのモジュールを対象に、それぞれが単独で正しく動作するかを検証するプロセスです。
画面では入力チェックやボタン操作などの個別動作、APIでは単一エンドポイントの入出力やエラー処理、モジュールでは内部ロジックや計算結果の正確性を確認します。
こうしたコンポーネント間、たとえば画面とAPIの連携のように複数要素が関わる動作は、結合テストの範囲として区別します。

単体テストには、プログラムコードによる自動テスト(Unit Test)と、人による確認テスト(手動テスト)の両方があります。
自動テストでは、関数・メソッド・クラス単位で入力値と期待結果を定義し、仕様どおりに動作することをテスト用のプログラムコードで検証します。
一方、人による確認テストでは、画面の表示内容やメッセージ、操作感など、自動化が難しい要素を実際に操作して確認します。
単体テストの段階で品質を確実に積み上げることは、後続の結合テストやシステムテストを安定して進めるための基盤となります。
この段階で不具合を早期に検出し、モジュール単位で信頼性を確保しておくことで、上位工程では動作確認や統合検証に集中でき、結果としてソフトウェア全体の品質を高い水準で維持することが可能になります。
まとめ
本記事では、V字モデルにおいて対応する工程である詳細設計と単体テストの内容と、その関係について解説しました。
詳細設計では、画面・API・機能といったコンポーネントや、それらを構成するモジュールの構造や処理の流れを、実装できるレベルまで具体化します。
単体テストは、詳細設計で定義された内容をもとに、各コンポーネントやモジュールが設計どおりに正しく動作するかを検証します。
単体テストの段階で不具合を早期に検出し、モジュール単位で信頼性を確保することで、後続の結合テストやシステムテストを安定して進められるようになり、結果としてソフトウェア全体の品質を高める基盤となります。
このように、詳細設計と単体テストを確実に実施することは、ソフトウェア全体の品質を継続的に高めていくベースになります。
次回の記事では、V字モデルにおける「プログラミング」プロセスと「コードレビュー」の関係を説明します。
