SAシステムアーキテクト試験 午前Ⅱ

平成21年度秋期 システムアーキテクト 午前Ⅱ 問5

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

あるプログラム言語の解説書の中に次の記述がある。この記述中の“良いプログラム”がもっている特徴はどれか。 このプログラム言語では,関数を呼び出すときに引数を保持するためにスタックが使用される。引数で受け渡すデータを,どの関数からでも参照できる共通域に移せば,スタックの使用量を減らすことができるが,“良いプログラム”とは見なされないこともある。

選択肢

  1. ア
    実行するときのメモリの使用量が,一定以下に必ず収まる。
  2. イ
    実行速度について,最適化が行われている。
  3. ウ
    プログラムの一部(モジュール)を変更しても,残りの部分への影響が少ない。
  4. エ
    プログラムのステップ数が少なく,分かりやすい。
解き方のヒントを見る

検討する対象の範囲をそろえる

関数間のデータ受渡しやプログラムの品質を考えるときは、まず検討対象の範囲をそろえましょう。局所的な話と全体に関わる話を混ぜず、与えられた条件がどの範囲に当てはまるかを確かめることが出発点です。

この問題で問われていること

この問題では、判断の対象となる範囲に注目して考えてみましょう。条件を一つずつ捉え、それがどこまでを対象としているかを整理すると、異なる範囲についての話を同じ基準で扱っていないか確認できます。

視点

注目する対象が変わると、同じ言葉でも指している範囲が変わることがあります。検討の途中で対象を広げたり狭めたりしていないか、最初に定めた範囲に立ち返って確かめましょう。

確認ポイント

  • いま考えている対象の範囲を明確にしたか
  • 条件が当てはまる範囲を確認したか
  • 検討の途中で対象の範囲が変わっていないか
正解と解説を見る

正解

ウ

解説

良いプログラムとは、単にメモリ使用量や実行速度を改善したものではなく、構造が整理され、変更時に他の部分へ影響を及ぼしにくいプログラムです。

理由

引数を共通域に移すとスタック使用量は減る場合があるが、複数の関数が同じデータに直接依存しやすくなる。そのため、一部の変更が他の部分へ波及しやすくなり、良い設計とは限らない。

比較

良いプログラムの重要な特徴は、処理を部品化し、各モジュール間の依存を小さく保つことです。これにより、あるモジュールを変更しても、残りの部分への影響を抑えやすくなる。

選択肢ア

これは不正解だよ。実行時のメモリ使用量が一定以下に収まることは、資源制約への適合を示す条件であって、プログラムの設計品質そのものを表すとは限らない。処理内容や入力によって使用量が変化する場合もあり、設問の共通域利用による設計上の問題とは直接対応しない。

選択肢イ

これは不正解だよ。実行速度の最適化は性能面の特徴である。しかし、速度を高めても、関数やモジュール間の依存関係が強く、変更の影響が広がりやすければ、保守しやすい良いプログラムとは限らない。設問の焦点は性能ではなく構造である。

選択肢ウ(正解)

これは正解だよ。モジュールを変更しても残りの部分への影響が少ないことは、各モジュールの役割と依存関係が適切に分離されていることを示す。共通域にデータを置くと関数同士の依存が強まりやすいため、この性質を保つ設計が良いプログラムの特徴となる。

選択肢エ

これは不正解だよ。ステップ数が少なく、見た目に分かりやすいことは理解しやすさに関係するが、それだけで良い設計とは判断できない。処理を短くしても、共通データへの依存が強ければ変更の影響範囲が広がり、保守性を損なうことがある。

学習のポイント

共通域の利用が生む依存関係と、モジュール独立性の考え方を理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成21年度秋期 システムアーキテクト試験 午前Ⅱ 問5(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針