平成22年度 春期 ITパスポート試験 問50 解説 ソフトウェア開発工程
問50 図は開発するソフトウェアの動作ロジックを検討し, その結果を文書化した流れ図 の一部である。このような作業を実施するのはソフトウェア開発のどの段階か。
- ア システム方式設計
- イ システム要件定義
- ウ ソフトウェア詳細設計 ✓ 正答
- エ ソフトウェア要件定義
解説
ソフトウェア開発における「設計の粒度」に着目します。流れ図(フローチャート)のように、プログラムの具体的な処理手順や条件分岐を詳細に記述している場合は、ソフトウェア詳細設計の段階であると判断します。
ソフトウェア開発の階層構造
ソフトウェア開発は、大きく分けて「何を実現するか」を定義する要件定義と、「どのように実現するか」を具体化する設計工程に分かれます。
要件定義は、ユーザーの要求に基づき、システムが提供すべき機能や性能を決定します。ここではプログラム内部の複雑な分岐やアルゴリズムまでは踏み込みません。
一方、設計工程はさらに「外部設計(基本設計)」と「内部設計(詳細設計)」に分類されます。外部設計では、ユーザーから見える画面レイアウトやインターフェースを定義します。そして内部設計、つまりソフトウェア詳細設計では、プログラマが実際にコーディングできるレベルまで処理を具体化します。問題文にあるような「条件分岐のロジック」をフローチャートで図式化するのは、まさにこの詳細設計の典型的な作業です。
思考のステップ
この問題を解く際は、選択肢を抽象度の高い順に整理すると間違いが防げます。
- システム要件定義:システム全体の目的や境界を決める(最も抽象度が高い)。
- システム方式設計:ハードウェアやソフトウェアの構成(OSやネットワークなど)を決める。
- ソフトウェア要件定義:システムの中でソフトウェアが担う役割を決める。
- ソフトウェア詳細設計:プログラムの内部ロジック、データ構造、アルゴリズムを決める(最も具体的)。
提示された図は、具体的な変数INに対して「4以上かつ9以下なら上半期」「12以下なら下半期」といった極めて具体的な計算ロジックを示しています。このレベルの記述は、システム全体や機能の概要を決める段階ではなく、実装直前の設計工程であると直感的に結びつけることが重要です。
実務における設計の意義
この問題は、開発現場における設計書の役割を問うものです。なぜこれほど細かくロジックを文書化するのかというと、プログラミング工程でのミスを減らし、品質を担保するためです。もし設計書が曖昧なままコーディングを始めると、担当者によって解釈が分かれ、バグが発生しやすくなります。
特に、境界値(例:12以下なのか12未満なのか)の取り扱いやエラー処理の条件分岐は、プログラムの挙動に直接影響します。こうしたロジックを設計段階で可視化してレビューを通しておくことで、手戻りを防ぎ、堅牢なソフトウェアを構築することができるのです。この問題は、設計の段階が進むにつれて内容が具体的になるという、ソフトウェア開発工程の原則を理解しているかを試しています。