MISRA(Motor Industry Software Reliability Association)は、安全・セキュリティに関連する電子システム、組み込み制御システム、ソフトウェア集約的アプリケーション、スタンドアロン・ソフトウェアの開発に関するガイドラインを提供しています。
MISRAは自動車メーカー、部品メーカー、エンジニアリング・コンサルタントの協働による活動であり、Ford Motor Company、Bentley Motors、Jaguar Land Rover、HORIBA MIRA、ZF TRW、リーズ大学が参加する運営委員会によって運営されています。
MISRAは自動車業界で誕生したものですが、航空宇宙、バイオメディカル、金融などの他業界でも受け入れられています。また、組み込みシステム、IoT、産業用制御システムの分野でも導入されています。MISRAへの準拠によって品質とセキュリティに関する問題をすべて解消できるわけではありませんが、作成するコードの堅牢性、保守性、移植性が向上します。
MISRAはコーディング・セキュリティ・スタンダードです。ISO 26262は機能安全の評価に着目し、ASILと呼ばれるリスク・クラスを定めています。
特に注目されるMISRAガイドラインは、CおよびC++プログラミング言語を使った開発プロジェクトに関するものです。これにはMISRA C 2004、MISRA C++ 2008、MISRA C 2012の規約が含まれます。
MISRAのガイドラインは「必須」、「必要」、「推奨」に分類されます。準拠要件では「必須」ガイドラインに違反することは許されませんが、「必要」ガイドラインについては文書で根拠を示せば一定の逸脱が認められます。こうした逸脱が認められるのは、安全性とセキュリティに影響がなく、許容可能な回避策が存在しない場合に限られます。例として、変更できないサードパーティーのカスタム・コードが挙げられます。
最近はアンチロック・ブレーキやパワーステアリングからナビゲーションやインフォテイメント・システムに至るまで、すべてソフトウェアで制御されています。そのシステムはそれぞれ異なるベンダーから提供されています。しかも、最終製品に至るまでにさまざまなベンダーがソフトウェア・コードに関わることでソフトウェアのサプライチェーンが長くなる傾向があります。
MISRA C/C++は車載システムのコーディング規約のデファクトスタンダードになっていますが、C++言語の最近の改善に対応しておらず、最新のセキュリティ侵害や脆弱性に関する情報も反映されていません。
2019年1月、MISRAは、AUTOSARのガイドラインを独自に策定したベストプラクティスと統合することにより、安全性に関するC++開発の統一された「決定版」言語サブセットを開発すると発表しました。MISRA主導のガイドラインには、言語の最新バージョン(AUTOSARのC++17)および提供開始になった際にはその後継バージョン(AUTOSARのC++20)に関する内容が盛り込まれる予定です。
統合されたMISRA–AUTOSAR C++ルールセットは、サプライチェーン全体にわたるすべての開発者が共通のルールセットを参照する、統一された業界標準が実現するでしょう。
最近の車には1億行以上のソフトウェア・コードが搭載されています。今後10年で平均的な車に搭載されるコードは3億行レベルに上る可能性があります。MISRAのコーディング・ガイドラインは以下の基準を満たすコードの開発を促進します。
MISRA準拠は単なるコーディング・ガイドラインではなく、ソフトウェアがサプライヤーから取得者へと移転する際のソフトウェアの品質基準を定義します。その準拠プロセスは堅牢性が高いうえに(C/C++コーディング・スタンダードをベースにしている)、実用的で、必要に応じて規約の例外への対処方法も説明しています。
シノプシスでは、車載ソフトウェアに対する攻撃に対抗するため、MISRA準拠の包括的でスケーラブルなCoverity静的解析ソリューションをご用意しています。