内部設計の解説(基本情報技術者シラバス用語)

目次

内部設計とは

内部設計とは、外部設計(基本設計)で決まった仕様をもとに、プログラマーが実際にプログラムコードを書くことができるように、システムの「ユーザーからは見えない裏側の仕組み」を詳細に設計する工程のことです。「詳細設計」とも呼ばれます。

外部設計が「何を見せるか(表面)」を設計するのに対し、内部設計は「どのようにコンピュータで処理するか(裏面)」を設計します。具体的には、データの処理ロジック(アルゴリズム)、データベースのテーブル構造やデータの保存形式、プログラムを機能ごとに分割した「モジュール」の設計、エラーが発生した際の例外処理の方法などを決定します。この内部設計書がしっかりと作り込まれていることで、複数のプログラマーが開発に加わっても、統一感のある正確なシステムを作り上げることができます。

具体例

ECサイトで「注文ボタンが押されたとき」の処理をプログラム向けに定義する内部設計の記述例です。

【処理手順(アルゴリズム)の設計】
1. 画面から送られた「商品ID」と「注文数」を受け取る。
2. データベースの「在庫テーブル」から該当商品の在庫数を取得する。
3. もし(在庫数 >= 注文数)なら:
   ・在庫数から注文数を引き算して更新する。
   ・「注文成功」の応答データを返す。
4. そうでない(在庫不足)なら:
   ・「在庫不足エラー」の応答データを返し、ログを出力する。

もう少し詳しく

内部設計は、外部設計で作成された「ユーザー視点」の仕様を、開発者(プログラマー)が実装できる具体的な「コンピュータ視点」の設計に翻訳する工程です。システムの裏側の動作ロジックや物理的な構造を決定するため、発注者はレビューには参加せず、システムエンジニアとプログラマーが中心となって進めます。

内部設計で決定される主な項目には以下があります。

  • モジュール設計(詳細設計): プログラム全体を機能単位(モジュール、クラス、関数など)に分解し、それぞれのモジュールが持つ役割、インプット(引数)、アウトプット(戻り値)を定義します。
  • 物理データ設計: 外部設計での論理的なデータ構造に基づき、具体的なデータベースエンジンに適合した物理的なテーブル定義(データ型、インデックスの設定、制約など)を行います。
  • 処理フロー(アルゴリズム)設計: 複雑な計算処理やビジネスロジックの実行手順を、フローチャートや疑似コード(プログラムに近い箇条書き)を用いて定義します。
  • エラー・例外処理設計: 入力エラーや通信障害が発生した際に、システムが異常終了せずにログを記録し、適切なエラー画面を表示する仕組みを設計します。

完成した「内部設計書(詳細設計書)」は、コーディング(プログラミング)の直接の指示書として機能します。

試験でのポイント

試験では、内部設計の役割や設計対象(モジュール分割、物理データベース設計、アルゴリズム設計など)が問われます。

外部設計との対比として、「クライアント(発注者)は関与せず、開発者向けに行われる設計工程であること」が頻出ポイントです。また、この工程で設計されるモジュール構成やデータ項目に基づいて、後続の「単体テスト」のテスト仕様書が作成されるという対応関係(V字モデルにおける内部設計と単体テストのペア)も非常によく出題されます。

関連する用語

関連する用語には、システムの見た目や大枠を決める「外部設計」、プログラムを機能単位に分割する「モジュール分割」、および内部設計の妥当性をプログラムの最小単位で検証する「単体テスト」があります。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ