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

令和元年度秋期 システムアーキテクト 午前Ⅱ 問5

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

問題

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

選択肢

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

評価の前提をそろえて考える

仕組みと品質の関係を考えるときは、評価の前提がそろっているかに着目しましょう。ある場面での印象をそのまま一般化せず、何を前提にした判断なのかを整理することで、検討の軸を保ちやすくなります。

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

この問題では、引数の扱いと品質を結び付けて考える際の前提に注目してください。結び付きの強さや方向をすぐに決めるのではなく、その判断がどのような条件に基づくものかを意識し、条件をそろえて考えましょう。

視点

品質についての判断は、その判断が成り立つ前提と一緒に整理しましょう。与えられた条件と自分が補った想定を区別すると、前提を途中で変えずに検討しやすくなります。

確認ポイント

  • 判断の前提となる条件を把握できているか
  • 自分の経験から前提を付け足していないか
  • 同じ前提の下で品質との関係を考えているか
正解と解説を見る

正解

ウ

解説

正解はウです。共通域のデータを複数の関数が参照すると、データの扱いを変更した際に影響が広がる可能性があります。この記述では、スタックの節約よりも、関数の変更が他の関数に及ぼす影響の少なさを重視しています。

共通域と変更の影響

どの関数からでも参照できる共通域にデータを置くと、複数の関数がそのデータに依存しやすくなります。共通域のデータ形式や扱いを変更した際、それを参照する他の関数にも修正が必要になることがあります。したがって、この記述の「良いプログラム」がもつ特性は、関数を変更しても他の関数への影響が少ないことです。

他の選択肢との比較

共通域への移動で減らせると明記されているのは、スタックの使用量です。メモリ使用量全体が一定以下に必ず収まるとは述べられていません。また、実行速度が高速になることや、ステップ数が少なく分かりやすくなることも示されていません。資源の節約と、変更しやすい構造による保守性は分けて考える必要があります。

選択肢ア

これは不正解だよ。問題文では、共通域に移すことでスタックの使用量を減らせるとしています。しかし、メモリ使用量全体が一定以下に必ず収まるとは述べていません。スタックを節約できることと、この記述で重視するプログラムの特性は別です。

選択肢イ

これは不正解だよ。問題文には、共通域を使うと実行速度が高速になるという説明はありません。示されている効果はスタック使用量の削減であり、処理時間の短縮を保証するものではありません。この記述の「良いプログラム」は、速度以外の観点で評価されています。

選択肢ウ(正解)

これは正解だよ。どの関数からでも参照できる共通域を使うと、複数の関数が同じデータに依存しやすくなります。そのデータの扱いを変更すると、他の関数にも影響が及ぶ可能性があります。したがって、ここでは関数を変更しても他の関数への影響が少ない特性が重視されています。

選択肢エ

これは不正解だよ。共通域への移動によってスタック使用量を減らせても、プログラムのステップ数が少なくなるとは限りません。また、その変更によって分かりやすくなるとも述べられていません。この記述だけから、ステップ数の少なさと分かりやすさを重視しているとは判断できません。

学習のポイント

共通域を介した関数間の依存と、変更の影響範囲との関係を理解しましょう。

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

関連する過去問一覧

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