より高品質な車載ソフトウェアのコーディングを可能にする「MISRA C:2012」車載ソフトウェア(2/2 ページ)

» 2013年07月24日 09時00分 公開
[Paul Burden(PRQA),EE Times]
前のページへ 1|2       

ルール準拠と適合度判定

 MISRA Cやその他のコーディングガイドラインの利用が広がるとともに、「準拠」というものをどう定義するかが焦点になってきた。

 コーディングガイドラインのルールには、可能な限り守らなければならない必須の要件が幾つかある。

  • 明確かつ曖昧でない定義がなされていること
  • 静的には適合・非適合を明確にできること。あるいは、非適合部分が抽出できること
  • 判定可能であること

 高信頼で正確なルールの適度合判定を行う際に用いる静的解析ツールの機能にはばらつきがある。もし、認証されていないツールを使ってMISRA Cへの準拠を求める場合には、注意深く、詳細な検査が必要になる。

 つまり、コーディングルールに準拠するためには静的解析ツールの利用が必須になることもあるので、ツールの選択に際しては慎重な判断が求められる。コーディングルールに対する自動適合度判定の機能は、幾つかの理由から重要性が極めて高い。

  • 大幅な時間短縮が可能
  • 直接的であり、信頼性、再現性および一貫性が高い
  • マニュアル(目視)によるコード分析への依存度が減少し、担当者間の混乱や論議の種が少なくなる

 MISRA Cでは静的解析の重要性が常に強調されているが、多くのルールについてツールを用いた自動適合度判定処理が可能なことも特徴の1つとなっている。この自動処理についても、MISRA C:2012においてさまざまな手法で強化された。

ルールと指令の違い

 MISRA C:2012には143のルールと16の指令が含まれる。ルールは厳密に定義されているので、ソースコードの静的解析による適合度判定が可能である。指令は、厳密な定義はされておらず、設計ドキュメント、機能要求、ある範囲での課題の判定や解釈などに対する基準として参照すればよい。指令には次のようなものがある。

  • コード部分にはコメントを記載しないのが望ましい
  • アセンブリ言語は、覆い隠し、隔離するのが望ましい
  • ヘッダーファイルの内容が2回以上インクルードされることを防止するため、予防措置を講じるのが望ましい

ルールの適用範囲

 これは、準拠を求めるために解析が必要な範囲に対応する。幾つかのルールは、多くの場合にコードの一部分となっている「単一コンパイルユニット(single translation unit)」が適用範囲になっている。一方、コード全体に対する広範囲な解析を必要とするルールもある。

“決定可能”なルール

 幾つかのルールについては、明瞭な定義や高度なツールの利用によって準拠を示せることが認識されている。このようなコーディングルールは、と“決定可能(decidable)”なルールと呼ばれている。決定可能なルールは、理論的には、ルールからの逸脱を解析ツールによって疑いの余地なく決定できる。一方、決定可能でないルールは、解析ツールの利用とは関係なく、明確に逸脱を判定できない状況が生じる。

ルールの定義

 MISRA Cは長年にわたり広く利用されてきたが、その過程でアップデートにつながる貴重なフィードバックが行われた。現在、ルールはよりよく定義され、説明され、理論的根拠が与えられたので、ツールごとに解釈が異なるといった余地が極めて少なくなった。各ルールは幾つかのセクションから構成される。

  1. 敷衍(ふえん/Amplification):ルールの要求を詳細に説明
  2. 理論的根拠(Rationale):ルールが必要な理由を説明
  3. 例外(Exceptions):ルール要求が適用されない条件の定義
  4. 例(Examples):準拠するコードと準拠しないコードの例

MISRA C:2004に準拠した過去のコードはどうなるか?

 MISRA C:2012は、MISRA C:2004よりもボリュームが大きいが、ルールの数が著しく増加したわけではない。幾つかの新ルール(主としてC99関係)が追加され、少数のルールが削除されあるいは書き直された。しかし、ボリューム増加の要因は、ルールの説明と定義が改善されたことによるものだ。

 新しい要求もあるが、それらは比較的少なく、MISRA C:2004に準拠したコードは、ほとんど改変することなくMISRA C:2012に準拠できるとみられる。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.