🚧 外部仕様と内部仕様の区別

🚨 削除予定
「標準規格」である以上、具体例を出すと、それが基準になることが避けられないと判断したため、ページ全体削除予定。

このページについて

  • サンエム標準における「外部仕様」と「内部仕様」の範囲を規定し、それを理解してもらうための具体例や解説を記載しています。
  • 用語の定義および工程定義については、 ⚖️Arrow icon of a page link2.2 工程の定義 を参照してください。

定義と範囲

用語の定義

⚖️Arrow icon of a page link2.2 工程の定義 では、以下のように定義されています。

外部仕様

システムの利用者や他システムとのインターフェースに関する仕様であり、顧客やユーザーとの合意対象となる設計項目

内部仕様

システム内部の構造や処理方法に関する仕様であり、主に開発者が実装のために扱う設計項目。

判断基準

  • 顧客やユーザーとの合意形成が必要な仕様は外部仕様とする。
  • 実装の詳細や技術的最適化に関する仕様は内部仕様とする。
  • 曖昧な項目については、プロジェクトリーダーや設計担当者に相談し、合意の上で決定する。

範囲の具体例

外部仕様
  • システム機能の全体概要
  • ユーザー画面のレイアウト、アクションロジック(バリデーションチェック、DB入出力仕様
  • 入出力データの仕様(フォーマット、項目、バリデーション)
  • 他システムとのインターフェース仕様(API仕様、通信プロトコル)
  • 論理データベース設計(ER図、テーブル定義:主キー・外部キー、型、桁数)
  • セキュリティ方針(認証・認可の範囲)
  • ログの種類と目的、保存期間(監査ログ、操作ログ。保存期間は1年で、経過後は物理削除など)
  • 例外処理の方針(どのような例外を検出し、ユーザーに通知するか)
内部仕様
  • 詳細なモジュール構成と役割分担
  • アルゴリズム詳細(処理手順、計算ロジック)
  • 物理データベース設計(インデックス設計、パーティショニング)
  • パフォーマンス最適化方針(キャッシュ戦略、チューニング手法)
  • ログのフォーマット、保管方法、ローテーション設定
  • 例外処理の実装方法(リトライ処理、エラーハンドリングコード)
  • セキュリティ実装詳細(暗号化方式、鍵管理)
  • トランザクション管理の詳細設計

基本設計工程・詳細設計工程との関係

原則は、システム全体の枠組みや方針、外部仕様は基本設計で定義し、実装に関わる詳細、内部仕様は詳細設計にゆだねる。

設計項目の区別の具体例

設計項目 外部仕様(基本設計) 内部仕様(詳細設計)
画面設計 画面の構成、項目、遷移フロー、コンポーネント設計 画面の操作時の内部処理
データベース設計 論理データモデル(テーブル、データ項目、型、桁数、キー定義、キー関係) 物理データモデル(インデックス、パーティショニング)
ビジネスロジック 主要な処理フローやアルゴリズムの概要 詳細な処理手順、コードレベルのロジック
セキュリティ 認証・認可の範囲と方針、アクセス制御の範囲、暗号化の対象範囲などの実装の制約になる意思決定=要件に直接結びつくもの 暗号化方式、鍵管理方式、詳細な権限設定
ログ設計 ログの種類と目的(監査ログ、操作ログなど) ログのフォーマット、保存方法、ローテーション設定
例外処理 例外の種類とユーザー通知方針 例外処理の実装方法、リトライ処理の実装方法

区別が曖昧になりやすい設計項目

論理データベース設計
  • 基本設計の範囲に含まれる。
  • データベースの論理構造(テーブル設計、リレーション設計、主キー・外部キー)を定義し、システム全体のデータ構造を明確にする。外部仕様と内部仕様の橋渡しとなる。
  • 一方で、物理データベース設計(インデックスやパーティショニングなどの物理的最適化)は詳細設計に含まれる。
キャッシュ戦略
  • 詳細設計の範囲に含まれる。
  • キャッシュの種類、配置場所、更新・整合性の制御はシステム内部のパフォーマンス最適化や実装に関わるため。
ログ設計
  • ログに記録する情報の種類(ユーザー操作ログ、システムエラーログなど)やログの目的(監査、トラブルシューティングなど)は基本設計で定義する。
  • ログの具体的なフォーマット、記録方法、保存場所、ローテーションポリシーなどの詳細は詳細設計に含まれる。
例外処理設計
  • 例外の種類や対応方針(どのような例外を検出し、どのようにユーザーに知らせるか)は基本設計で定義する。
  • 例外処理の具体的な実装方法やエラーハンドリングのコード詳細は詳細設計で扱う。
セキュリティ設計
  • 認証・認可の方針やユーザー権限の範囲は基本設計で定義する。
  • 暗号化方式、鍵管理、セキュリティ対策の実装詳細は詳細設計に含まれる。
バッチ処理・ジョブ管理
  • バッチ処理の役割やスケジュール概要は基本設計に含まれる。
  • 処理のアルゴリズム、ジョブの実装、リトライ戦略は詳細設計に含まれる。
インターフェース仕様(他システムとの連携)
  • データの送受信フォーマット、通信プロトコル、APIの外部仕様は基本設計で定義する。
  • データ変換ロジックやエラーハンドリングの詳細は詳細設計に含まれる。
パフォーマンス要件・チューニング方針
  • パフォーマンス目標や許容範囲は基本設計で決める。
  • チューニング方法やキャッシュ配置は詳細設計に含まれる。
エラーメッセージ設計
  • ユーザーに表示するエラーメッセージの内容や文言は基本設計で決める。
  • エラーログの記録方法や通知方法は詳細設計に含まれる。
トランザクション管理
  • トランザクションの範囲や整合性要件は基本設計で決める。
  • 実装やロック戦略は詳細設計に含まれる。

次のページ → 📄Arrow icon of a page link2.3.2 基本設計書とは?