背景
仕事の中でシステムやソフトウェアの開発を行う際、外部仕様書を書く機会が増えてきたので、外部仕様書に必要な項目をまとめた。
記事の目的
外部仕様書を効率的に作成するため、外部仕様書のテンプレートを作成する
外部仕様書とは
外部仕様書は、基本設計書もとも呼ばれている。外部仕様書の目的は、要件定義の結果を受けて、具体的なシステム構成や機能に記載した文書である。
外部仕様書の全体構成
外部仕様書の全体構成は、下記の通りである。
- 処理設計
- システム化の背景・目的 システム化が必要な背景(理由)と目的を簡潔に記載する。
- (オプション)システム化の対象範囲 対象処理のシステム化範囲を明確に記載する。新規の場合は不要。
- システム機能要件一覧 システムの機能要件について、一覧で記載する。
- 分類
- 機能名
- 利用者
- 機能概要
- 重要度
- 優先度
- 処理フロー システム全体の処理の流れについて記載する。 UML図のアクティビティ図を使用すると良い。
- ユースケースシナリオ システム全体の処理をユースケースごとに分解し、そのシナリオについて記載する。 UML図のユースケース図やシーケンス図を使用すると良い。
- システム方式設計
- ハードウェア構成図 システムを実現するためのハードウェア構成について記載する。 UML図の配置図を使用すると良い。
- ソフトウェア構成図 システムを実現するためのソフトウェア構成について記載する。
- OS Windows、Mac-OS、Unix、Linux、iOS、AndroidなどのOSについて記載する。
- ミドルウェア DB(Oracle、DB2、SQL Server、MySQL、PostgreSQL)、Webサーバ(Apache、nginx、IIS)、APサーバ(WAS、Tomcat、WebLogic、JBoss、Interstage)などのミドルウェアについて記載する。
- ネットワーク構成図 システムを実現するためのネットワーク構成について記載する。 UML図の配置図を使用すると良い。
- アプリケーション機能構成 開発するシステム機能が階層的に分かる資料を作成する。 機能要件とアプリケーション機能の関係性を明示するとともに、機能の分類、整理を行い記載する。
- 分類
- 機能名
- 利用者
- 処理タイミング
- 処理内容
- アプリケーション機能設計
- 画面設計
- 画面一覧 開発する画面の一覧について記載する。
- 分類
- 画面名
- 説明
- 関連機能名
- 画面遷移図 画面がどの順番で遷移するか記載する。
- 画面レイアウト 各画面の詳細なレイアウトについて記載する。
- 画面入出力項目一覧 各画面で表示する内容と、入力する内容について記載する。
- 画面アクション定義 画面操作が行われた時の処理内容について記載する。
- バッチ設計
- バッチ処理一覧 バッチ処理の一覧について記載する。
- バッチ処理名
- 処理概要
- 処理周期
- 処理タイミング
- 関連機能名
- バッチ処理定義 バッチ処理の具体的な入出力と処理内容について記載する。
- 入力データ
- 処理内容
- 出力データ
- バッチ処理フロー バッチ処理の流れについて記載する。 UMLのシーケンス図を使用すると良い。
- DBテーブル・ファイル設計
- テーブル・ファイル一覧 システムで用いるDBのテーブル一覧について記載する。
- テーブル関連図 システムで用いるDBのテーブルの関係性について記載する。 UMLのER図を使用すると良い。
- テーブル定義 テーブル内の項目名、データ型、データ長、その他制約について記載する。
- ファイル定義 ファイル内の項目名、データ型、データ長、その他制約について記載する。
- CRUD図 各テーブルについて、どの機能で作成、参照、更新、削除がされるかについて記載する。 C: 作成(Create)、R: 参照(Read)、U: 更新(Update)、D: 削除(Delete)
- 外部インターフェース設計
- 外部インターフェース一覧 外部システムとの界面(インターフェース)の一覧を記載する。
- インターフェース名
- 入出力の種別
- 相手先システム名
- 接続方式
- 通信タイミング
- 外部システム関連図 外部システムとのデータ連携について記載する。 UML図の配置図を使用すると良い。
- 外部インターフェース項目定義 外部システムと連携するデータについて記載する。(データ型、データ長、その他制約)
- 外部インターフェース処理概要 システム間のデータ連携方式(リソース共有(データベース共有、ディスク共有)、アプリケーション連携(RPC、Webサービスなど)、ファイル連携、メッセージング)について記載する。
- 非機能要件設計
- 性能設計 要件定義の性能要件に対して、対応方針や評価方法について記載する。
- 基準値 画面応答時間、バッチ実行時間など、基準となる定量的な値を記載する。
- 対策 上記基準を満たすための、アプリケーション機能やプラットフォーム設計等への対策について記載する。
- 評価方法 テスト段階において、上記基準を満たしているか判定する方法について記載する。
- 信頼性設計 要件定義の可用性と完全性の要件に対しての対応方針について記載する。
- 可用性
- 可用性基準値 要件定義で定めた基準値を記載する。(例: 稼働率99.999%)
- 可用性対策 アプリケーション機能(例: 障害発生時の復旧方法)やプラットフォーム設計等(例:システム多重化、縮退運用)への対策について記載する。
- 可用性評価方法 テスト段階において、上記基準を満たしているか判定する方法について記載する。
- 完全性
- 完全性基準値 要件定義で定めた基準値を記載する。
- 完全性対策 上記基準を満たすための、アプリケーション機能(例: データバックアップや更新ログの取得)やプラットフォーム設計(例: ディスクバックアップ、アクセスログ取得)等への対策について記載する。
- 完全性評価方法 テスト段階において、上記基準を満たしているか判定する方法について記載する。
- 拡張性設計
- 情報セキュリティ設計 要件定義のセキュリティ要件に対しての対応方針について記載する。
- 利用者等の認証 利用者認証(利用者自身、利用者の知っているもの、利用者が持っているものを用いた認証)の方式について記載する。
- 権限管理 アカウント管理(登録、更新、停止、削除)の方法について記載する。
- アクセス管理 利用者の職務に応じて利用機能を制限する方法について記載する。
- ログ管理 システムの利用記録・検索方法について記載する。
- 暗号化機能 保存したデータや通信するデータの暗号化方式について記載する。
- 不正プログラム対策 コンピュータウィルス感染防止の対策方式について記載する。
- 通信の制御 不正通信の遮断方式について記載する。
- テスト方針 各テストについて、システムの品質を担保するために必要なテストの種類や目的、方法、開始条件、実施内容、テスト環境、テストデータの準備方針、実施タイミング、役割分担、報告書等の方針について記載する。
- 単体テスト(MT, UT) プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストのことである。
- 結合テスト(IT) システム開発におけるプログラムの検証作業の中でも、手続きや関数といった個々の機能を結合させて、うまく連携・動作しているかを確認するテストのことである。
- システムテスト(ST) システム開発におけるプログラムの検証作業の中でも、構築したシステムが全体として予定通りの機能を満たしているかどうかを確認するテストのことである。
- 運用テスト(OT) システム開発においていくつかあるテスト工程の中で、本番稼働直前、テスト工程の一番最後に行う確認テストのことである。
- 移行方針 要件定義に基づき、システム移行に関する下記のような方針について記載する。
- 移行スケジュール 全体の開発、導入スケジュールについて記載する。
- プログラム移行 プログラムの移行手順について記載する。
- 初期データ登録 新たなデータの登録方法について記載する。
- 既存システムからのデータ移行 既存システムからのデータの移行方法について記載する。
- 役割分担 担当者について記載する。
- 運用保守設計 要件定義に基づき、各要件を実現するに当たっての運用保守業務設計、および必要な環境や機能の設計について記載する。
- 運用保守業務内容 運用保守で対応する内容一覧を記載する。
- 役割分担と対象範囲 担当者と担当範囲について記載する。
- 管理項目 運用保守で対応する機能項目について記載する。
- 必要なシステムやドキュメント 運用保守を行うために必要なドキュメント一覧を記載する。
- システム監視方法 システムの監視方法(定期的なログ確認、アラート機能)について記載する。
- データ管理方法(ログなど) データの保存場所や運用方法について記載する。
- バックアップ方法 バックアップ先やタイミング、手法について記載する。
- 障害対応方法 障害発生時の対応手順について記載する。
まとめ
- 外部仕様書のテンプレートに関して記述した
参考文献
変更履歴
- 2020/05/21: 新規作成
0 件のコメント:
コメントを投稿