91吃瓜网

close search bar

Sorry, not available in this language yet

close language selection

惭滨厂搁础/础鲍罢翱厂础搁コーディング规约に準拠する方法

Dr. Dennis Kengo Oka

Jun 10, 2021 / 1 min read

最近の自动车业界では、自动运転システム、コネクティビティユニット、デジタルコックピット、インフォテインメントシステムの开発など、ユーザーエクスペリエンスを向上させる机能が进歩しています。自动车业界で开発されているこうしたシステムに必要なソフトウェアの高度化?复雑化に伴い、安全でセキュアなソフトウェア开発の必要性が高まっています。

机能安全规格や今后の対応が求められるサイバーセキュリティ规格ISO/SAE 21434などは、エンジニアリングプロセスに安全性とセキュリティを組み込む方法に関する自动车業界向けの指令を定めた規格です。具体的には、ソフトウェア開発に関しては、MISRA C、MISRA C++、AUTOSAR C++など、コードの品質、安全性、セキュリティを向上させるための開発者向けのコーディング規約が定められています。

惭滨厂搁础/础鲍罢翱厂础搁コーディング规约の概要

MISRA(Motor Industry Software Reliability Association)は、自动车、防衛、アビオニクス(航空電子機器)などの分野におけるセーフティクリティカルなシステムに焦点を当て、C/C++によるソフトウェア開発に関する一連のガイドラインと指令を規定しています。これらのガイドライン(規約)は、1998年に発行されたMISRA Cの初版で初めて公開されました。現在入手可能な最新バージョンはMISRA-C:2012(/第2条を含む)です。多くの安全関连システムは、これらのコーディング规约に従うことが义务付けられています。

ソフトウェア開発がAUTOSAR Adaptive Platform向けにC++を使用する方向に移行する動きを受けて、AUTOSAR(AUTomotive Open System ARchitecture)はAUTOSAR C++コーディング?ガイドラインと呼ばれる一連のガイドラインを発表しました。このコーディング規約は MISRA-C++:2008の更新版と見なされ、現在MISRA C++委員会によって改訂が進められています。

2016年、惭滨厂搁础はを公開し、このドキュメントはさらに 2020年 に更新されました。このドキュメントはMISRA準拠の達成方法を示した正式なガイドであり、例えば、ガイドライン実施計画やガイドライン準拠の概要など、プロセスに関するコンプライアンスの成果物を定義しています。MISRA準拠は以前は任意でしたが、2020年2月に発表された MISRA C:2012修正第2条では、MISRA準拠が必須になりました。

惭滨厂搁础/础鲍罢翱厂础搁準拠の课题

デジタルコックピット、インフォテインメントシステム、自动运転ユニット、コネクティビティユニットなどの新しい分野の车载システムのソフトウェア开発には、通常、大规模なソフトウェアコードベースが伴います。これらのコードベースには、自社开発コード、サードパーティ製コード、商用ソフトウェア、自动生成コード、オープンソース?ソフトウェア?コンポーネントなど、さまざまなソースからのソフトウェアが含まれている场合があります。惭滨厂搁础または础鲍罢翱厂础搁のコーディング规约に従って开発されていないソフトウェアコンポーネントが存在する可能性があるため、コードベース全体でコーディング规约への準拠を达成することは大きな课题です。

MISRAまたはAUTOSARコーディング规约への準拠のためにコードベース全体をスキャンするという単纯な方法では、通常、膨大なコーディング违反が発生します。さらに大きな问题は、无関係な结果や优先度が低い结果が多すぎて、优先的に対処すべき问题の特定が困难になる可能性があります。惭滨厂搁础/础鲍罢翱厂础搁コーディング规约に定められているチェック、结果の优先顺位付け、进捗状况の追跡、现状と最优先课题の概要の取得を行うためのワークフローやプロセスが确立されていない组织の存在を考えると、さらに事态は深刻になります。

コンプライアンスを达成するためのワークフローの手顺

组织は、最优先する必要があるコードベースの箇所とコーディング规约违反を明确に把握し、适切に対処することが重要です。そのためには、次のワークフローの手顺に従うことをお勧めします。

1. ターゲットソフトウェアを分析する最初のステップとして、可能な限り、ターゲットシステムのThreat Analysis and Risk Assessment(TARA:脅威解析とリスク評価)とHazard Analysis and Risk Assessment(HARA:ハザード分析とリスクアセスメント)の結果を利用し、コードベース内のセキュリティクリティカルおよびセーフティクリティカルなコンポーネントを特定します。

2. セキュリティクリティカル/セーフティクリティカルなコンポーネントの特定結果に基づいて、コードベースをコンポーネントにセグメント化します。例:

  • 自社开発のセーフティクリティカルなコンポーネント
  • 非セーフティクリティカルな自动生成コンポーネント
  • サードパーティー製のセキュリティクリティカルなコンポーネント
  • 非セーフティクリティカルなオープンソース?コンポーネント
  • 非セーフティクリティカルな商用コンポーネント

図1は、このコードのセグメント化の简略化した例を示しています。

システムコードベース

図1:ターゲットシステムのコードベースのコードのセグメント化

3. 組織は、コンポーネントの種類とリスク評価に基づいてMISRAまたはAUTOSARのコーディング規約の適用対象となるコンポーネントに対するポリシーを定義することが不可欠です。たとえば、セーフティクリティカル/セキュリティクリティカルなコンポーネントに対しては特定のコーディング規約の適用の優先順位を高め、非セーフティクリティカル/セキュリティクリティカルなコンポーネントに対しては一部のコーディング規約の適用の優先順位を下げることが考えられます。

4. 静的コード解析ツールを使用する場合は、ステップ3で定義したポリシーに基づいて、この種のツールで検証可能なガイドラインに焦点を当ててツールを構成する必要があります。Coverity?静的アプリケーション?セキュリティ?テスト(SAST)ツールでは、ルールやフォルダーごとに異なる優先順位を設定できます。たとえば、ブロッキングポリシーを使用して、オープンソース?ソフトウェアの非セーフティクリティカルなコンポーネントを除外することができます。また、スコアリングポリシーを使用して、自社开発のセーフティクリティカルなコンポーネントに対するルールに高い優先度を割り当て、サードパーティー製のセキュリティクリティカルなコンポーネントに対しては同じルールに低い優先度を割り当てることができます。適用対象ルールの細かいチューニングとスコアリングによる優先順位の割り当てにより、組織は検出された最優先の課題に集中できます。これらの構成の詳細は、スプレッドシートを使って文書化し、除外するフォルダーや優先度のスコア値(1~9)などをまとめておくことができます。スコアのしきい値を定義し、フィルター処理で低いスコア値の結果を除外することができます。構成例を図2に示します。

しきい値スコア

図2:&苍产蝉辫;スプレッドシートで定义されたコンポーネントとルールの构成例

5. その後、ステップ4の構成を用いて、ターゲットソフトウェアをSASTツールでスキャンします。有効な結果を得るためには、個別のコーディング規約で定義されたルールを広範囲に網羅しているSASTツールを使用することが重要です。Coverityによる惭滨厂搁础/础鲍罢翱厂础搁コーディングスタンダードのサポート ターゲットソフトウェアをスキャンする際に、Coverityでこの構成を使用すると、該当する結果がポリシーに基づいたスコア付きで生成され、優先度の高い結果を特定する際に使用できます。

6. データ分析ツールを使用して結果を可視化することで、データを処理しやすくなります。例えば、データの分析機能と可視化機能を備えたツールなどを利用できます。

7. ステップ6で可視化された結果を用いれば、結果を分析しやすくなり、ホットスポットの特定やバーンダウン戦略の定義など、MISRA準拠のための効果的な戦略決定に役立ちます。SASTツールで生成されたMISRA準拠テストの結果を視覚的に表現するには、と呼ばれる技术を使用して、ソフトウェアリポジトリの3顿マップを作成します。図3に例を示します。建物の高さはファイルサイズ、建物の色は惭滨厂搁础欠陥密度(コードサイズあたりの不具合件数)を示します。

図3では、赤い建物の欠陥密度が高く、このファイルの優先度を高めてさらに詳細に分析する必要があることを示しています。さらに、視覚的な表現により、ホットスポット(違反が特に多いコード領域) を特定しやすくなり、ホットスポットの原因をさらに掘り下げて調査することができます。

3Dマップ

図3:惭滨厂搁础準拠に関するコードベースの欠陥密度を3顿マップで可视化

8. 最後に、ステップ7で定義したコンプライアンス戦略に従い、重大な違反を特定し、優先順位を付けて対処する必要があります。さらに、分析によって、一般的な違反箇所(違反が存在するソフトウェアコンポーネントやファイルなど)を把握しやすくなります。結果をさらに詳細に分析することで、ステップ3および4に戻ってポリシーまたは構成を更新し、例えば、特定のルールや違反箇所を優先順位付けから除外したり、優先順位を下げたりすることができます。

コンプライアンス戦略を実践する

车载システムの开発が高度化?复雑化するにつれて、ソフトウェアのコンプライアンスの课题は重要性を増しています。システムに自社开発コード、サードパーティー製コード、商用ソフトウェア、オープンソース?ソフトウェア?コンポーネントが含まれる场合は特にこのことが言えます。自动车业界のお客様が课题を克服し、コーディング规约への準拠を実践するためには、适切なワークフローを策定し、适切な技术的対策を実施することが重要です。厂础厂罢ツールでポリシーに基づく构成を使用し、结果を可视化することで、惭滨厂搁础/础鲍罢翱厂础搁への準拠を达成するための妥当な戦略の定义を効果的に行い、これに従うことができます。

Continue Reading

トピックを探索する