平成25年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問22
テクノロジ/開発技術JIS X 0180 では,組込みシステムのソフトウェアコード品質を信頼性,保守性,移植性及び効率性の四つの品質特性に分類して作法を定めている。作法に基づいて作成した組込みシステム開発プロジェクトのコーディング規約のうち,信頼性を意識したものとして適切なものはどれか。ここで,信頼性とは“ソフトウェアとしての誤った動作をしない,誤動作をしてもソフトウェア全体及びシステム全体の機能動作に影響を及ぼさない,誤動作が発生しても正常動作に速やかに復帰できる性質”を指す。
出典:平成25年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問22
- ア1 か所だけから呼び出されるサブルーチンは,インライン展開されるサブルーチンとして記述すること
- イハードウェアレジスタから読み出した値を除数として除算を行う前に,値が 0 でないことを必ず確認すること
- ウハードウェアレジスタのビット位置を,言語処理系に依存した記法を用いて定義しないこと
- エハードウェアレジスタへの設定値のうち,ハードウェアの仕様変更によって値の変更が予想される数値は,コード上に直接数値を記述せずに必ずマクロ表記を用いること
正解:イ
解説
設問の信頼性の定義(誤動作をしない,誤動作してもソフトウェア全体・システム全体に影響を及ぼさない,誤動作から速やかに復帰できる)に該当するのは,除算前にゼロ除算を防ぐ確認を行う規約です。ゼロ除算はプログラムの異常終了や誤動作を引き起こす典型的な原因であり,除算前に除数が0でないことを確認することは,誤った動作の発生自体を防ぐ,信頼性に直結したコーディング規約です。他の選択肢は,それぞれ効率性,移植性,保守性など,信頼性以外の品質特性に関連する規約です。
選択肢ごとの解説
- ア誤り。1か所だけから呼び出されるサブルーチンをインライン展開する規約は,主に実行効率(効率性)に関する規約であり,誤動作の防止に直接関係する信頼性の規約ではありません。
- イ正しい。除算前に除数(ハードウェアレジスタから読み出した値)が0でないことを確認することは,ゼロ除算による誤動作の発生そのものを防ぐための規約であり,信頼性を意識した規約です。
- ウ誤り。ハードウェアレジスタのビット位置を言語処理系に依存しない記法で定義する規約は,異なる言語処理系間でのコードの移植性を高めるための規約です。
- エ誤り。仕様変更が予想される数値をマクロ表記で記述する規約は,値の変更時にコードの該当箇所を容易に修正できるようにするための保守性に関する規約です。