このブログは「MISRA C:2023 / MISRA C++:2023 – looking beyond the obvious」を翻訳・一部加筆したものです。
MISRA標準は、CおよびC++言語ファミリーの様々なフレーバーに対するプログラミング・ガイドラインとしてよく知られ、確立されています。その使命は、「組み込み制御システムとスタンドアロン・ソフトウェアの開発において、世界をリードするベストプラクティス・ガイドラインを提供する」ことです(www.misra.org.uk)。このガイドラインは、安全性だけでなく、「静的解析セキュリティ・テスト」(SAST)の側面もカバーしています。この点については、Stefan Staiger-Stöhr博士による『MISRA CおよびMISRA C++ - more than just safety』をご参照ください。
長い間、MISRA C:2004とMISRA C++:2008は、多くのソフトウェア開発プロジェクトで最初の選択肢となってきました。しかし、ハードウェアや開発パラダイムとともにプログラミング言語が進化するにつれて、新しい言語機能を最新の開発で安全かつ確実に活用できるようにするために、規格の更新が必要となります。MISRA C:2012およびその改訂により、C言語の最新の動向が反映されました。C++に関しては、現在では「古い」規格は2003年からのC++を参照していますが、待望の新しいMISRA C++ガイドラインはC++17の機能をサポートしています。

Axivionのウェブ・フロントエンドにおけるオープン・ソース・プロジェクトのMISRA C++:2023違反の概要を示すサンプル・スクリーンショット
この新しい規格がリリースされ、すでにAxivion Suiteに実装された現在、私たちは「現場」での経験を集め始めています。この新規格は、「決定可能性」(ご存知の方も多いかと思いますが、念のため申し添えますと、「決定可能性」とは、ルールがより明確になり、「不確かな」調査結果の可能性が回避されることを意味します)や「実用的妥当性」(最新のC++を使用した安全プロジェクトにおける適用可能性)などの側面に関する最初のフィードバックは、非常に肯定的でした。今後数ヶ月間で、実装と規格の解釈の両面でさらなる最適化が行われると確信しています。
しかし、MISRAのルールセットは素晴らしく必要な出発点ではありますが、以下の例のように、考慮すべき点があります。
- 「開発中の」プロジェクト(MISRA C++:2008やAUTOSAR C++14ルールセットなどを適用)をどのように移行するか?
- 「流用元が混在している」プロジェクトはどのように扱えばよいか? 段階的に移行するのか、それとも「ビッグバン」で(一気に)移行するのか?
- レガシープロジェクトにおける新しい検出結果にどのように対処するのがベストか?
- マイグレーションやプロジェクト全体の品質には、どのような指標を適用できるのか、また適用すべきなのか?
- 「ソフトウェア・アーキテクチャ」や FFI (Freedom From Interference) といった、より高度なプロジェクトの側面をどのように管理するか?
- 静的テストと動的テストをどの程度組み合わせれば、(特に「決定不可能な」ルールに対する)作業負荷を軽減できるか?
これらの質問に対して、すべてのプロジェクトに通用する答えはありません。具体的な開発プロジェクトの背景を考慮しながら、個々に対応しなければなりません。しかし、実際にこれらの質問のいずれか、またはすべてを考えたことがあるでしょうか?
もし考えたことがなければ、ぜひ考えてみてください。MISRA標準に準拠する「だけ」を超えて、コードの質を劇的に向上させることに、きっと驚かれることでしょう。私たちには、上記の質問に対する最適な答えを見つけるためのツールと専門家がいますし、新しい標準への切り替えは、あなたが思っているほど複雑ではありません。セバスチャン・クリングス博士(Dr. Sebastian Krings)のブログでは、MISRA移行戦略を成功させるために留意すべき点を簡単に紹介しています。
そして、もしこのことについて考えたことがあるのなら、あなたの考えを聞いてみたい。何をどのようにしましたか? 最も困難だったことは何ですか? まだ疑問や懸念がありますか? 私たちはあなたの意見を聞き、あなたのプロジェクトを次のレベルに引き上げる手助けをしたいと思います。
Axivion Static Code AnalysisおよびAxivion Architecture Verificationの詳細については、Axivionを参照してください。
ご説明の打ち合わせをご希望の場合は、こちらからご連絡ください。
ウェビナーに参加して詳細を知る
「MISRA C++:2023 - C++プロジェクトにおける新規格の適用」に関するウェビナーに参加して、AxivionのMISRAチェッカーの詳細をご覧ください。
