システムアーキテクト試験 2019年 午前205


あるブログラム言語によるブログラミングの解説書の中に次の記述がある。この記述中の“良いプログラム”がもっている特性はどれか。このブログラム言語では、関数を呼び出すときに引数を保持するためにスタックが使用される。オプションの指定によって、引数で受け渡すデータをどの関数からでも参照できる共通域に移して、スタックの使用量を減らすことは可能だが、“良いプログラム”とは見なされないこともある。
実行するときのメモリの使用量が、一定以下に必ず収まる。
実行速度が高速になる。
プログラムのステップ数が少なく、分かりやすい。
プログラムの一部(関数)を変更しても、他の関数への影響が少ない。(正解)

解説

あるブログラム言語の“良いプログラム”の特性はどれか【午前2 解説】

要点まとめ

  • 結論:良いプログラムは関数の変更が他に影響しにくい設計であることが重要です。
  • 根拠:共通域を多用すると関数間の依存が強まり、変更時の影響範囲が広がるため避けられます。
  • 差がつくポイント:スタック使用量削減よりも、プログラムの保守性や独立性を重視する視点が求められます。

正解の理由

選択肢ウ「プログラムの一部(関数)を変更しても、他の関数への影響が少ない」が正解です。
問題文では、引数を共通域に移すことでスタック使用量は減るが「良いプログラムとは見なされない」とあります。これは共通域の使用が関数間の結合度を高め、変更時の影響範囲が広がるためです。
良いプログラムは関数が独立しており、変更が局所的に済むことが望ましいため、ウが最も適切な特性です。

よくある誤解

共通域を使うとメモリ効率や速度が良くなるため良いと考えがちですが、保守性や影響範囲の観点では逆効果になることがあります。

解法ステップ

  1. 問題文の「共通域に移すと良いプログラムとは見なされない」部分に注目する。
  2. 共通域の使用が関数間の依存を強めることを理解する。
  3. 良いプログラムの特性として「変更の影響が少ない」ことを思い出す。
  4. 選択肢の中で「関数の変更が他に影響しにくい」ウを選ぶ。

選択肢別の誤答解説

  • ア:メモリ使用量が一定以下に収まることは良いが、問題文はスタック使用量削減が必ずしも良いとは限らないと述べている。
  • イ:実行速度が速くなるとは限らず、共通域の使用は速度向上の保証にはならない。
  • :関数の独立性が高く、変更の影響が少ないため良いプログラムの特性に合致する。
  • エ:ステップ数の少なさや分かりやすさは重要だが、問題文の焦点は関数間の影響範囲にある。

補足コラム

共通域(グローバル変数など)を多用すると、プログラムの結合度が高まり、バグの原因や保守コストが増加します。モジュール設計や関数の独立性を保つことはソフトウェア品質向上の基本原則です。スタックを使った引数の受け渡しは関数の独立性を保つための重要な仕組みの一つです。

FAQ

Q: なぜ共通域の使用は良いプログラムと見なされないのですか?
A: 共通域は複数の関数から参照・変更されるため、変更の影響範囲が広がり保守性が低下するからです。
Q: スタックを使う引数の受け渡しはどんな利点がありますか?
A: 関数ごとに独立した引数領域を持つため、関数の独立性が保たれ、変更の影響が局所化されます。

関連キーワード: 関数の独立性, 共通域, スタック, 保守性, プログラム設計
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ