C++

MISRA C++:2023 がリリースされました

ISO_C++_Logo

2023年10月に MISRA から、MISRA C++:2023 がリリースされました。この記事では、MISRA-C++ を簡単に紹介します。

MISRA C++ とは

MISRA C++ は、自動車に搭載されるコンピュータのソフトウェアを C++ で開発する場合に、安全に書かれることを念頭においたガイドラインです。

C++ は、C 言語と比較すると文法は改良されています。それでも基本的にプログラマがやりたいことを妨げないため、危険な書き方ができます。危険な書き方を避けるためには、適切なガイドラインの適用が効果的です。

同じ MISRA から発行されているガイドラインとして MISRA C があります。この記事で紹介する MISRA C++ は、MISRA C の C++ 版と呼べるガイドラインです。

MISRA C の最新版 MISRA C:2023 はこの記事で紹介しています。

MISRA C++ の歴史

MISRA C++:2008

“Guidelines for the use of the C++ language in critical systems” として、2008年6月に発行されました。現在、MISRA サイトからは、この版は購入できません。(一方、MISRA C の過去バージョン(MISRA-C:1998、2004)は、MISRA サイトから購入できます。)

このガイドラインが扱う C++ は、C++03(ISO/IEC 14882:2003)となります。

ガイドラインのルール番号は、Rule XX-YY-ZZ の形式になっています。XX-YY は、ISO/IEC 14882 の章立てに準じています。このため Rule 19-3-1 の次のルールは、Rule 27-0-1 になっています。

自動車業界では、この時期は、まだ C++ でコーディングすることが少なかったです。このため、MISRA C と比較すると、引用される頻度はあまりなかった印象です。

AUTOSAR C++

車載ソフトウェアの共通化を目指す業界団体 AUTOSAR から “Guidelines for the use of the C++14 language in critical and safety-related systems” として、2017年3月に初版が発行されました。

AUTOSAR Adaptive Platform が C++14 を採用した関係で、このガイドラインが制定されました。このガイドラインの参照元のひとつが MISRA C++2008 となっています。Appendix A.1 に AUTOSAR C++14 と MISRA C++:2008 とのルールの関係が記述されています。

MISRA C++:2008 のガイドラインを流用したガイドラインは、 MXX-YY-ZZ という形式で、AUTOSAR C++ として追加したガイドラインは、AXX-YY-ZZ という識別子を付けています。

このガイドラインが扱う C++ は、C++14 に更新されました。なお、C++11/C++14 は、大きく文法面での改善がされて Modern C++ と呼ばれています。

MISRA C++:2023

“Guidelines for the use of C++17 in critical systems” として、2023年10月に発行されました。

序文(Forward)では、この版は、MISRA C++:2008 の更新に加えて、AUTOSAR C++ を統合したことが書かれています。

タイトルから分かる通り、ガイドラインが扱う C++ は、C++17 になっています。

ガイドラインを Directives と Rules に分けるなど、ガイドラインの構成は、MISRA C:2023 に合わせているようです。

最後に

2023年は、MISRA-C、MISRA-C++ 共に新しい版がでました。12月30日とぎりぎりですが、MISRA-C++ の紹介ができました。

まだ詳細まで読めていませんが、時間を見つけて理解するつもりです。来年の目標のひとつでしょうか。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA