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