情報処理用語と思われる「外部設計」という言葉がどうも腑に落ちないので、ソフトウェア開発の工程に関する用語を調べてみます。
共通フレーム98(SLCP-JCF98)用語
開発プロセスの中で「開発の工程」が定義されています。5つの工程とそれを細分した8つの工程を示します。
- 外部仕様
- 概要定義
- 詳細定義
- 内部仕様
- 設計
- プログラム設計
- 製造
- プログラム作成
- 製品のテスト
- 結合テスト
- 総合テスト
- 設置
- 導入
- 概要定義
- システム化範囲とシステム機能を明確化。システム機能、入出力、品質に関する要求の概要定義を行う。
- 詳細定義
- システムの実現性確認。ファイル体系の定義、データベースの論理設計、コードの設計、業務機能の定義、入出力の詳細定義、他システムとの接続やデータ授受が行われる場合の外部インタフェース定義。
- 設計
- 業務機能の処理の仕組みである方式設計。入出力、ファイル、インタフェースなどを定義し、次のプログラム設計ができる程度に詳細化。
- プログラム設計
- プログラム単位に内部構造と処理手順を設計。
- プログラム作成
- プログラムを作成し、単体テストを行う。
- 結合テスト
- プログラム間、サブシステム間、他システム間とのインタフェース確認。
- 総合テスト
- システムが本番環境で稼動できることを確認。
- 導入
- 本番の稼働環境に導入する。環境の切り替えとデータ移行作業。
ISO/IEC 12207(JIS X 0160-1996)用語
開発プロセスの中でアクティビティとして定義されています。
- プロセス開始の準備
- システム要求分析(System Requirements Analysis)
- システム方式設計(System Architecture Design)
- ソフトウェア要求分析(Software Requirements Analysis)
- ソフトウェア方式設計(Software Architecture Design)
- ソフトウェア詳細設計(Software Design)
- ソフトウェアコード作成及びテスト(Software Construction)
- ソフトウェア結合(Software Integration)
- ソフトウェア適格性確認テスト(Software Testing)
- システム結合(System Integration)
- システム適格性確認テスト(System Testing)
- ソフトウェア導入(Software Installation)
- ソフトウェア受入れ支援
- プロセス開始の準備
- ライフサイクルモデルの定義(選択)、アクティビティとタスクを選定し当てはめ
- システム要求分析
- システム要求事項を明らかにするためシステムの具体的な利用方法について分析。システム要求事項を評価。
- システム方式設計
- 最上位レベルでの方式確立。ハードウェア、ソフトウェア、手作業の品目、構成品目を明確化し要求事項を品目に振り分ける。
- ソフトウェア要求分析
- ソフトウェア品目について品質特性仕様を含めてソフトウェア要求事項を確立。
- ソフトウェア方式設計
- 要求事項をソフトウェア方式(ソフトウェアの最上位レベルの構造とソフトウェアコンポーネント)に変換し、要求事項をコンポーネントに割り振り、コンポーネントの細部を明確化する。
- ソフトウェア詳細設計
- コンポーネントをソフトウェアユニット(コーディング・コンパイル・テスト単位)に詳細化し要求事項をユニットに割り振る。品目と周辺、コンポーネント間、ユニット間のインタフェースの詳細設計を行う。データベース詳細設計を行う。ユニット、ソフトウェア結合のテスト要求事項・計画を定義する。
- ソフトウェアコード作成及びテスト
- ユニットおよびデータベースを開発し、テストを実施する。
- ソフトウェア結合
- ソフトウェアユニット及びコンポーネントを結合しソフトウェア品目にする。
- ソフトウェア適格性確認テスト
- ソフトウェア品目の適格性要求事項に従ってテストする。
- システム結合
- システム適格性確認テスト
- システムの適格性要求事項に従ってテストを行う。
- ソフトウェア導入
- ソフトウェア受入れ支援
とどのつまり「外部設計」とは?
情報処理技術者試験のテキスト等には、「外部設計」という用語が出てきます。この工程の説明をみると、画面帳票設計を行う、データベースの論理設計を行い、外部設計の成果物を見る対象は顧客となるもののようです。
となると、ISO/IEC 12207で定義しているアクティビティに無理矢理マップしようとすると、システム要求分析〜ソフトウェア要求分析に該当するもののように思えます。ISO/IEC12207を日本のソフトウェア産業の慣習にあわせて調整されている共通フレーム98においては、要求分析(Analysis)と設計(design)をどちらも「仕様」という表現で大括りにしています。日本のソフトウェア産業の慣習とやらはよくわかりませんが、共通フレーム98の「外部仕様」、「内部仕様」の用語の”仕様”を”設計”に置き換えると、外部設計、内部設計となり、情報処理技術者試験用語の説明内容に近くなるように思えます。
ようするに
これから開発プロセスを語るときには、共通語彙としての共通フレーム98なりISO/IEC 12207を前提にしましょう。となると「外部設計」って何?