エンベデッドシステムスペシャリスト 2013年 午前2 問22
問題文
JIS X 0180では、組込みシステムのソフトウェアコード品質を信頼性、保守性、移植性及び効率性の四つの品質特性に分類して作法を定めている。作法に基づいて作成した組込みシステム開発プロジェクトのコーディング規約のうち、信頼性を意識したものとして適切なものはどれか。ここで、信頼性とは“ソフトウェアとしての誤った動作をしない、誤動作をしてもソフトウェア全体及びシステム全体の機能動作に影響を及ぼさない、誤動作が発生しても正常動作に速やかに復帰できる性質”を指す。
選択肢
ア:1か所だけから呼び出されるサブルーチンは、インライン展開されるサブルーチンとして記述すること
イ:ハードウェアレジスタから読み出した値を除数として除算を行う前に、値が0でないことを必ず確認すること(正解)
ウ:ハードウェアレジスタのビット位置を、言語処理系に依存した記法を用いて定義しないこと
エ:ハードウェアレジスタへの設定値のうち、ハードウェアの仕様変更によって値の変更が予想される数値は、コード上に直接数値を記述せずに必ずマクロ表記を用いること
🔒 解説は解答すると表示されます
組込みコードの信頼性【午前2解説】
正解の理由
信頼性とは、ソフトウェアが誤動作しにくく、誤動作した場合もシステムへの影響を抑え、正常な状態に戻りやすい性質です。
ハードウェアレジスタから読み出した値を除数に使う場合、その値が0だと除算エラーが発生する可能性があります。除算の前に0でないことを確認すれば、このような異常を防ぎ、誤動作がシステム全体に及ぶリスクを抑えられます。そのため、信頼性を意識した規約として適切なのはイです。
解法ステップ
- 設問に示された信頼性の定義を確認します。ポイントは「誤った動作をしない」「誤動作の影響を抑える」ことです。
- 各選択肢が、異常の予防、移植性、保守性、効率性のどれに関係するかを考えます。
- 実行時の異常を直接防止する規約を選びます。0除算を事前に防ぐイが該当します。
選択肢別の誤答解説
- ア:1か所だけから呼び出されるサブルーチンをインライン展開すると、呼出しのオーバーヘッドを減らせる場合があります。主に実行効率に関する内容です。
- イ:除数が0でないことを確認し、除算エラーを防止します。ソフトウェアの誤動作を未然に防ぐため、信頼性に関する内容です。
- ウ:言語処理系に依存する記法を避けることで、異なる処理系や環境への移植をしやすくします。主に移植性に関する内容です。
- エ:変更が予想される数値をマクロでまとめると、仕様変更時に修正箇所を管理しやすくなります。主に保守性に関する内容です。
よくある誤解
- 「マクロを使うと品質が高まるので、信頼性の規約である」
マクロ化は変更や管理を容易にする目的が中心です。この選択肢では、保守性との関係が強いと判断します。 - 「ハードウェアレジスタの値は仕様で決まっているため、確認は不要である」
レジスタの値は状況によって変化することがあります。入力値として扱い、異常な値を事前に確認することが重要です。 - 「信頼性は、故障が起きた後の復旧だけを指す」
誤動作を起こさないための予防も、信頼性を高める重要な対策です。
補足コラム
品質特性を見分けるときは、規約が何を改善するのかに注目すると整理しやすくなります。異常や誤動作を防ぐなら信頼性、変更しやすくするなら保守性、環境の違いに対応しやすくするなら移植性、処理を速くしたり資源を効率よく使ったりするなら効率性が中心です。
FAQ
Q. 除数が0でないことを確認するだけで、信頼性を確保できますか?
A. それだけで信頼性全体を保証できるわけではありません。ただし、0除算という具体的な誤動作を防ぐ対策として有効です。
A. それだけで信頼性全体を保証できるわけではありません。ただし、0除算という具体的な誤動作を防ぐ対策として有効です。
Q. レジスタの値をマクロで定義することは、信頼性に関係しませんか?
A. 間接的に信頼性に役立つ場合はありますが、この設問では、変更への対応を容易にする保守性の規約として捉えるのが適切です。
A. 間接的に信頼性に役立つ場合はありますが、この設問では、変更への対応を容易にする保守性の規約として捉えるのが適切です。
関連キーワード: 信頼性、保守性、移植性、効率性、0除算、ハードウェアレジスタ

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

