戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2009年 春期 午後 問02


ソフトウェア製品の品質特性に関する次の記述を読んで、設問に答えよ。

 JIS X 0129-1では、ソフトウェア製品の品質について、表1に示す六つの品質特性を定めている。
基本情報技術者試験(平成21年 午後 問2 表1)
 これらの品質特性のうち、コーディングの段階では、信頼性、効率性、保守性、移植性を考慮することが大切である。    あるソフトウェア開発会社では、開発するソフトウェア製品の品質向上を図るため、品質特性を考慮したプログラム開発の社内標準を制定し、作成したプログラムのコードレビュー体制を確立した。  表2は、最近のコードレビューで新人のプログラム開発担当者が受けた指摘の例である。

設問1:

問題文を見る
 表2中のに入れる正しい答えを、解答群の中から選べ。   a, eに関する解答群  ア:移植性(環境適応性)  イ:効率性(資源効率性)  ウ:信頼性(成熟性)  エ:保守性(解析性)  オ:保守性(変更性)   bに関する解答群 基本情報技術者試験(平成21年 午後 問2 設問 bに関する解答群)
cに関する解答群  ア:更新した時点で障害と分かるが、ログを記録する機能のあるOSは少ない  イ:更新した時点で障害と分かるが、ログを記録する機能のあるハードウェアは少ない  ウ:更新内容を後で参照したときに障害となることが多く、原因箇所の特定が困難である  エ:取得可能な主記憶域が残っている間は、障害を検知できない   dに関する解答群  ア:指定できる変数や関数の個数  イ:変数や関数の型宣言で省略した場合のビット数  ウ:リンカで扱える関数のビット数  エ:ローダで扱える関数の個数

模範解答

a:ウ、b:イ、c:ウ、d:イ、e:ア

解説

解答の導き方

表2では、プログラムのどこに問題があり、直すとどの品質が向上するかを考えます。品質特性とは、ソフトウェアの品質をいくつかの観点に分けたものです。
a:0による割り算を防ぐ処理
最初の例では、合計を件数で割って平均を求めています。件数が0のまま割り算をすると、計算できずにプログラムが正常に動かなくなることがあります。
そこで、Countが0より大きい場合だけ割り算を行い、そうでなければAveに0を設定しています。このように、プログラムの不具合による障害を起こしにくくすることは、信頼性の向上につながります。
信頼性の副特性である成熟性は、ソフトウェアが障害を起こしにくい性質です。したがって、aは**信頼性(成熟性)**です。
b:同じ計算を何度も行わない処理
このプログラムでは、rごとに、内側のループでcを変えながら配列Xの値を確認しています。配列は、複数の値を順番に並べて扱う仕組みです。
Sub(r)は計算時間が長い一方、返却値は引数だけに依存するとあります。rが同じ間は、内側のループでcが変わってもSub(r)の結果は変わりません。そのため、内側のループのたびにSub(r)を計算する必要はありません。
選択肢イでは、外側のループでSub(r) + 1をS1に入れてから、内側のループでその値を繰り返し使います。これなら、同じrについてSub(r)を一度だけ計算すれば済みます。計算時間を短くするための変更なので、効率性のうち時間効率性に当たります。
ほかの選択肢では、アは内側のループでSub(r)を毎回計算するため、時間のかかる処理を減らせません。また、ウとエはX[r, c]の値をXrcに移してから書き換えていますが、示された処理だけでは、書き換えた値が配列Xに戻りません。元の処理と同じ更新にならないため、適切ではありません。
c:動的に取得した記憶域を誤って扱う問題
主記憶は、プログラムの実行中にデータを置いておく記憶域です。動的取得は、プログラムの実行中に必要な記憶域を確保すること、動的開放は、不要になった記憶域を返すことです。
取得した範囲外や、すでに開放した記憶域を書き換えても、その場ではすぐに障害が起きるとは限りません。別のデータを壊し、そのデータを後から使ったときに問題が表面化することがあります。その場合、原因となった書き込みを見つけるのが難しくなります。
選択肢ウの「更新内容を後で参照したときに障害となることが多く、原因箇所の特定が困難である」が、この状況に当たります。デバッグ機能付きの関数を使えば、こうした誤りを見つけやすくでき、試験性の向上につながります。
d:型宣言でビット数を省略した場合の違い
型宣言は、変数や関数がどの種類の値を扱うかを示すものです。整数型のビット数が機種によって異なると、同じプログラムでも、扱える値の範囲や計算結果に違いが出ることがあります。
そこで、機種の違いに左右されないように、型宣言を32ビット整数型と明示するよう求めています。問題文の「型宣言で省略した場合のビット数」が機種によって異なる、という説明に合うのは選択肢イです。
e:機種の違いに合わせて使える性質
dのように整数型のビット数を機種に任せると、機種を変えたときにプログラムの動作が変わるおそれがあります。機種が変わっても同じように使えるように、型を明示することは、ある環境から別の環境へ移せる性質に関係します。
移植性の副特性のうち、異なる環境に適応できる性質は環境適応性です。したがって、eは**移植性(環境適応性)**です。

誤りやすいポイント

  • aの処理は、計算結果を正しくするだけでなく、0による割り算でプログラムが止まるのを防いでいます。障害を起こしにくくする点に注目します。
  • bでは、Sub(r)の結果がrだけで決まることが手掛かりです。内側のループで変わるcに依存しないため、計算を外側のループに移せます。
  • cでは、誤った書き込みがあった時点ですぐ障害になるとは限りません。後でデータを使ったときに問題が起き、原因を見つけにくくなる点が重要です。
  • dは、整数型を明示する理由と、改善される品質特性を分けて考えます。型のビット数の違いが原因で、別の機種に移したときに問題が起きるため、eは移植性に関係します。

FAQ

Q: aの「成熟性」と、cの「試験性」はどう違いますか?
A: 成熟性は、プログラムが障害を起こしにくい性質です。試験性は、テストやデバッグで問題を見つけやすい性質です。aは障害を防ぐ処理で、cは誤りを見つけやすくする処理です。
Q: bでは、Sub(r)の計算をどこへ移せばよいですか?
A: 外側のループの中で、内側のループが始まる前に計算します。すると、同じrについては計算結果を使い回せます。
Q: dで32ビット整数型を明示すると、なぜ移植性が高まるのですか?
A: 機種による型のビット数の違いを避けやすくなるためです。異なる機種でも、同じ大きさの整数として扱えるようになります。

関連キーワード: 品質特性、信頼性、時間効率性、動的メモリ管理、試験性、移植性

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

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

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について