より高品質な車載ソフトウェアのコーディングを可能にする「MISRA C:2012」:車載ソフトウェア(2/2 ページ)
自動車の電子化が進展し、車載システムがより複雑になるにつれて、車載ソフトウェアの重要性はさらに高まっている。車載ソフトウェアの品質を高めるためのガイドラインであるMISRA Cの最新版MISRA C:2012が2013年3月に発表された。本稿では、MISRA C:2012における、従来版からのアップデート内容について解説する。
ルール準拠と適合度判定
MISRA Cやその他のコーディングガイドラインの利用が広がるとともに、「準拠」というものをどう定義するかが焦点になってきた。
コーディングガイドラインのルールには、可能な限り守らなければならない必須の要件が幾つかある。
- 明確かつ曖昧でない定義がなされていること
- 静的には適合・非適合を明確にできること。あるいは、非適合部分が抽出できること
- 判定可能であること
高信頼で正確なルールの適度合判定を行う際に用いる静的解析ツールの機能にはばらつきがある。もし、認証されていないツールを使ってMISRA Cへの準拠を求める場合には、注意深く、詳細な検査が必要になる。
つまり、コーディングルールに準拠するためには静的解析ツールの利用が必須になることもあるので、ツールの選択に際しては慎重な判断が求められる。コーディングルールに対する自動適合度判定の機能は、幾つかの理由から重要性が極めて高い。
- 大幅な時間短縮が可能
- 直接的であり、信頼性、再現性および一貫性が高い
- マニュアル(目視)によるコード分析への依存度が減少し、担当者間の混乱や論議の種が少なくなる
MISRA Cでは静的解析の重要性が常に強調されているが、多くのルールについてツールを用いた自動適合度判定処理が可能なことも特徴の1つとなっている。この自動処理についても、MISRA C:2012においてさまざまな手法で強化された。
ルールと指令の違い
MISRA C:2012には143のルールと16の指令が含まれる。ルールは厳密に定義されているので、ソースコードの静的解析による適合度判定が可能である。指令は、厳密な定義はされておらず、設計ドキュメント、機能要求、ある範囲での課題の判定や解釈などに対する基準として参照すればよい。指令には次のようなものがある。
- コード部分にはコメントを記載しないのが望ましい
- アセンブリ言語は、覆い隠し、隔離するのが望ましい
- ヘッダーファイルの内容が2回以上インクルードされることを防止するため、予防措置を講じるのが望ましい
ルールの適用範囲
これは、準拠を求めるために解析が必要な範囲に対応する。幾つかのルールは、多くの場合にコードの一部分となっている「単一コンパイルユニット(single translation unit)」が適用範囲になっている。一方、コード全体に対する広範囲な解析を必要とするルールもある。
“決定可能”なルール
幾つかのルールについては、明瞭な定義や高度なツールの利用によって準拠を示せることが認識されている。このようなコーディングルールは、と“決定可能(decidable)”なルールと呼ばれている。決定可能なルールは、理論的には、ルールからの逸脱を解析ツールによって疑いの余地なく決定できる。一方、決定可能でないルールは、解析ツールの利用とは関係なく、明確に逸脱を判定できない状況が生じる。
ルールの定義
MISRA Cは長年にわたり広く利用されてきたが、その過程でアップデートにつながる貴重なフィードバックが行われた。現在、ルールはよりよく定義され、説明され、理論的根拠が与えられたので、ツールごとに解釈が異なるといった余地が極めて少なくなった。各ルールは幾つかのセクションから構成される。
- 敷衍(ふえん/Amplification):ルールの要求を詳細に説明
- 理論的根拠(Rationale):ルールが必要な理由を説明
- 例外(Exceptions):ルール要求が適用されない条件の定義
- 例(Examples):準拠するコードと準拠しないコードの例
MISRA C:2004に準拠した過去のコードはどうなるか?
MISRA C:2012は、MISRA C:2004よりもボリュームが大きいが、ルールの数が著しく増加したわけではない。幾つかの新ルール(主としてC99関係)が追加され、少数のルールが削除されあるいは書き直された。しかし、ボリューム増加の要因は、ルールの説明と定義が改善されたことによるものだ。
新しい要求もあるが、それらは比較的少なく、MISRA C:2004に準拠したコードは、ほとんど改変することなくMISRA C:2012に準拠できるとみられる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 国際的なコーディングガイドラインを日本自動車工業会が拡張した理由
2013年3月に発行された、車載ソフトウェアのコーディングガイドラインのMISRA Cを拡張する「MISRA C ADC」。このMISRA C ADCの策定を主導したのが、国内自動車メーカーが加盟する日本自動車工業会のソフトウェア分科会である。同分科会の会長を務めるトヨタ自動車技範の窪田和彦氏に、MISRA C ADCを策定した経緯について聞いた。 - 車載ソフトの新ガイドライン「MISRA C ADC」、ISO26262対応と品質確保を同時実現
日本自動車工業会と欧州の自動車業界団体であるMISRAは、自動車向け機能安全規格であるISO 26262対応と車載ソフトウェアの信頼性や品質の確保を両立させることを目的に、新たなコーディングガイドラインとなる「MISRA C ADC」を策定した。MISRAの担当者に、策定の背景や狙いについて聞いた。 - ソースコード静的解析ツール「QA・C」がMISRA Cの最新バージョンをサポート
東陽テクニカは、同社が国内販売を手掛けるProgramming Researchのソースコード静的解析ツール「QA・C」が、2013年3月18日に発行されたばかりの最新のコーディングガイドライン「MISRA C:2012」をサポートすると発表した。