システム開発プロセスには, システム要件定義, ソフトウェア要件定義, ソフトウェア方式設計, ソフトウェア詳細設計などがある。システム要件定義で実施する作業として, 適切なものはどれか。
平成22年度 秋期 ITパスポート試験 問49
この問題の解説と、これまでの解答の記録です。
問 49
- ア
正解 正解はア。システム要件定義は、開発プロセスの最上流で「そのシステムが何を実現すべきか」を利用者・業務の立場から決める工程であり、ハードウェア・ソフトウェア・人手作業を含めたシステム全体に対する要求をまとめる。ここで扱うのは、業務上必要な機能 (機能要件) に加えて、性能・可用性・セキュリティ・運用条件などの非機能要件である。「応答時間の目標値の決定」は、たとえば「検索結果は3秒以内に表示する」といった、システムが満たすべき性能上の品質目標であり、実現手段 (どんなプログラム構造にするか、どんなデータベースにするか) とは独立に決められる。したがって非機能要件としてシステム要件定義で決めるべき作業であり、アが適切である。
不正解イ
データベースのレコード項目や主キーを決めるのは、要件を実現するための内部構造を決める作業で、ソフトウェア方式設計以降のデータベース設計に当たる。システム要件定義の段階では「どんな情報を扱う必要があるか」までしか決めず、レコード構成や主キーといった実装寄りの詳細には踏み込まない。
不正解ウ
データを処理するアルゴリズムの決定は、プログラム内部の処理手順をどう組み立てるかという実装方法の話であり、ソフトウェア詳細設計の作業である。要件定義では「何を実現するか (What)」を決め、「どう実現するか (How)」であるアルゴリズムは扱わない。
不正解エ
プログラム間でやり取りされるデータの形式の決定は、ソフトウェアを複数のプログラム (コンポーネント) に分割し、その間のインタフェースを取り決める作業なので、ソフトウェア方式設計に属する。そもそもプログラム分割はソフトウェア要件定義より後の話であり、システム要件定義の段階ではプログラム構成自体がまだ存在しない。
- システム要件定義は最上流の工程で、システム全体に求められる機能要件と、応答時間・稼働率・セキュリティなどの非機能要件を決める。「何を実現するか (What)」を扱い、「どう実現するか (How)」には踏み込まない。
- 工程が下るほど決める内容は実装寄りになる。ソフトウェア方式設計=プログラムへの分割とプログラム間インタフェース (データ形式など)、ソフトウェア詳細設計=アルゴリズムやデータ構造の詳細、という対応で選択肢を振り分けられるようにしておく。