MENU
Language

HLD / LLD とは?「上位レベル設計」(基本設計)/「下位レベル設計」(詳細設計)

目次

HLD(High-Level Design)とは?

HLD(High-Level Design)は、システムやソフトウェアの開発プロセスにおいて「上位レベル設計」(基本設計)を指す工程です。システム全体の構造、主要なコンポーネント、コンポーネント間の関係、およびシステム全体のアーキテクチャを定義します。

英語圏では「HLD(High-Level Design)」はよく使われる用語であり、特にシステム全体の構造やアーキテクチャを設計する初期フェーズを指すときに利用されます。

HLDの目的

  • システム全体の概要を把握できる設計を作成し、開発チームや関係者間で共通認識を形成する。
  • 実際の実装や「下位レベル設計」(詳細設計)(LLD: Low-Level Design)に進むための基盤を提供する。
  • クライアントや上層部に対し、システムの全体像を説明するための資料を作成する。

HLDの内容

HLDで扱う主な内容は次のとおりです:

  1. システムアーキテクチャ:
    • システム全体の構成図(例:クライアント、サーバー、データベースの関係)。
    • モジュール間のデータフロー。
  2. 主要なコンポーネントとその役割:
    • 各コンポーネントやモジュールの機能と概要。
    • コンポーネント間のインターフェース(APIや通信プロトコルなど)。
  3. 外部仕様:
    • ユーザーや外部システムとどのように連携するか。
    • 外部インターフェースの定義。
  4. 非機能要件:
    • システムのパフォーマンス、スケーラビリティ、可用性、セキュリティなど。
  5. 使用技術の概要:
    • 使用するフレームワーク、プログラミング言語、ツールなど。

HLDを日本語に置き換えた場合

HLDは、日本のシステム開発用語において次のように表現されます:

  1. 基本設計:
    • 日本のIT業界で最も一般的な用語。
    • システム全体の構造や外部仕様を定義する工程で、HLDの内容に相当。
    • 上位レベル設計:
      • 直訳に近い表現で、HLDの内容をそのまま説明する際に使われます。
      • IPA(情報処理推進機構)のドキュメント内では、上位レベル設計(HLD)と記載されています
  2. 概要設計:
    • 実務でHLDを簡潔に説明する場合に使用されることがあります。
  3. アーキテクチャ設計:
    • 技術面に重点を置いた設計フェーズを指し、HLDの一部をカバーします。

HLDの具体的な位置づけ

HLDは、システム開発工程の「設計フェーズ」の初期段階で実施されます。以下のプロセスにおける役割を持ちます:

  1. 要件定義:
    • ユーザーのニーズや業務要件を整理。
  2. 高レベル設計(HLD:High-Level Design:
    • システム全体の構造や主要なコンポーネントを定義。
  3. 低レベル設計(LLD:Low-Level Design):
    • 各モジュールや機能の詳細な設計(クラス、関数、データ構造など)。
  4. 実装:
    • 実際のコード開発。

まとめ:HLD(High-Level Design)

HLD(High-Level Design)は、日本語では「基本設計」「上位レベル設計」として広く認識されており、システム全体の構造や主要なコンポーネントを定義する工程を指します。この工程は、開発プロセスの初期段階でシステムの「全体像」を整理し、次の「詳細設計」に進むための基盤を提供します。

LLD(Low-Level Design)とは?

LLD(Low-Level Design) は、ソフトウェアやシステムの設計において「下位レベル設計」(詳細設計)を定義する段階を指します。HLD(High-Level Design)で定義されたシステム全体の構造や主要コンポーネントの概要を基に、各モジュールや機能の具体的な実装方法を設計します。

LLDの特徴

  1. 詳細なモジュール設計:
    • 各モジュールの内部構造を定義。
    • クラス、関数、データ構造、アルゴリズムの仕様を詳細に記述。
  2. 実装視点の設計:
    • 実際のコーディングを開始するために必要なレベルの詳細を提供。
  3. 技術的な視点の強調:
    • 使用するプログラミング言語やフレームワークに合わせた設計。
  4. HLDとの関係:
    • HLDが全体像を示すのに対し、LLDはその「各部分の詳細」を掘り下げる設計フェーズ。

LLDに含まれる主な内容

LLDは具体的な実装のための計画を提供するため、以下の項目を含みます:

  1. クラス設計:
    • クラスの属性(プロパティ)、メソッド(関数)、アクセス制御(public/privateなど)。
    • クラス図や継承関係図。
  2. データ構造:
    • 変数やデータの保存形式。
    • 配列、リスト、ツリー、データベーススキーマなど。
  3. アルゴリズムの詳細:
    • 処理フローや計算ロジック。
    • フローチャートや擬似コードで記述。
  4. インターフェースの実装方法:
    • モジュール間やクラス間の通信。
    • APIやプロトコルの設計。
  5. エラーハンドリング:
    • エラーが発生した場合の処理。
    • ログ記録、例外処理の設計。
  6. ユニットテスト計画:
    • モジュール単位でのテストケース設計。
    • 各機能が正しく動作するかを確認。

HLDとLLDの違い

項目HLD(上位レベル設計)LLD(下位レベル設計)
目的システム全体の構造と主要コンポーネントを定義。各モジュールや機能の詳細な設計を定義。
内容の抽象度抽象的で全体的。具体的で詳細。
対象者プロジェクトマネージャー、設計者、顧客。開発者、テスター。
成果物システム構成図、データフロー図など。クラス図、シーケンス図、アルゴリズム設計など。
実装への近さ実装に間接的。実装に直接的。

LLDの作成手順

  1. HLDの確認:
    • HLDで定義されたシステム全体像を基に作業を開始。
  2. モジュール分解:
    • HLDで定義された各モジュールを、さらに詳細な部分に分解。
  3. クラスや関数の設計:
    • クラスや関数を詳細に設計し、役割やデータフローを明確化。
  4. データ構造の選定:
    • 使用するデータ構造(リスト、辞書、配列など)を決定。
  5. 設計書の作成:
    • 各モジュールや機能について、設計書にクラス図やフローチャートを記載。

LLDを日本語で表現する場合

LLDに対応する日本語のシステム開発用語は次の通りです:

  1. 詳細設計:
    • 日本の開発現場で最も一般的に使われる用語。
    • 各モジュールやクラス、関数の設計を行う工程。
  2. 下位レベル設計:
    • LLDの直訳で使われることがありますが、実務では「詳細設計」として認識される場合が多い。
    • IPA(情報処理推進機構)のドキュメント内では、下位レベル設計(LLD)と記載されています

まとめ:LLD(Low-Level Design)

LLD(Low-Level Design)は、システムやソフトウェア開発における「詳細設計」に該当し、HLDで定義されたシステム全体の概要を基に、モジュールや機能の実装に必要な詳細を定義する工程です。具体的な内容としては、クラスや関数、アルゴリズム、データ構造、インターフェース仕様などを設計します。日本の開発プロセスでは「詳細設計」として認識されることが一般的です。

HLD/LLDに関連する関連情報

  1. IPA(情報処理推進機構):
  2. IEEE Standard 1016:
  3. PMI(プロジェクトマネジメント知識体系ガイド):
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次