- 更新日 2024.03.15
- カテゴリー システム開発
詳細設計とは?システム開発における位置付け・役割・成果物を解説【2024年最新版】
システム開発の詳細設計とは、基本設計で明確化した「システムに必要な機能」を実装するため、プログラマーへの指示書となる設計図を制作する開発工程のこと。そのため、詳細設計の作業プロセスや成果物であるドキュメントが、発注者に開示されることはほとんどありません。
しかし、詳細設計がどのように進められているのか?どのようなドキュメントが制作されているのか?基本設計までのシステム開発プロジェクトに深く携わった企業担当者の方であれば、気になるのではないでしょうか。
そこで本記事では、詳細設計がシステム開発でどのように位置付けられているのか、どのような役割を果たしているのかをわかりやすく解説!イメージしやすい詳細設計のサンプルドキュメントも紹介していきます。
※開発パートナーとしてタッグの組める優秀なシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
詳細設計とは
詳細設計とは、システムの内部構造について専門的な設計を行うことです。システム内部を設計するため「内部設計」とも呼ばれます。
詳細設計はシステム構築の前段階に行われる工程で、プログラマーやエンジニアに基本設計で定義した内容を伝えることが目的です。
詳細設計を作成することで、プログラマーやエンジニアは自身のやるべきことがはっきりし、効率的に業務を行えるようになります。
基本設計については、以下の記事をご一読ください。
詳細設計と要件定義・基本設計との違い
システム開発には、詳細設計の他に「要件定義」と「基本設計」という工程もあります。どちらも詳細設計の前工程ですが、どういったことを行うのか気になる方もいるでしょう。
ここからは要件定義と基本設計がどのような工程なのか、詳細設計との違いを交えて解説します。
要件定義との違い
要件定義とは、どのようなシステムを開発するのか具体化する工程のことです。具体的には、以下のような項目を具体化していきます。
- 予算
- 開発目的
- 実装手順
- ターゲット
- 必要な機能
- 用いられる技術
- 必要な人員(工数)
- スケジュール(納期)
要件定義をしっかり固めずに開発を進めると、想定以上に時間がかかったり役に立たないシステムになったりしかねません。
詳細設計は要件定義をベースに行われます。そのため、要件定義が不十分ですと、詳細設計で遅延が発生したり、作業そのものが無駄になったりする恐れがあるのです。
要件定義については、以下の記事で詳しく解説しています。
基本設計との違い
基本設計は、要件定義でまとめた自社ニーズの実現に向けて、システムに実装する機能を明確化していく工程です。
システムの機能や構成といった仕様を大枠で策定し、発注者にも分かりやすいようアウトラインを決めていきます。
基本設計も詳細設計も要件定義の内容をもとに行われますが、以下のように設計する内容が異なります。
- 基本設計:システム全体の概要や操作方法など、ユーザーから見える部分を設計
- 詳細設計:システムの内部構造やデータの流れなど、ユーザーに見えない部分を設計
つまり基本設計はシステムの外部、詳細設計はシステムの内部を設計しているのが相違点です。
システム開発における詳細設計の位置付け
システム開発における詳細設計は、前工程である基本設計の内容をもとに行われます。システム開発の全体の流れは、以下画像の通りです。
一般的なウォーターフォール型システム開発工程の流れの中で、詳細設計はプログラム実装(プログラミング)の直前に位置付けられています。
※ウォーターフォール型システム開発についてより詳しく知りたい方は、以下の記事も参考にしてください。
詳細設計では基本設計書をもとに、機能をどのように実装していけばいいのか設計図を制作していきます。基本設計書の内容は、以下の通りです。
成果物(基本設計書)の内容 |
概要 |
システム設計 |
ハードウェア・ソフトウェア・ネットワーク構成図、 システム機能構成図など |
画面設計 |
画面一覧、画面レイアウト・遷移図、入出力項目、 画面アクション定義図など |
帳票設計 |
帳票一覧、帳票レイアウト、入出力項目、帳票編集定義図など |
バッチ(一括処理)設計 |
バッチ処理一覧、処理フロー図、バッチ処理定義書など |
データベース設計 |
テーブル・ファイル一覧、ER図(実体関連図)、 テーブル・ファイル定義、CRUD図(情報分析図)など |
ファイル設計 |
ファイル一覧、ファイルレイアウト図など |
外部インターフェース設計 |
外部インターフェース一覧、 外部インターフェースレイアウト図など |
システム開発における詳細設計の役割
ここから詳細設計に関して詳しく説明していきます。
冒頭で述べたように、詳細設計はプログラマーへの指示書となる設計図を制作することなので、発注される側は、完全に理解しなくて大丈夫です。どんなことが行われるのか、全体像を把握するのにお役立てください。
・具体的に詳細設計フェーズではどのような作業が進められているのか?
・詳細設計がシステム開発で果たす役割とはなにか?
少し難しくなりますが、上記について理解するためには、Webシステム・業務システムで採用される「3階層アーキテクチャ」を把握することが肝心。以下から、順を追って解説していきましょう。
3階層アーキテクチャとは
3階層アーキテクチャとは、システムのパフォーマンスや開発・保守の効率性を高めるため、以下の3階層に分離した構造を持つソフトウェアのこと。
・プレゼンテーション層
・アプリケーション(ビジネスロジック)層
・データ層
利用者であるユーザーが目にするインターフェースを受け持つのが「プレゼンテーション層」、各種データを保存・管理するデータベースが「データ層」、リクエストに応じたデータ処理を受け持つのが「アプリケーション層」であり「ビジネスロジック層」とも呼ばれます。
画像引用:基本的な業務Webアプリの開発手順
図をご覧いただければおわかりのように、外部から見える部分の機能を定義付ける基本設計では、「プレゼンテーション層」「データ層」を具体化する作業が中心です。
機能・ビジネスロジックの整理
一方、ユーザーのアクションを反映させる処理フローも基本設計で定義されますが、すべてのフローをロジックとして詳細設計していたのでは効率がよくありません。共通化できるインターフェースなどのロジック、処理フローとしてのビジネスロジックはひとつにまとめて設計・実装することが理想。
これを実現するステップであるのが詳細設計です。つまり、システム開発における詳細設計の役割は、実際のプログラミングに移る前に機能・ビジネスロジックを整理し、開発時の生産性・保守時の効率性を高めることです。
画像引用:基本的な業務Webアプリの開発手順
ビジネスロジックとは、ビジネス・業務に関する固有のルール・ワークフローなどがシステム・ソフトウェアに反映されたもののこと。ビジネス・業務で取り扱うデータ、およびデータの関連性、処理の手順などをプログラムとして実装したものが、ビジネスロジックだと考えればわかりやすいでしょう。
実装する機能の割り振り
整理した機能・ビジネスロジックをどこにどのように実装していくのか、割り振っていくことも詳細設計フェーズの役割です。
たとえば、一般的なWebアプリケーションの場合、ビジネスロジックがある程度共通化できます。そのため、既存のフレームワークやアプリケーションサーバなどをアプリケーション層の基盤として活用し、固有の機能・ビジネスロジックを中心に追加設計・実装していく場合があります。
Webブラウザを端末として利用するなら、プレゼンテーション層はサーバ側に実装することになります。しかし、クライアントサーバシステムであれば、プレゼンテーション層の大半をクライアントソフトに実装。サーバ側にAPI(外部サービス機能を共有させられるインターフェース)連携を実装することになります。
詳細設計の成果物・ドキュメント
それでは、開発時の生産性・保守時の効率性を高める役割を担う詳細設計では、成果物としてどのようなドキュメントが制作されるのでしょうか?
システム開発会社の体制、方針、どのようなシステムを開発するのかによって、アウトプットされる成果物は異なります。主な成果物となるドキュメントには、以下のようなものが挙げられます。
成果物(詳細設計書)の内容 |
概要 |
クラス図 |
システムを構成するクラスの関係を示す静的な資料 |
モジュール構成図 |
各機能の処理に必要な処理をモジュールごとに示す 静的な資料 |
アクティビティ図 |
ユーザー操作・システム処理の流れがわかる動的な資料 |
シーケンス図 |
クラス・オブジェクト(データ構造)間の やり取りを時間軸に沿って表した動的な資料 |
IPO(処理機能記述) |
入力・処理・出力の流れを表した動的資料。 バッチ処理など |
開発方針・ルール |
ライブラリ・プログラミング言語の指定 記述ルール書など |
単体・結合テスト設計 |
単体・結合テストの計画書・仕様書・設計書など |
ただし、開発の生産性向上の観点からドキュメントがアウトプットされない場合も。
たとえば、データベースの論理設計書となるER図(実体関連図)、CRUD図(情報分析図)、テーブル・ファイル定義などは基本設計の段階で作成されます。しかし、詳細設計で物理設計書を作成せず、すぐにプログラミングに取りかかることも。これは論理設計がそのまま物理設計に転換できるデータベースならではの特徴です。
また、シンプルなWebアプリケーションやWebメディアなどの開発では、詳細設計よりも素早い公開が重視されることも。そのため、設計書なしで実際のプログラミング・テストに取りかかる場合もあります。
詳細設計における成果物の具体例
ここからは、詳細設計のサンプルドキュメントを紹介していきます。詳細設計のサンプルドキュメントは、以下表の通り「静的資料」と「動的資料」の2つに分かれています。
サンプルドキュメント | 概要 | |
静的資料 |
・クラス図 ・モジュール構造図 |
・システム内部の構造を静的に表現する資料 ・システムの機能・ビジネスロジックを 整理する際に活用 |
動的資料 |
・アクティビティ図 ・シーケンス図 ・IPO(処理機能記述) |
・システム内部の処理の流れを動的に表現する資料 ・整理されたシステム機能・ビジネスロジックを どのように配置・割り振っていくのか決める際に活用 |
クラス図
クラス図とは、システムを構成するクラスの関係性を表現したドキュメントのこと。基本設計書をもとに、開発するシステムに必要なクラスを洗い出し、それぞれの関係性を整理してまとめたものです。
クラスとは、オブジェクト指向(データや物理対象そのものに重点を置く考え方)プログラミングにおける「オブジェクトの設計図」のこと。オブジェクトから生成された実体をインスタンスといい、たとえば「認証コントロールクラス」が持つデータから生成されたインスタンスによって「ログオン」「ログオフ」を実行します。
モジュール構造図
モジュールとは、システムを構成する機能をプログラムのまとまり単位で分解したもの。各モジュールがどのような機能を持ち、システムをどのように構成しているのかを表現した設計図がモジュール構造図です。
システムをモジュールに分割することで、複数のメンバーにプログラミングを割り振って開発生産性を向上させる、メンテナンス性・拡張性を確保するなどのメリットが得られます。機能の関連を把握し、共通化可能なモジュールを見つけていくためにもモジュール構造図は有効です。
アクティビティ図
アクティビティ図とは、システムの処理・実行の流れと条件による分岐を図式化したもののこと。具体的には、どのようなユーザー行動(アクティビティ)が発生するのかという観点にもとづき、ある作業・機能の開始から終了までの流れを実行される順番通りに記述したものです。
どのようなユーザー行動(アクティビティ)が発生するのか、それを処理する機能をどこに実装すべきかを視覚的に判断しやすいため、プレゼンテーション層の機能を割り振る場合などに活用されます。
シーケンス図
シーケンス図とは、プログラムの処理の流れ・概要を、時間軸の流れに沿って表現した図式のこと。文字通り、プログラムのシーケンス(連続・順序)を把握するためのドキュメントです。
シーケンス図では、ユーザーのアクションに対する「クラス」「オブジェクト」間の関係・やり取りを表現するため、業務フロー図・画面設計書・クラス図などをもとに作成されます。
IPO(処理機能記述)
IPO(処理機能記述)とは、システムの機能・ビジネスロジックの処理内容を「入力(Input)」「処理(Process)」「出力(Output)」の3形式で表現した図式のこと。
出力データを作成するために、入力データをどのように処理するかを把握するための図式です。バッチ処理(複数の処理をある程度まとめて行う処理方式)などのビジネスロジック設計で活用される場合が多いようです。
詳細設計をおこなう際の注意点
詳細設計を行う際の注意点とその対策を、以下の表にまとめました。
注意点 | 理由・対策 |
|
・ドキュメント作成の明確な基準がなく、設計者の裁量に 委ねられるため属人化しやすい ・設計専用ツールを使い、属人化を防ぐのがおすすめ |
セキュリティリスク |
・詳細設計書の誤送信や社外持ち出しによって 情報漏洩のリスクがある ・情報セキュリティの社内教育を行うか、専用ツールを活用することで 情報漏洩を防げる |
リアルタイムで共有できない |
・詳細設計書は手作業でメンバーに配布しており 修正・調整があった際は再配布するしかない ・設計書をデータベースで一元管理し、常に共有できるようにする |
WordやExcelといった汎用ツールを使っている場合、上記のような課題が発生しやすくなります。
詳細設計業務に不安がある場合は、ぜひ一度システム幹事にご相談ください。さまざまな問題・課題の発生も考慮した提案を実施いたします。
システム開発における詳細設計まとめ
詳細設計がどのように進められているのか?どのようなドキュメントが制作されているのか?気になる方に向け、本記事では、詳細設計フェーズがシステム開発でどのように位置付けられているのか、どのような役割を果たしているのかをわかりやすく解説するとともに、イメージしやすい詳細設計のサンプルドキュメントも紹介してきました。
詳細設計の作業、成果物ドキュメントのおおまかなイメージがつかめたのではないでしょうか?発注者がタッチすることのほぼない、詳細設計・プログラミング工程を滞りなく進めるためには、システム開発会社の実力がカギ。信頼のおける優良なシステム開発会社の選定が重要になります。
※もし開発パートナーとしてタッグの組める、優秀なシステム開発会社を探している方はシステム幹事にご相談ください。予算や目的から最適な開発会社を選定させていただきます。相談料などは一切かかりません。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
必ず開発会社に発注する必要はありません。システム開発の相場情報から最適な会社選びまで無料でサポートします。お気軽にご相談ください。
Q. システム開発の詳細設計とは何ですか?
システム開発の詳細設計とは、システム・ソフトウェアに必要な機能の内部仕様を、詳細に定義する開発工程のことです。ウォーターフォール型システム開発では、基本設計のあと、もしくはプログラム実装の直前に位置付けられています。
Q. システム開発の詳細設計とは?
システム開発の詳細設計とは「基本設計で明確化したシステムに必要な機能を実装するため、プログラマーへの指示書となる設計図を制作する開発工程のこと」です。詳細は記事内で紹介していますので、ぜひご覧ください。
この記事を書いた人
梓澤 昌敏
専門分野: 音楽・映像制作、オウンドメディア、ビジネス
音楽・映像制作の現場を経て、スタジオ構築側の業界へ。マネージャー・コンサルタントとして制作現場の構築に携わる一方、自社オウンドメディアの立ち上げを含むマーケティングも担当してきました。現在アメリカ在住。作曲を含む音楽制作も提供しています。
このライターの記事一覧