TRACERY Lab.(トレラボ)

TRACERY開発チームが、要件定義を中心として、システム開発で役立つ考え方や手法を紹介します。

V字モデルの各レイヤー(基本設計、結合テスト編)

シリーズ: システム開発の基礎

TRACERYプロダクトマネージャーの haru です。

この記事ではV字モデルのレイヤーのうち、「基本設計」プロセスと「結合テスト」プロセスについて説明します。

V字モデルの各レイヤーの説明は以下の記事を参照してください。

tracery.jp

V字モデル上の「基本設計」と「結合テスト」

V字モデルでは、右側のプロセスが左側のプロセスの検証を行う役割を果たします。

V字モデル上の「基本設計」プロセスと「結合テスト」プロセス

基本設計は、ソフトウェア全体の構造を明確にし、各コンポーネント(画面・機能・APIなど)の責務や連携方法を設計するプロセスです。ソフトウェア全体としての整合性と拡張性を考慮しながら、後続の詳細設計や実装の指針となる仕様を設計します。

結合テストは、基本設計で定義したコンポーネント間の連携が意図したとおりに機能するかを確認するプロセスです。個々のモジュールを組み合わせ、データの受け渡しや処理の流れが設計仕様どおりに動作するかを検証します。最終的にソフトウェア全体の品質を保証することが目的です。

基本設計がソフトウェア全体の構造と連携の仕組みを定義するプロセスであるのに対し、結合テストは、基本設計で定義されたとおりにソフトウェアが正しく連携し、期待どおりに動作することを検証するプロセスです。これにより、ソフトウェア全体の整合性と信頼性を保証します。

基本設計と結合テストの関係

以下、それぞれのプロセスを説明します。

基本設計プロセス

基本設計は、ソフトウェア全体の構造を定義する設計と、各コンポーネントの具体的な仕様を定義する設計の2つに分類されます。

前者はシステムの骨格を形づくり、後者はユーザーが直接触れる機能やソフトウェアの振る舞いを設計します。

  • ソフトウェア全体の構造を定義する設計
    • ソフトウェアアーキテクチャ設計
      • コンポーネント間の連携方法、モジュールの責務分担、データや制御の流れを整理し、システム全体の構造と原則を定める。
    • クラス設計(ドメインモデル設計)
      • 業務上の概念やルールをクラスとして整理し、クラス間の関係をモデル化する。システムの静的構造を明確にし、オブジェクト指向設計の基盤を築く。
    • データベース設計
      • 永続化すべき情報をテーブルとして定義し、属性やリレーションをデータ構造として具体化する。
  • ソフトウェアを構成するコンポーネントの仕様を定義する設計
    • 画面設計
      • ユーザーが操作する画面の構成や画面間遷移、入力項目や表示内容など、UIの仕様を定義する。
    • API設計
      • コンポーネント間や外部システムとのインターフェースを定義し、入出力データ形式や処理内容、エラーハンドリング方針を設計する。
    • 機能設計
      • 画面やAPIに属さない業務処理(バッチ、スケジュール処理など)の動作仕様を定義する。システム全体の機能整合性を保つ役割を担う。

基本設計プロセス

結合テストプロセス

結合テストプロセスは、ソフトウェア全体としての連携機能とデータの整合性を確認し、品質を保証するためのプロセスです。

結合テストプロセスでは、画面・API・バッチ処理など、単体で動作確認済みのコンポーネントを順に結合し、インターフェース間のデータ授受や制御の流れが設計どおりに動作するかを検証します。

たとえば、会員がマイページで登録情報を更新した際に、その内容が運営側の会員管理画面に正しく反映されるかを確認します。ここでは、画面・API・データベースが連携して一連の処理を成立させていることを確かめるのが目的です。

結合テストを効果的に進めるには、関連性の高いコンポーネントから段階的に結合し、品質を積み上げていくアプローチが重要です。こうした漸進的な進め方により、不具合の発生箇所を特定しやすくなり、修正による副作用も抑制できます。

一方で、すべてのコンポーネントを一度に結合して動作を確認する「ビッグバンテスト*1」は、問題が発生した際に原因を切り分けにくく、修正の影響範囲も広がりやすい傾向があります。そのため、品質向上よりも不具合調査や再検証の負担が増大し、結果的に開発全体の効率と安定性を損ねるケースが少なくありません。

結合テストプロセス

まとめ

V字モデルにおける「基本設計」と「結合テスト」は、設計と検証が対となる関係にあります。

基本設計では、ソフトウェア全体の構造やコンポーネント(画面、API、機能)の仕様を定義します。

これに対して結合テストは、その設計内容が実際の動作として正しく機能するかを確認し、設計の妥当性を検証するプロセスです。

両者を対応づけて理解することで、設計段階での意図とテスト段階での確認が一貫し、ソフトウェア全体の品質を高めることができます。

次回の記事では、V字モデルにおける「詳細設計」プロセスと「単体テスト」の関係を説明します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:「あらゆるモジュール・コンポーネントを一斉に結合してテストする」という実践方式が、「宇宙が一度に爆発的に誕生した」という宇宙論上の「ビッグバン理論(Big Bang)」のイメージに似ていることから付けられたと言われている。