「システム開発における詳細設計とはどのように進めるものなの?」とお悩みの方もいるでしょう。
システム開発における詳細設計は、システムの各機能を実装するための専門的な内容を決定する重要な工程です。詳細設計を作成すると、プログラマーの指示書となり効率的にシステム開発が進められます。しかし、詳細設計の作業プロセスや成果物が依頼者に開示されることはありません。
実際に詳細設計はどのように進められるか、どのような成果物があるか、作成方法など気になる点は多いです。
本記事では、システム開発の詳細設計に関する概要や成果物、作成方法について詳しく解説します。本記事を読むと、システム開発の詳細設計を作成するメリットが理解でき、詳細設計を作成するべきか判断できるようになるでしょう。
\開発実績多数!システム開発のプロ集団/
システム開発における設計とは?
システム開発における設計は、開発プロセスの基盤で、要件を満たすシステム構築に必要な設計図を制作する段階を指します。適切な方法で設計すると、効率的で拡張性のあるシステム開発を実現可能です。
なお、システム開発の設計は「基本設計」と「詳細設計(内部設計)」の2つに分けられます。
ここからは、システム開発における設計について詳しく解説します。
基本設計
基本設計は、情報システムをユーザー目線で確認して、顧客がどのようなシステムを求めているかを具体化する工程です。
要件定義と詳細設計の間の工程で、要件定義で明確にした要件を機能ごとに分けて、それぞれの機能で実現するべきものを決めます。
たとえば、画面システムを設計する場合は以下の点の明確化が必要です。
- 画面上にどのような情報を記載するか
- 表示項目のレイアウトやサイズをどうするか
- 画面に表示するデータはどうするか
基本設計を作成すると、全体的な機能をリスト化できます。また、それぞれの関連性が明確になるため、システム基盤を作る際にも重要です。
詳細設計(内部設計)
詳細設計は、基本設定で明確化したシステム内容を実装する方法や機能などを具体的に定義する工程です。開発者がシステム開発できるように、システムの内容や仕様をまとめます。
詳細設計を作成しなければ、システム開発を行う際に「機能の内容が曖昧になってしまった」「機能の実装が難しい」などシステム開発に支障が出ます。
詳細設計は、クライアントのニーズに応えるために必要な工程であり、システム開発者にとっても重要な役割を持つ工程です。
詳細設計を作るメリット
システム開発において詳細設定は必要で、作成するメリットがいくつかあります。
詳細設計を作るメリットは以下のとおりです。
- 方針が明確になる
- 効率的に開発する
- 品質が向上する
ここからは、詳細設計を作るメリットについて詳しく解説します。
方針が明確になる
詳細設計を作成すると、システムをどのように開発するか方針が明確になります。事前に計画を立てるとトラブルが発生するリスクが低いです。また、事前に必要な機能と予算まで明確にできるため、追加費用を最小限に抑えてプロジェクトを進められます。
システムの構造や仕様、動作を詳細まで設定すると、曖昧な方針が具体的になるため、詳細設定の作成は重要な工程です。
効率的に開発できる
事前に開発に関する具体的な機能や方向性を明確にすると、効率的に開発を行えます。開発者が最初から最後まで開発方法を考える場合、膨大な時間と作業量が必要です。しかし、事前に些細な設定を決めておくと効率的に作業ができるだけでなく、開発後の検証や確認に時間を多く割けます。
効率よくシステム開発をするために、詳細設計の作成は大切です。
品質が向上する
詳細設計を作成すると、すでに明確化した方針と機能に基づいて開発が進められます。それぞれの工程での開発方法を詳細に指示すると、開発者の経験値に囚われずに安定して開発可能です。
このように、詳細設計を明確に作成すると、開発者の経験や能力を問わずに品質を保ちつつ向上できます。
詳細設計の成果物作成における問題点
WordやExcelで詳細設計の成果物を作成する際は、さまざまな問題点があります。
詳細設計の成果物作成における問題点は以下のとおりです。
- 属人化が発生する
- リアルタイムで共有できない
- セキュリティのリスクが高まる
- データ量の問題が発生する
- 設計変更時の負担が大きい
ここからは、それぞれの問題点について解説します。
属人化が発生する
WordやExcelの汎用ツールで詳細設計の成果物作成の際は、属人化が発生します。属人化は、特定人物のみが作業内容や進捗について把握している状況です。
システム開発の詳細設計の工程では、文書の書き方や基準が一律に決まっていません。そのため、自由な書き方が広がると、属人化が発生しやすくなります。
属人化が発生すると、詳細設計書を設計者に確認する必要があったり、設計書の意味を汲み取れなかったりとトラブルにつながります。未然に防ぐためにも、社内で文書作成のルールを定める、またテンプレートやフォーマットを用いて成果物作成を行いましょう。
リアルタイムで共有できない
詳細設計の成果物作成は、リアルタイムで共有できないことが問題点です。大抵の場合、詳細設計書をコピーして手渡しで文書を配布します。しかし、汎用ツールを使用した際、修正が必要になると詳細設計書を印刷し直して、配布しなければいけません。
詳細設計の成果物作成の際は、修正や調整が必要となる場面が多いため、リアルタイムで文書を共有できないと効率が悪くなります。
課題解決のためには、設計書をデータベースに抽出して管理するといいでしょう。修正を重ねた場合でも、設計書をリアルタイムで共有できます。
セキュリティのリスクが高まる
詳細設計の成果物を配布すると、セキュリティのリスクが高まります。開発チームに成果物を配布すると相手に管理を委ねなければいけません。しかし、開発チームの1人が詳細設計をなくしてしまったり、社外に持ち出してしまったりすると、情報漏洩につながります。
情報漏洩を防ぐためには、詳細設計を持ち出さないことやアクセス権を設定するなど社内でルールを定めるといいでしょう。
データ量の問題が発生する
汎用ツールで詳細設計を作成すると、データ量が膨大になり、データ量の問題が発生します。データ量が大きくなると、パソコンがフリーズしたり、ファイルを開くのに時間がかかったり、作業効率が悪くなる原因です。詳細設計の成果物はシステム開発にあたり、照らし合わせながら作業が行われます。そのため、データ量の影響で動作が遅くなると、ストレスが溜まり開発作業が思うように進まなくなります。
データ量の問題を解決するには、設計作業に特化した専用のツールを利用しましょう。専用ツールを利用すると、データ量を抑えられ、スムーズに成果物を作成できます。
設計変更時の負担が大きい
詳細設計の成果物の変更や修正をした場合の負担が大きい点が問題です。また、情報共有に時間がかかると、更新前の情報で作業を行う可能性も考えられます。古い情報で設計が進められると、新しい情報への修正のため、さらに時間がかかり効率が悪くなります。
変更時の負担を軽減するためには、専用ツールを導入してリアルタイムで情報を共有できるようにするといいでしょう。
詳細設計における成果物
詳細設計では、機能の要素を把握するために、動作や構造を具体的に示す文書作成が大切です。
詳細設計における主な成果物は以下のとおりです。
- クラス図
- アクティビティ図
- シーケンス図
- モジュール構造図
- 画面遷移図
- 状態遷移図
- データベース物理設計書
- 入出力設計書
- テスト設計書
- バッチ処理詳細定義
- 外部インターフェース設計図
- IPO(処理機能記述)
ここからは、それぞれの成果物について解説します。
クラス図
クラス図は、システムの構造や仕様を表す図を指します。システムの全体図や他の成果物作成でも使用するため、詳細設計の成果物の中でも重要です。
大規模な開発を行う場合、クラス図を作成しないと詳細や基準がわかりづらく、開発チーム内での連携が難しくなります。
クラス図は、アクティビティ図やシーケンス図の作成にも必要なため、重要な役割を持つ成果物です。
アクティビティ図
アクティビティ図は、システム処理の流れやユーザー操作をまとめた成果物です。システムが始動してから一連の流れや手続きを順番に記載します。作成方法はフローチャートと同様、ユーザー操作やシステム処理を矢印でつなぎます。
シーケンス図
シーケンス図は、アクティビティ図よりもシステム内容をより詳細に表したものです。アクティビティ図は、システム処理やユーザー操作の流れを理解できます。しかし、シーケンス図は、より詳細な処理を理解しやすいです。
シーケンス図を作成すると、システムの動作や操作性を時系列ごとに可視化できて効率がよくなります。シーケンス図は、主にUMLと呼ばれる記法で作成します。
モジュール構造図
モジュール構造図は、各機能の処理をモジュールで表し、どのような関連性があるかを示したものです。モジュールの構造を図形を用いて表すと、詳細に可視化できます。
システムのプログラムをモジュール化する際は、組み合わせも重要なため、事前にモジュール構造図の作成が必要です。
画面遷移図
画面遷移図は、システムの画面の遷移と操作性を図で表したものです。システムで実際に表示された画面のみをまとめています。画面遷移図は業務フローと同じく図形を用いて作成します。システムを開発するうえで複雑な画面遷移を行う場合は、正確な処理と実装ができるように画面遷移図が重要です。
状態遷移図
状態遷移図は、システム状態の変化を表した図です。システムが設計で示したとおりに動作するかをテストする過程で状態遷移図を使用します。
状態遷移図はシステム開発において必須ではありません。しかし、状態遷移図を作成するとシステムの機能の処理が明確になり、システムの品質向上につながります。
システムの品質と精度を高める場合、状態遷移図の作成をしておきましょう。
データベース物理設計書
データベース物理設計書は、システム処理が適切に行えるようにデータベースの物理領域と格納方法を決める設計を指します。データベースを格納する場合、データベースを使用して設計を行います。
データベース物理設計書で作成するものは、主にテーブル定義書やER図(データベース設計で基本となる設計図)などです。
入出力設計書
入出力設計書は、各機能でインプットとして用いられる情報とアウトプットとして出される情報を示した設計書です。画面設計書と連動して定義し、画面のインプットやアウトプットを制御する際に設計します。
入出力設計書で決める内容は、エラー発生時のプログラム停止や原因のアウトプットなどです。
テスト設計書
テスト設計書は、システム開発でどのようなテストを行うのか、どの工程でテストを行うかなどを詳細にした書類です。テストを行う機能や目的、手順などを具体的に記します。
システム開発をする際、テストの工程はシステムの不具合や操作性を確認するために重要な工程です。テスト設計書を作成すると、テストをスムーズに行えます。テスト設計書を作成しなければ、システムに潜むエラーを発見できずに放置してしまう恐れがあります。テスト工程を順序よく進めるためにも、テスト設計書の作成が大切です。
バッチ処理詳細定義
バッチ処理詳細定義は、バッチ処理フローで行われる処理を含む入力・処理・出力の情報がまとめられている書類です。バッチ処理詳細定義は、些細な部分までバッチ処理に関するものが記載されています。
バッチ処理詳細定義の書類は、主に機能の実装とテストの際に参照されます。
外部インターフェース設計図
外部インターフェース設計図は、システムが他のシステムとデータのやり取りする手段を具体化する設計図です。システム全体の正確な動作と連携を確保するためにも大切な工程です。
API仕様やデータ形式、通信プロトコルなどを含む、異なるシステムとやり取りする際に外部インターフェース設計図は重要な役割を果たします。
IPO(処理機能記述)
IPO(処理機能記述)は、システム機能やビジネスロジックの処理内容を入力・処理・出力で記した図を指します。出力データを作成する際に、入力データの処理方法を理解できる重要な図形です。IPO(処理機能記述)は、主にビジネスロジック設計の際に使用されます。
詳細設計の作成方法
詳細設計における成果物は、テキストだけでなく図や記号を用いて作成されることが多いです。
詳細設計を作成する際には、以下のポイントを確認しましょう。
- 要件分析をする
- 設計の建築をする
- 評価と検証を行う
ここからは、それぞれの作成方法について解説します。
要件分析をする
詳細設計の作成をする際は、要件分析を行いましょう。要件分析とは、ユーザーが求める要件の中で矛盾を見つけて解決することを指します。要件分析を行うと、ユーザーのニーズや要求を正確にとらえることができ、システムの設計や開発に反映できます。
要件分析をしないと、システムがユーザーの期待や要求に答えられない可能性が高いです。
詳細設計の作成をする際は、要件分析が重要な工程となります。
設計の構築をする
システム開発の詳細設計の成果物にあたる設計の構築は、システム機能や構造を明確に定義するだけでなく、開発作業を効率的に進めるために重要です。
設計の構築をすると、システムそれぞれの要素やモジュールの役割が明確になります。さらに、チーム全体でするべき作業が具体化されるため、効率よく作業が進みます。
設計に基づいてシステム開発を行うと、システム品質と信頼性の向上につながるでしょう。
評価と検証を行う
詳細設計の成果物作成にあたり、評価と検証を行うことが重要です。
評価と検証を行うと、設計が要件を満たしているか、正確で効率的に操作できるかを確認できます。また、設計の不備や誤りを発見し、早期に修正可能です。
これにより、システムの品質と正確性を確保し、ユーザーに信頼性の高いシステム提供ができます。
システム開発の詳細設計の制作担当
システム開発の詳細設計の作成を担当する職種はいくつかあります。
詳細設計の制作を担当する職種の例は以下のとおりです。
- システムエンジニア(SE)
- プログラマー(PG)
ここからは、詳細設計におけるそれぞれの制作担当について説明します。
システムエンジニア(SE)
システムエンジニア(SE)とは、顧客のニーズに合ったシステムを実現するためにシステム企画と設計をする職種です。
具体的には、システムのモジュール構造やデータフロー、インターフェース設計を行います。さらに、プログラムやデータベースの設計などシステムが効率的かつ信頼性の高いものとなるように、さまざまな側面を考慮して設計します。
プログラマー(PG)
プログラマー(PG)は、コンピューターのプログラムを作成する職種です。システム開発の詳細設計を制作するプログラマーは、設計段階で明確にされたシステム仕様を基に、具体的なプログラミングを作成します。
プログラマーは、設計に従ってモジュールや機能の実装と動作を実現します。また、データベースの設計やデータの処理方法を考慮して、エラーチェックやデータの整合性を確保したシステム開発が可能です。
最終的に、テストがデバッグを通してシステムの正確性と顧客のニーズに満たすかを確認します。
他の仕様書との違い
システム開発において、設計書のほかに仕様書という書類もシステム構築と開発に重要です。
仕様書は、全体の完成形のイメージを描くための書類です。しかし、設計書と仕様書でそれぞれどのような役割を持つかわからない方もいるでしょう。
仕様書としてシステム開発に使われる書類は以下のとおりです。
- 要件定義書
- 基本設計書
- プログラム設計書
ここからは、上記の仕様書の違いについて説明します。
要件定義書
要件定義書は、顧客がどのようなシステムを求めているかをまとめた書類です。要件定義書にまとめた内容を基に、システム開発が進められます。要件定義書の作成により、成果物の完成図をイメージしやすいうえに顧客とのイメージの相違を防げます。
主に実装する機能の詳細を書くだけでなく、システム開発の知識がない方も理解できるよう作成することが重要です。
基本設計書
基本設計書は、要件定義の内容を具体的にシステム化していくために必要な書類です。
ユーザーが求める機能をシステムに反映したものを基本設計、基本設計に必要となる書類を基本設計書と呼びます。
ユーザー要件に基づいた基本的な処理フローの説明や、各機能の詳細な説明、データベースの設計方針などの記載が必要です。
システム開発やプロジェクト全体の設計の方針を示す重要な書類です。
プログラム設計書
プログラム設計書は、システム開発する際にどのようなコーディングを行うかを表した書類です。プログラム設計書は、モジュール動作を決定する書類のため、プログラマーはプログラム設計書を元にプログラミングしていきます。
つまり、プログラム設計書は、プログラマーが実際にコーディング作業する際のガイドとなる重要な文書です。
よくある質問
ここからは、システム開発における詳細設計に関するよくある質問を3つ挙げます。
- システム開発の詳細設計書とは何ですか?
- システム開発の基本設計と詳細設計の違いは何ですか?
- 方針設計と詳細設計の違いは何ですか?
詳細設計を作成する前に、上記の点についてよく理解しましょう。
システム開発の詳細設計書とは何ですか?
システム開発の詳細設計書は、基本設計で定義されたシステムの動作を実装するための詳細が記された書類です。外から見たシステム動作を示す基本設計書に対し、詳細設計書はシステムの内部までの内容が詳細に示されています。
詳細設計書には主に以下の内容が記載されています。
- クラス図
- アクティビティ図
- シーケンス図
- モジュール構造図
- 画面遷移図
- 状態遷移図
- データベース物理設計書
- 入出力設計書
- テスト設計書
- バッチ処理詳細定義
- 外部インターフェース設計図
- IPO(処理機能記述)
詳細設計では、上記のような成果物を作成し、顧客のニーズに応えるシステムを作るための具体的な内容が定められます。
システム開発の基本設計と詳細設計の違いは何ですか?
システム開発における基本設計は外部設計、詳細設計は内部設計と呼ばれています。基本設計では、顧客のニーズに合わせたシステムの全体像や概要をまとめます。一方で、詳細設計は基本設計で定めた内容からプログラムを作るまで詳細にまとめる工程です。
方式設計と詳細設計の違いは何ですか?
システム開発の方式設計とは、基本設計で行う設計であり、要件定義で決定した要件を実現する設計を指します。詳細設計は、方式設計の後に行われる工程で、方式設計で決定された内容からシステム内部の細かい設計が行われます。
方式設定は基本設計の中で行われる詳細設計の前の段階です。
まとめ
本記事では、システム開発における詳細設計の概要や成果物、作成方法とメリットについて紹介しました。
システム開発における詳細設計は、基本設計で決めた内容をプログラムできるように詳細化するものを指します。
詳細設計をすると、プログラムするべき方針が明確になり効率的に作業可能です。
また、開発者の経験値に囚われることなく開発が進められるため、品質向上にもつながります。
システム開発における詳細設計は、顧客のニーズに合わせたシステム開発を実現するために重要な役割を果たします。そのため、本記事を参考にして、システム開発のスキルアップのために詳細設計について理解し、積極的に作成してみてはいかがでしょうか。
\開発実績多数!システム開発のプロ集団/