外部設計と内部設計は何が違う?それぞれの概要や成果物を説明
2022/04/11
企業と“直接契約“できる。
新しいかたちのフリーランスITエンジニア専門エージェント
60秒で完了!無料会員登録をする
システム開発の現場では外部設計と内部設計という言葉がよく用いられます。
これらの用語の意味を理解していないとシステム設計の業務に取り組むことはできません。
どちらもシステム設計において重要な役割を果たしており、外部設計と内部設計がきちんとできていれば、質の高いシステムを完成させることができるのです。
そこで、今回は外部設計と内部設計の違いやそれぞれの概要から成果物までを説明していきます。
システム設計の流れ
システム設計では、大きく、要件定義、外部設計、内部設計という流れがあります。
それぞれの流れを詳しく見ていきましょう。
要件定義
要件定義は、クライアントの要望をシステムの仕様に落とし込むプロセスです。
しっかりとヒアリングをして、要件定義書を作成します。
精度の高い要件定義ができれば、仕様変更する際の手間を減らすことが可能です。
このフェーズでは、多くのケースを想定しておくとトラブルを回避できるでしょう。
外部設計
要件定義の内容に基づいて外部設計が行われます。
ユーザー視点でシステムの振る舞い方を決めていく過程であり、ユーザビリティが大切になります。
現場によっては、基本設計と呼ばれることもあります。
内部設計
外部設計の後に行われるのが内部設計です。
成果物を実現させるために定義や処理方法などを決めます。
エンジニア視点で考えて、開発を支援する役割を果たします。
内部設計も現場によっては、詳細設計と呼ばれることがあります。
外部設計と内部設計の違い
外部設計と内部設計の違いについて詳しく解説していきます。
外部設計とは?
外部設計は、要件定義の内容を実現可能な内容に落とし込む作業です。
主に方式設計、機能設計、その他の設計に分類できます。
方式設計ではハードやソフトの構造や実装方針を決めます。
システム基盤から全体の構造、テスト方式、開発標準などを定めるのです。
機能設計では、モジュール単位に分割してデータや画面などを決定します。
システムの機能を決める重要な項目です。
その他にもセキュリティや費用、スケジュールなども決定していきます。
例えば、情報漏洩や不正アクセスの対策などです。
他にも、新システムへの移行方法を定義する移行設計や、システムの非機能要件により定義されている可用性やパフォーマンスを満たすための設計などもあります。
内部設計とは?
内部設計とはシステム内部の仕様を決めることです。
初期値やデフォルト値の定義、エラー処理など細かな部分の設計をします。
機能分割、物理データ設計、入出力の詳細設計という3つのフェーズに分けるのが一般的です。
機能だけではなく保守・メンテナンスも意識した設計をします。
このフェーズではクライアントの了解を得る必要はあまりなく、開発担当者やメンバーに向けた設計が求められるのが特徴です。
外部設計で盛り込んだ仕様を成果物で実現できるように工夫することも重要です。
外部設計はユーザー視点
外部設計とはユーザーが直接目で見て触れる部分を設計するのが大きな特徴です。
クライアントからの要望に基づいて進めることが一般的です。
ユーザーの使いやすさや満足度といったものを重視しなければいけません。
外部設計では、システムの操作方法や画面レイアウトなどインターフェースの設計も行います。
その際には、クライアントからのチェックを受けながら設計を進めるのが基本です。
このため、クライアントからしっかりと要望を聞き出す必要があり、要望をシステムに上手く盛り込むことが求められます。
外部設計でクライアントからの承認を得られなければ、内部設計に進むことはできません。
外部設計を円滑に進めるためには、クライアントとのコミュニケーションやユーザーの視点に立つことが重要です。
内部設計はエンジニア視点
内部設計は、ユーザーが直接目に触れない部分を設計します。
システム内部で行われるデータ処理や内部構造などを決定するフェーズです。
実際に内部構造の設計をするのは開発メンバーのエンジニアであるため、内部設計はエンジニア視点で進めることが重視されます。
また、内部設計では細かな点をしっかりと定義することが求められます。
内部設計の仕様が曖昧だと、実際にプログラミングしたときにバグが生じるリスクが高まるためです。
外部設計と内部設計の成果物とは
外部設計と内部設計では、成果物にどのような違いがあるのかを解説していきます。
外部設計の場合
外部設計の成果物には、外部設計書と機能仕様書があります。
現場によって異なることがありますが、それぞれについて詳しく紹介していきます。
外部設計書(基本設計書)
外部設計書は、業務フローを明確化するものです。
クライアントが行う業務内容を想定し、その流れを図で表現します。
できるだけシンプルで、明確な業務フローにするのが重要です。
また、ハードウェアやソフトウェア、ネットワークなどのシステム構成図をそれぞれ作成することも大切です。
その際には、使用するOSやスイッチ、ルーターなど細かな点まで構成を明確にすることが重要です。
機能一覧表の作成も必要です。開発対象となる機能を一覧化するのです。
一覧にしておくことで、エンジニアが作業を進めやすくなります。
さらに、非機能要件もまとめておきましょう。
非機能要件はシステムのセキュリティや拡張性、運用・保守性などを向上させるために重要な要素です。
例えば、不正アクセスや情報漏洩などの防止策を盛り込みます。
非機能要件は、機能面以外のあらゆる要件を含んでいるため定義は曖昧ですが、システムを実用的なものにするために重要であり、さまざまな問題を未然に防ぐための要件を定めておくのです。
機能仕様書
機能仕様書とは下記のような内容を含んだものです。
- 画面、帳票、バッチ各機能の入出力や処理内容
- ユースケース記述
- 画面遷移図
- シーケンス図
- 提携システムなどの外部資料
これら各仕様を具体的にまとめたものが機能仕様書です。
機能仕様書には、開発するシステムの画面や帳票、バッチの各機能について入出力や処理内容を詳細に記載します。
クライアントのニーズがしっかりと盛り込まれているのか確認するために重要です。
ユースケース記述とは、システムの利用例を図解したものです。
ユーザー視点でシステムの機能やシステム範囲を視覚化します。
IT知識のない人でも一目で理解できるものに仕上げる必要があります。
面遷移図は、画面の相互関係を示すものです。
システムを利用する際にどの画面からどの画面へ移動するのか、どんな画面があるのかを描きます。
シーケンス図はシステムの流れや概要を図にしたものです。
時間軸に沿って段階ごとにシステム処理の流れを記載します。
システムの処理概要を整理することができ、システムの全体像をイメージしやすくなります。
その他、開発システムと提携させるシステムについて外部資料を機能仕様書にまとめておきます。
内部設計
内部設計で作成する成果物には、内部設計書があります。
内部設計書(技術仕様書)
内部設計書は、ユーザーの目に見えない部分のシステムの詳細をまとめた資料です。
エンジニアがプログラミングをする際に内部設計書を参考にするため、重要な資料と言えます。
内部設計書には、現場によって異なることがありますが、例えば下記のようなものが含まれます。
- データベース物理設計書
- データフロー図
- クラス図
- モジュール構造図
- シーケンス図
- アクティビティ図
外部設計と内部設計をスムーズに進めるポイント
ここでは、外部設計と内部設計を効率よく進めるためのポイントを解説します。
実現のしやすさを踏まえる
要件定義で決めた内容を実現可能なものに落とし込んでいくために、外部設計と内部設計を行います。
システム開発では、完成させなければ意味がありません。
このため、設計の際には実現のしやすさを重視することが大切です。
クライアントの要望を全て盛り込むことは、現実的には難しい場合があります。
そこで、システムの実現のしやすさとクライアントの要望との落としどころを考えることが重要です。
クライアントの要望を盛り込みながらも、実現しやすい設計ができれば、開発スピードが向上し、質の高いシステムを完成させることができます
全体との連携を考える
システム開発では、個々のプログラムが全体として連携することが大切です。
システム全体がきちんと稼動して、クライアントの要望を満たすものにしなければいけません。
このため、設計の際には常に全体との連携を意識することが求められます。
性能や機能などを含めて全体としてシステムがきちんと動くように設計しましょう。
それぞれの画面の連携やデータのやり取りなど、システム全体を見通す力が求められます。
工数やスケジュールを把握する
システム開発には納期が定められていることがほとんどであるため、個々のプロセスの工数や全体のスケジュールを把握することが大切です。
できる限り開発工数を抑えて、スケジュール内にシステム開発を終えられるように設計することが求められます。
プロジェクトに関わるスタッフの工数を正確に見積もることも必要であり、現実的なスケジュールの作成が重要です。
設計だけではなくプログラミングからテスト、稼働後のフォロー、全体のプロジェクト管理まで必要な工数を把握することが大切です。
曖昧な部分を少なくする
外部設計や内部設計は、曖昧な部分を残してはいけません。
曖昧な部分があると、クライアントの要望とエンジニアの認識の間に齟齬が生じるためです。
曖昧な状態で開発を進めると、成果物はクライアントの望んだものからかけ離れてしまいます。
認識に齟齬が生じてはいけないため、徹底的に曖昧な表現は排除していき、誰が読んでも一つの意味にしか解釈されない内容にしましょう。
また、頻繁にクライアントとコミュニケーションを取り、クライアントの要望をエンジニアが正確に認識することも大切です。
クライアントへの分かりやすさを意識する
外部設計は、クライアントからチェックを受ける必要があるため、クライアントが理解しやすいということを重視しましょう。
設計書は、図式や数式表現などを上手く活用すると良いでしょう。
文章ばかりの内容では、理解するのに時間がかかり誤解を招くリスクもあります。理解の難しい専門用語は避けて、平易な表現を心がけましょう

外部設計と内部設計で制作物の完成度が変わる
システム開発において外部設計と内部設計は重要なものです。
要件定義で決定した内容を、上手く外部設計・内部設計に落とし込むことが求められます。
外部設計は、ユーザーが直接触れる部分である画面のレイアウトや操作方法などを決めていくプロセスです。
一方、内部設計は、ユーザーには見えないシステム内部に関する詳細を決定していくプロセスであり、エンジニア視点で設計を進めることが重要になります。
外部設計と内部設計の違いを理解して、正確な設計ができれば制作物の完成度を高められるでしょう。
開発に関して、上流工程を対応できる、全行程を一人称で対応できるなどのスキルを身に付ければ、フリーランスとして活動することも可能です。
フリーランスとしてシステム開発に携わりたいという人は、フリーランスITエンジニア専門エージェント「HiPro Tech」をぜひご利用ください。
当サービスでは、案件獲得のサポートを行い、多くのフリーランスが実際に案件を獲得しています。
また、事業会社や自社サービスの案件を中心に、業務系システム開発からWEBサービス開発、インフラ環境の構築など多様な案件を揃えております。
そのため、さまざまな経験を積んでスキルアップすることが可能です。
登録料は無料なため、フリーランスとして活躍したい人はぜひ登録してみてください。
企業と“直接契約“できる。
新しいかたちのフリーランスITエンジニア専門エージェント
60秒で完了!無料会員登録をする
新しいかたちのフリーランスITエンジニア専門エージェント
システム開発の現場では外部設計と内部設計という言葉がよく用いられます。
これらの用語の意味を理解していないとシステム設計の業務に取り組むことはできません。
どちらもシステム設計において重要な役割を果たしており、外部設計と内部設計がきちんとできていれば、質の高いシステムを完成させることができるのです。
そこで、今回は外部設計と内部設計の違いやそれぞれの概要から成果物までを説明していきます。
システム設計の流れ
システム設計では、大きく、要件定義、外部設計、内部設計という流れがあります。
それぞれの流れを詳しく見ていきましょう。
要件定義
要件定義は、クライアントの要望をシステムの仕様に落とし込むプロセスです。
しっかりとヒアリングをして、要件定義書を作成します。
精度の高い要件定義ができれば、仕様変更する際の手間を減らすことが可能です。
このフェーズでは、多くのケースを想定しておくとトラブルを回避できるでしょう。
外部設計
要件定義の内容に基づいて外部設計が行われます。
ユーザー視点でシステムの振る舞い方を決めていく過程であり、ユーザビリティが大切になります。
現場によっては、基本設計と呼ばれることもあります。
内部設計
外部設計の後に行われるのが内部設計です。
成果物を実現させるために定義や処理方法などを決めます。
エンジニア視点で考えて、開発を支援する役割を果たします。
内部設計も現場によっては、詳細設計と呼ばれることがあります。
外部設計と内部設計の違い
外部設計と内部設計の違いについて詳しく解説していきます。
外部設計とは?
外部設計は、要件定義の内容を実現可能な内容に落とし込む作業です。
主に方式設計、機能設計、その他の設計に分類できます。
方式設計ではハードやソフトの構造や実装方針を決めます。
システム基盤から全体の構造、テスト方式、開発標準などを定めるのです。
機能設計では、モジュール単位に分割してデータや画面などを決定します。
システムの機能を決める重要な項目です。
その他にもセキュリティや費用、スケジュールなども決定していきます。
例えば、情報漏洩や不正アクセスの対策などです。
他にも、新システムへの移行方法を定義する移行設計や、システムの非機能要件により定義されている可用性やパフォーマンスを満たすための設計などもあります。
内部設計とは?
内部設計とはシステム内部の仕様を決めることです。
初期値やデフォルト値の定義、エラー処理など細かな部分の設計をします。
機能分割、物理データ設計、入出力の詳細設計という3つのフェーズに分けるのが一般的です。
機能だけではなく保守・メンテナンスも意識した設計をします。
このフェーズではクライアントの了解を得る必要はあまりなく、開発担当者やメンバーに向けた設計が求められるのが特徴です。
外部設計で盛り込んだ仕様を成果物で実現できるように工夫することも重要です。
外部設計はユーザー視点
外部設計とはユーザーが直接目で見て触れる部分を設計するのが大きな特徴です。
クライアントからの要望に基づいて進めることが一般的です。
ユーザーの使いやすさや満足度といったものを重視しなければいけません。
外部設計では、システムの操作方法や画面レイアウトなどインターフェースの設計も行います。
その際には、クライアントからのチェックを受けながら設計を進めるのが基本です。
このため、クライアントからしっかりと要望を聞き出す必要があり、要望をシステムに上手く盛り込むことが求められます。
外部設計でクライアントからの承認を得られなければ、内部設計に進むことはできません。
外部設計を円滑に進めるためには、クライアントとのコミュニケーションやユーザーの視点に立つことが重要です。
内部設計はエンジニア視点
内部設計は、ユーザーが直接目に触れない部分を設計します。
システム内部で行われるデータ処理や内部構造などを決定するフェーズです。
実際に内部構造の設計をするのは開発メンバーのエンジニアであるため、内部設計はエンジニア視点で進めることが重視されます。
また、内部設計では細かな点をしっかりと定義することが求められます。
内部設計の仕様が曖昧だと、実際にプログラミングしたときにバグが生じるリスクが高まるためです。
外部設計と内部設計の成果物とは
外部設計と内部設計では、成果物にどのような違いがあるのかを解説していきます。
外部設計の場合
外部設計の成果物には、外部設計書と機能仕様書があります。
現場によって異なることがありますが、それぞれについて詳しく紹介していきます。
外部設計書(基本設計書)
外部設計書は、業務フローを明確化するものです。
クライアントが行う業務内容を想定し、その流れを図で表現します。
できるだけシンプルで、明確な業務フローにするのが重要です。
また、ハードウェアやソフトウェア、ネットワークなどのシステム構成図をそれぞれ作成することも大切です。
その際には、使用するOSやスイッチ、ルーターなど細かな点まで構成を明確にすることが重要です。
機能一覧表の作成も必要です。開発対象となる機能を一覧化するのです。
一覧にしておくことで、エンジニアが作業を進めやすくなります。
さらに、非機能要件もまとめておきましょう。
非機能要件はシステムのセキュリティや拡張性、運用・保守性などを向上させるために重要な要素です。
例えば、不正アクセスや情報漏洩などの防止策を盛り込みます。
非機能要件は、機能面以外のあらゆる要件を含んでいるため定義は曖昧ですが、システムを実用的なものにするために重要であり、さまざまな問題を未然に防ぐための要件を定めておくのです。
機能仕様書
機能仕様書とは下記のような内容を含んだものです。
- 画面、帳票、バッチ各機能の入出力や処理内容
- ユースケース記述
- 画面遷移図
- シーケンス図
- 提携システムなどの外部資料
これら各仕様を具体的にまとめたものが機能仕様書です。
機能仕様書には、開発するシステムの画面や帳票、バッチの各機能について入出力や処理内容を詳細に記載します。
クライアントのニーズがしっかりと盛り込まれているのか確認するために重要です。
ユースケース記述とは、システムの利用例を図解したものです。
ユーザー視点でシステムの機能やシステム範囲を視覚化します。
IT知識のない人でも一目で理解できるものに仕上げる必要があります。
面遷移図は、画面の相互関係を示すものです。
システムを利用する際にどの画面からどの画面へ移動するのか、どんな画面があるのかを描きます。
シーケンス図はシステムの流れや概要を図にしたものです。
時間軸に沿って段階ごとにシステム処理の流れを記載します。
システムの処理概要を整理することができ、システムの全体像をイメージしやすくなります。
その他、開発システムと提携させるシステムについて外部資料を機能仕様書にまとめておきます。
内部設計
内部設計で作成する成果物には、内部設計書があります。
内部設計書(技術仕様書)
内部設計書は、ユーザーの目に見えない部分のシステムの詳細をまとめた資料です。
エンジニアがプログラミングをする際に内部設計書を参考にするため、重要な資料と言えます。
内部設計書には、現場によって異なることがありますが、例えば下記のようなものが含まれます。
- データベース物理設計書
- データフロー図
- クラス図
- モジュール構造図
- シーケンス図
- アクティビティ図
外部設計と内部設計をスムーズに進めるポイント
ここでは、外部設計と内部設計を効率よく進めるためのポイントを解説します。
実現のしやすさを踏まえる
要件定義で決めた内容を実現可能なものに落とし込んでいくために、外部設計と内部設計を行います。
システム開発では、完成させなければ意味がありません。
このため、設計の際には実現のしやすさを重視することが大切です。
クライアントの要望を全て盛り込むことは、現実的には難しい場合があります。
そこで、システムの実現のしやすさとクライアントの要望との落としどころを考えることが重要です。
クライアントの要望を盛り込みながらも、実現しやすい設計ができれば、開発スピードが向上し、質の高いシステムを完成させることができます
全体との連携を考える
システム開発では、個々のプログラムが全体として連携することが大切です。
システム全体がきちんと稼動して、クライアントの要望を満たすものにしなければいけません。
このため、設計の際には常に全体との連携を意識することが求められます。
性能や機能などを含めて全体としてシステムがきちんと動くように設計しましょう。
それぞれの画面の連携やデータのやり取りなど、システム全体を見通す力が求められます。
工数やスケジュールを把握する
システム開発には納期が定められていることがほとんどであるため、個々のプロセスの工数や全体のスケジュールを把握することが大切です。
できる限り開発工数を抑えて、スケジュール内にシステム開発を終えられるように設計することが求められます。
プロジェクトに関わるスタッフの工数を正確に見積もることも必要であり、現実的なスケジュールの作成が重要です。
設計だけではなくプログラミングからテスト、稼働後のフォロー、全体のプロジェクト管理まで必要な工数を把握することが大切です。
曖昧な部分を少なくする
外部設計や内部設計は、曖昧な部分を残してはいけません。
曖昧な部分があると、クライアントの要望とエンジニアの認識の間に齟齬が生じるためです。
曖昧な状態で開発を進めると、成果物はクライアントの望んだものからかけ離れてしまいます。
認識に齟齬が生じてはいけないため、徹底的に曖昧な表現は排除していき、誰が読んでも一つの意味にしか解釈されない内容にしましょう。
また、頻繁にクライアントとコミュニケーションを取り、クライアントの要望をエンジニアが正確に認識することも大切です。
クライアントへの分かりやすさを意識する
外部設計は、クライアントからチェックを受ける必要があるため、クライアントが理解しやすいということを重視しましょう。
設計書は、図式や数式表現などを上手く活用すると良いでしょう。
文章ばかりの内容では、理解するのに時間がかかり誤解を招くリスクもあります。理解の難しい専門用語は避けて、平易な表現を心がけましょう
外部設計と内部設計で制作物の完成度が変わる
システム開発において外部設計と内部設計は重要なものです。
要件定義で決定した内容を、上手く外部設計・内部設計に落とし込むことが求められます。
外部設計は、ユーザーが直接触れる部分である画面のレイアウトや操作方法などを決めていくプロセスです。
一方、内部設計は、ユーザーには見えないシステム内部に関する詳細を決定していくプロセスであり、エンジニア視点で設計を進めることが重要になります。
外部設計と内部設計の違いを理解して、正確な設計ができれば制作物の完成度を高められるでしょう。
開発に関して、上流工程を対応できる、全行程を一人称で対応できるなどのスキルを身に付ければ、フリーランスとして活動することも可能です。
フリーランスとしてシステム開発に携わりたいという人は、フリーランスITエンジニア専門エージェント「HiPro Tech」をぜひご利用ください。
当サービスでは、案件獲得のサポートを行い、多くのフリーランスが実際に案件を獲得しています。
また、事業会社や自社サービスの案件を中心に、業務系システム開発からWEBサービス開発、インフラ環境の構築など多様な案件を揃えております。
そのため、さまざまな経験を積んでスキルアップすることが可能です。
登録料は無料なため、フリーランスとして活躍したい人はぜひ登録してみてください。
新しいかたちのフリーランスITエンジニア専門エージェント