特集
» 2013年07月24日 09時00分 UPDATE

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

自動車の電子化が進展し、車載システムがより複雑になるにつれて、車載ソフトウェアの重要性はさらに高まっている。車載ソフトウェアの品質を高めるためのガイドラインであるMISRA Cの最新版MISRA C:2012が2013年3月に発表された。本稿では、MISRA C:2012における、従来版からのアップデート内容について解説する。

[Paul Burden(PRQA),EE Times]
より高品質な車載ソフトウェアのコーディングを可能にする「MISRA C:2012」

 車載システムにおけるセーフティクリティカルな(安全性第一の)決定は、ますます車載ソフトウェアに依存するようになっている。それに合わせて、車載ソフトウェアの安全性に対するガイドラインが必須となってきた。車載ソフトウェアをC言語でコーディングする際のガイドラインであるMISRA Cはその1つだ。2013年3月に、MISRA Cの2012年版(MISRA C:2012)が発表されたので、本稿ではそのアップデート内容について解説する。

1998年に初版が発行されたMISRA C

 MISRA(Motor Industry Software Reliability Association)が1998年に発行したMISRA C(MISRA C:1998)の初版は、車載ソフトウェアの信頼性がクリティカルな課題になった状況の中で、ソフトウェア設計に十分な経験のないエンジニアが待ち望んでいたガイダンスとなった。MISRA Cの利用者は、当初は英国の自動車業界だけに限られていたが、その後急速に広がり、車載ソフトウェアの品質に関する業界標準になった。

 今日、第2版となる2004年に発行されたMISRA C(MISRA C:2004)は、自動車業界における車載ソフトウェア開発のほとんどの場面で利用されている。その他にも、世界中のあらゆる産業におけるセーフティクリティカルなソフトウェアの開発に適用されている。防衛、航空宇宙、鉄道、原子力発電、プロセス産業などとともに民生応用も含まれる。堅牢性の高いプログラミングが不可欠なあらゆる分野だ。

 このように、MISRA C:2004はC言語コーディングの標準的なガイドラインとして最も広く利用されているわけだが、新たにMISRA C:2012を策定したのには幾つか理由がある。C99のサポート、ユーザーからのフィードバックへの対応、改善可能性が確認されたこと、などだ。

 MISRA C:2004からMISRA C:2012のアップデートで加わった変更は大まかに分けて4つある。

  1. 言語:C言語の進歩に対応するため、MISRA C:2012では、C90標準に加えてC99標準をサポート
  2. ルールの分類:新しいクラスとして「必須ルール(Mandatory Rules)」の追加
  3. ルール準拠と適合度判定(enforceability):可能な場合には、常にルールの自動適合度判定(automatic enforcement)処理が可能なような拡張を施した
  4. 定義の改善:包括的な説明と理論的根拠を含み、より厳密に定義した

 以下に、これら4つの変更について説明する。

C99サポート

 C言語を用いたコーディングは現在も広く利用されており、特に信頼性が主要な関心事となるセーフティクリティカルなソフトウェアの開発で多用されている。

 MISRA C:2004を策定した2004年当時は、1999年に策定された最新のC言語の規格であるC99をサポートするコンパイラやツールがほとんどない状態だった。このため、MISRA C:1998と同様に、1990年に策定されたC90(ANSIではC89)に準拠することとした。

 しかし現在は、C99をサポートするための豊富なインフラが存在し、さまざまな知見も蓄積されている。そこで、MISRA C:2012の策定を始める段階で、C90への準拠を要求せず、C99のサポートを決めた。

 C99には、インライン関数や「_Bool型」のような便利な機能が追加された一方で、品質を確保しながらコーディングを行う上での新たな危険性がもたらされる可能性も出てきた。そこで、MISRA C:2012では、11のルールが新しく追加され、潜在的な危険性を有するC99の幾つかの新機能について使用が制限された。

ルールの分類

 MISRA C:2004において、ルールは2つのカテゴリーに分けられていた。「必要ルール(Required Rules)」と「推奨ルール(Advisory Rules)」である。

 MISRA Cに準拠したコーディングを行うためには、必要ルールに準拠しなければならない。そうでない場合には、必要ルールに準拠しないことの包括的な理由を説明する、公式の逸脱説明書(formal deviation)を提出する必要がある。これに対して、推奨ルールは柔軟に定義されており、公式の逸脱説明書は要求されない。

 MISRA C:2012では、新しく3番目のカテゴリーとして「必須ルール(Mandatory Rules)」が追加された。必須ルールは、逸脱説明書などによって準拠しないことが許されないもので、必ず準拠しなければならない。これは、必須ルールで指定されている内容が、準拠しないことを正当化できる状況がほとんど想定できないためである。

MISRA C:2004とMISRA C:2012の比較 MISRA C:2004とMISRA C:2012のルールの比較。MISRA C:2004には142のルールが、MISRA C:2012には143のルールと16の指令が存在する。また、MISRA C:2012では、逸脱が許されない「必須ルール(Mandatory Rules)」が追加されている
       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.