平成25年度 秋期 ITパスポート試験 問40 解説 ソフトウェア詳細設計
システム開発を,システム要件定義,システム方式設計,ソフトウェア要件定義, ソフトウェア方式設計,ソフトウェア詳細設計の順で実施するとき,ソフトウェア 詳細設計で初めて決定する項目として,適切なものはどれか。
- ア コーディングを行う単位となる個々のプログラムの仕様 ✓ 正答
- イ ソフトウェアに必要な機能と応答時間
- ウ 対象ソフトウェアの最上位レベルの構造
- エ 複数のソフトウェア間のインタフェースに関する仕様
解説
この問題は、システム開発の工程を上流から下流へ並べたとき、各工程で「何を決めるのか」という役割分担を理解しているかを問うものです。
正解を選ぶための判断根拠は、ソフトウェア開発における「抽象度」です。開発が進むにつれ、大まかな枠組みから、最終的なプログラミングへと詳細化していきます。「詳細設計」という名前の通り、最後の手順に近ければ近いほど、具体的なソースコードに近いレベルの情報を決定します。
ソフトウェア開発工程における設計の役割分担
システム開発の一般的な流れは、大きな決まり事から小さな決まり事へと進みます。
・システム要件定義:システムで何を実現するか(顧客の要望) ・システム方式設計:システム全体をどのようなハードウェアやソフトウェアで構成するか ・ソフトウェア要件定義:ソフトウェアとして満たすべき機能や性能(応答時間など) ・ソフトウェア方式設計:ソフトウェアをどのように分割し、どのような構造にするか(モジュール構成など) ・ソフトウェア詳細設計:個々のプログラムをどうやって動かすか(アルゴリズム、データ構造など)
この流れを見ると、選択肢がどの段階に該当するかが明確になります。
選択肢の分類と消去法による導き方
問題の選択肢を、それぞれの工程に当てはめて整理します。
・イの「ソフトウェアに必要な機能と応答時間」は、ソフトウェア要件定義で行います。これらがないと、そもそも設計が始められません。 ・ウの「対象ソフトウェアの最上位レベルの構造」は、ソフトウェア方式設計で行います。全体をどのような機能の塊に分けるかという大きな方針を固める段階です。 ・エの「複数のソフトウェア間のインタフェースに関する仕様」も、方式設計に近い段階です。どの部分とどの部分がどうデータをやり取りするかという大きな枠組みを決めます。
これらに対し、アの「コーディングを行う単位となる個々のプログラムの仕様」は、これら全ての土台が完成した後に決まります。プログラム一つひとつのアルゴリズムや、具体的な変数名、関数の内部処理など、プログラマーがコードを書く直前の指示書を作る工程が詳細設計です。
なぜこの知識が実務で重要なのか
この知識は、単なる暗記ではなく、開発現場での「手戻り」を防ぐための重要な考え方です。
もし詳細設計で決めるべき内容(個別のロジック)を、方式設計や要件定義の段階で細かく決めすぎると、後の修正が大変になります。逆に、方式設計で決めるべき構造を詳細設計の段階になってから悩むと、プログラム間の連携がうまくいかず、システム全体が破綻します。
試験としては「どの工程で何が決まるか」という用語の定義問題ですが、実務では「今、自分たちはどのレイヤー(粒度)の設計をしているのか」を意識することが、スムーズな開発には欠かせません。この問題は、開発工程の階層構造を意識する習慣を養うための設問といえます。