MISRA-C

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

MISRA CMISRA (Motor Industry Software Reliability Association)が開発したC言語のためのソフトウェア設計標準規格である。ANSI/ISO/IEC規格のC言語で記述する組み込みシステムで、安全性と可搬性(移植性)と信頼性を確保することを目的としている。C言語規格では、処理系定義,未定義,未規定など、CPUの種類に関わらずに移植できるようにするために、CPU,コンパイラごとに取り決めをする事項が多い。そのため,あるCPU向けのC言語プログラムが、他のCPUでは異なる結果を出すことがしばしばある。C Puzzle Book、C言語の落とし穴という本に掲載のプログラムを実行してみるとよくわかる。

関連文書と経緯[編集]

Matlab から自動生成(autocode)したプログラムに対するMisra AutoCode,C++言語に対応するMISRA C++の手引きもある。Safer CのようなCPUに依存しないCプログラムの書き方と、C言語の落とし穴のような間違い易い機能を回避した書き方を推奨している。自動車業界に道具を治めている道具提供者などが作ったMISRA Cであるが、現在は他業界に広く普及している。

MISRA C規格の初版「Guidelines for the use of the C language in vehicle based software」(乗用車基本ソフトでC言語を利用するための手引き)を1998年に出版し、MISRA-C:1998と呼ぶ。[1]

2004年に第2版「Guidelines for the use of the C language in critical systems」(クリティカルシステムでC言語を利用するための手引き)をMISRA-C:2004として出版し、2つの規則間の矛盾,規則番号を見直すなど手引きに本質的な変更をした。

MISRA-Cは規則を守ることだけが目的ではなく、逸脱した方が信頼性が高い場合には文書化することを推奨している。逸脱の手続きをどのようにとるとよいかについての文書として、Approved Deviation Compliance(ADC)を作成している。ADC version 1.0は MISRA Forumからダウンロードできる。

C99を取り扱うように手引きを改定し、MISRA-C:2012を発行した。 MISRA-CはC言語標準の未規定、未定義、処理系定義などに基づいており、C言語標準は有料で販売しているが、審議用の文書はISO/IEC JTC2 SC22 WG14で公開しており、内容を検討するのには十分である。[2] MISRA C文書は有料で販売している[3]。 また、規則を含む解説書を[SESSAME]のMISRA-C研究会が作成し、日本規格協会から発行している。また、解説書の誤植はSESSAMEのWEBに掲載している。

ルール[編集]

MISRA-C:1998は127件の規則があり、うち93件が必須事項、34件が推奨事項となっている。規則には1から127までの連番が割り振られている。

MISRA-C:2004は141件の規則があり、うち121件が必須事項、20件が推奨事項となっている。これらは「環境」や「ランタイム機能」などの21分類している。

MISRA-C:2012は143件の規則があり、うち10件が義務、101件が必須、32件が推奨事項となっている。

ツール[編集]

「MISRA規格に適合している」ことを売りにしているコード検査ツールが数多く存在するが、MISRAは第三者による許認可の仕組みを持っていないため自己宣言である。[4]

MISRAツールを利用者が評価して比較できるようにするMISRA-C:2004及びMISRA-C:2012の例題プログラムをMISRA掲示板[5]でダウンロードできる。

大半の手引きは静的コード解析を実行できるツールによって検査できる。それ以外の手引きについては動的なコード分析の機能が必要になる。

書籍[編集]

  • 組込み開発者におくるMISRA‐C―組込みプログラミングの高信頼化ガイド(MISRA-C:1998対応)日本規格協会, ISBN 978-4542503342
  • 組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド日本規格協会, ISBN 978-4542503465

脚注[編集]

  1. ^ 序文
  2. ^ "WG15N1570"
  3. ^ "MISRA Cの購入"
  4. ^ FAQ
  5. ^ MISRA Forum