【ITパスポート】内部設計とは?外部設計との決定的な違いをわかりやすく解説

システム開発の工程を学ぶとき、外部設計とセットで必ず登場するのが「内部設計」です。「外部と内部って何が違うの?」「内部設計では具体的に何をしているの?」と疑問に思う方も多いはずです。

この2つの違いは、家づくりにおける「間取り図(外部)」と「配線・配管図(内部)」の決定的な違いに例えられます。

この記事では、内部設計の役割と具体的な作業内容、そして外部設計との違いをわかりやすく解説します。ITパスポート試験でよく出るポイントを押さえて、システム開発の流れをマスターしましょう!

目次

内部設計とは?一言でいうとエンジニア向けの設計

内部設計(ないぶせっけい)とは、外部設計で決まったシステムの仕様(見た目や操作性)を、どうやってプログラムで実現するかを具体的に決める工程のことです。詳細設計(しょうさいせっけい)とも呼ばれます。

これは家づくりに例えると、家の壁の裏側を通る「電気の配線」や「水道の配管」の設計図を作る作業に相当します。

住む人(ユーザー)にとってはコンセントの位置や蛇口の使い勝手(=外部設計)が重要ですが、それらを機能させるためには、壁の裏で電線やパイプをどう通すか(=内部設計)をプロの職人が考える必要があります。

内部設計はまさに、プログラマー(作る人)が滞りなくプログラムを書けるようにするための専門的で詳細な設計なのです。

内部設計と外部設計はどう違う?

試験対策として、外部設計と内部設計の違いを対比させて覚えるのが一番の近道です。

比較項目外部設計(基本設計)内部設計(詳細設計)
別名基本設計詳細設計
視点ユーザー(使う人)視点エンジニア(作る人)視点
対象システムの外側(ユーザーが見る部分)システムの内側(ユーザーには見えない部分)
決める内容画面・操作フロー・帳票・入出力項目など処理ロジック・データベースの詳細・プログラム分割など
成果物画面設計書・業務フロー図などプログラム設計書・データベース詳細設計書など

ポイントは、「誰に向けて設計しているか」です。外部設計はシステムを発注したユーザーが確認して承認するためのものですが、内部設計は実際にコードを書くプログラマー向けの指示書となります。

内部設計の具体的な作業内容

では、内部設計では具体的にどのようなことを決めているのでしょうか。主な作業を3つ紹介します。

1. 処理ロジック(アルゴリズム)の設計

外部設計で「登録ボタンを押すとデータが保存される」と決めたとします。内部設計では、これをさらに細かく分解し、「入力値のチェックをする→エラーがあれば元の画面に戻す→エラーがなければデータベースに接続する→データを書き込む→完了画面を表示する」というように、プログラムが実行する具体的な手順(ロジック)を設計します。

2. 機能の分割(モジュール設計)

巨大なシステムを1つのプログラムで作ることは不可能です。そこで全体をいくつかの小さな部品(モジュール)に分割します。

「ログイン処理担当の部品」「検索処理担当の部品」「保存処理担当の部品」のように機能ごとに分割し、それぞれの部品がどう連携して動くかを設計します。これにより、複数のプログラマーで分担して開発できるようになります。

3. データベースの物理設計

外部設計の段階でおおまかなデータのまとまり(テーブル)は決まっていますが、内部設計ではさらに詳細化します。「この項目は何文字まで入力できるか(データ型)」「検索を速くするためにどの項目に索引(インデックス)をつけるか」など、データベースを構築するための具体的な設定を決定します。

システム開発工程における内部設計の位置づけ

内部設計は、システム開発の代表的な手法である「ウォーターフォール開発モデル」のプロセスの一つです。

  1. 要件定義:何を実現したいかを決める
  2. 外部設計(基本設計):ユーザー向けの仕様を決める
  3. 内部設計(詳細設計):エンジニア向けの仕様を決める ← ここ!
  4. 実装(プログラミング):内部設計書をもとに実際にプログラムを書く
  5. テスト:作ったプログラムが正しく動くか確認する

このように、内部設計は「ユーザーの要望(設計)」を「実際のプログラム(実装)」に翻訳してつなぎ合わせる橋渡しのような非常に重要な役割を担っています。

ITパスポート試験での内部設計出題傾向と対策

内部設計は、マネジメント系の「開発技術」「ソフトウェア開発管理技術」の分野で出題されます。

試験でおさえるべきキーワード

  • 内部設計(詳細設計):プログラマーに向けて、システム内部の構造や処理の手順を設計する工程。
  • 外部設計(基本設計):ユーザーに向けて、画面レイアウトや操作性などの仕様を設計する工程。
  • ウォーターフォール開発:外部設計→内部設計→プログラミング(実装)の順番で進む開発モデル。

過去問に挑戦!

【問題】
システム開発プロセスのうち、外部設計で定義されたシステム要件を実現するために、コンピュータの制約などを考慮して、システム内部の処理仕様やプログラムの構造などを設計する工程はどれか。

ア.要件定義
イ.外部設計(基本設計)
ウ.内部設計(詳細設計)
エ.実装(プログラミング)

【正解】:ウ
【解説】:外部設計で決まった要件をもとに、コンピュータで動かすための内部の処理仕様やプログラムの構造を設計する工程は「内部設計(詳細設計)」です。

【問題】
ソフトウェア開発において、内部設計で行う作業として最も適切なものはどれか。

ア.ユーザーが利用する画面のレイアウトや、出力される帳票のフォーマットを決定する。
イ.システム全体で管理すべきデータとその関係を示すER図を作成する。
ウ.システムに実装すべき処理をプログラム単位に分割し、それぞれの処理手順やモジュール間のデータ受け渡し方法を決定する。
エ.システム化の対象範囲を定め、どのような業務課題を解決するかを決定する。

【正解】:ウ
【解説】:内部設計はプログラマー向けの設計です。処理をプログラム単位(モジュール)に分割し、処理手順を決めるのが内部設計(ウ)です。アとイは外部設計(基本設計)、エは要件定義の作業です。

まとめ:内部設計はプログラマーへの重要な指示書

今回は内部設計(詳細設計)について解説しました。ポイントをもう一度確認しましょう。

  • 内部設計は、外部設計の内容を「どうやってプログラムで実現するか」を決める工程(別名:詳細設計)
  • 外部設計はユーザー視点、内部設計はエンジニア(プログラマー)視点
  • 処理の具体的な手順(ロジック)や、プログラムの部品分け(モジュール分割)などを行う
  • 開発の順番は、外部設計→内部設計→実装(プログラミング)

「家づくり」の例えのように、壁の裏の配線・配管図を作っているのが内部設計だとイメージできれば、試験でも外部設計との違いを自信を持って見分けられるようになります!

目次