平成21年度 秋期 午前Ⅱ 問5
設計
結合度に関する問題
あるプログラム言語の解説書の中に次の記述がある。この記述中の“良いプログラム”がもっている特徴はどれか。
このプログラム言語では,関数を呼び出すときに引数を保持するためにスタックが使用される。引数で受け渡すデータを,どの関数からでも参照できる共通域に移せば,スタックの使用量を減らすことができるが,“良いプログラム”とは見なされないこともある。
- ア実行するときのメモリの使用量が,一定以下に必ず収まる。
- イ実行速度について,最適化が行われている。
- ウプログラムの一部(モジュール)を変更しても,残りの部分への影響が少ない。
- エプログラムのステップ数が少なく,分かりやすい。
答えと解説を見る
✓ これが正解ウプログラムの一部(モジュール)を変更しても,残りの部分への影響が少ない。
解説
モジュールの変更が、ほかへ影響しにくいプログラムです。
記述の要点は、引数で渡すデータをどの関数からでも参照できる共通域に移すとスタックの使用量は減るが、それでも良いとは見なされない、という点です。共通域を介してデータを受け渡すと、多くのモジュールが同じデータに依存し、モジュール同士の結合度が強くなります。すると、ある関数で共通域の使い方を変えたとき、その領域を参照する別の関数にまで影響が広がります。引数で必要なデータだけを受け渡す形は、モジュールの独立性を保ち、一部を変えても残りへの影響を小さく抑えます。メモリを節約できる書き方をあえて退けている理由は何かと考えると、変更の影響範囲、つまり独立性が評価の基準になっていると分かります。
ほかの選択肢はなぜ違うのか
- ア実行するときのメモリの使用量が,一定以下…:記述では、共通域を使えばスタックの使用量を減らせるのに、その方法を良いとは見なしていません。メモリ使用量を抑えることが基準なら共通域の方式が選ばれるはずなので、この基準とは逆の向きになります。
- イ実行速度について,最適化が行われている。:実行速度の最適化については、記述の中で何も触れていません。評価が分かれているのは、データを引数で渡すか共通域に置くかというモジュール間の受け渡し方であり、速度の観点から良し悪しを述べた文ではありません。
- エプログラムのステップ数が少なく,分かりや…:ステップ数の少なさや分かりやすさは、記述で比べている点ではありません。共通域に移すかどうかは命令の数よりもモジュール同士の依存の強さに関わる話なので、この特徴を指しているとは読めません。
この問題の用語
- プログラム言語プログラムを書くための文法や記号の体系のこと。目的に合わせて多くの種類があり、Java、C、Pythonなどがよく使われます。
出典:平成21年度 秋期 システムアーキテクト試験 午前Ⅱ 問5
同じ用語が出る問題
- 令和5年度 春期 午前Ⅱ 問6:デザインパターンの説明(プログラム言語)
- 令和3年度 春期 午前Ⅱ 問5:マイクロサービスに関する問題(プログラム言語)
- 令和元年度 秋期 午前Ⅱ 問5:結合度に関する問題(プログラム言語)
- 平成25年度 秋期 午前Ⅱ 問17:プログラムマネジメントの考え方(プログラム言語)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)