Main Content

モデルのサイズと複雑度を ISO 26262 に対して評価する

モデル保守性ダッシュボードを使用して、モデルのサイズと複雑度を ISO 26262-6:2018 に基づいて評価できます。ダッシュボードはプロジェクトの設計アーティファクトを監視し、ソフトウェア ユニットとソフトウェア コンポーネントのそれぞれのサイズ、複雑度、アーキテクチャについての概要を提供します。ダッシュボードは次のものを提供します。

  • ISO 26262-6:2018、Clause 5.4.3 の表に基づいたモデル レベルでの複雑度についての品質メトリクス

  • ISO 26262-6:2018、Clause 7.4.3 の表に基づいたソフトウェア コンポーネントの構造、サイズ、複雑度、およびインターフェイスのサイズについての品質メトリクス

  • ソフトウェア ユニットとソフトウェア コンポーネント別に整理された、プロジェクト内の設計アーティファクトの一覧

設計アーティファクトで低い複雑度とサイズを適用しやすくするには、モデル保守性ダッシュボードを使用して、以下の自動および手動での確認手順に従います。

モデル保守性ダッシュボードを開く

モデル保守性ダッシュボードを使用して設計アーティファクトを解析するには、以下を行います。

  1. 設計アーティファクトを含むプロジェクトを開きます。この例では、MATLAB® コマンド ウィンドウで次のように入力します。

    openExample("slcheck/ExploreTestingMetricDataInModelTestingDashboardExample");
    openProject("cc_CruiseControl");

  2. モデル保守性ダッシュボードを開くには、以下のいずれかの方法を使用します。

    • [プロジェクト] タブの [ツール] セクションで、[モデル設計ダッシュボード] をクリックします。

    • プロジェクトでモデルを開き、[アプリ] ギャラリーで [モデル設計ダッシュボード] をクリックします。

    • コマンド ウィンドウで次を入力します。

      modelDesignDashboard

    ダッシュボード ウィンドウが起動し、ソフトウェア コンポーネント cc_CruiseControl のための新しい [Model Maintainability] タブが開きます。

ダッシュボード ウィジェットは、設計内のソフトウェア ユニットとソフトウェア コンポーネントのそれぞれに関連付けられた設計アーティファクトについて、サイズ、アーキテクチャ、および複雑度の測定値をまとめます。モデル保守性ダッシュボードの使用方法の詳細については、モデル保守性ダッシュボードを使用して設計の複雑度を監視するを参照してください。

設計アーティファクトについての保守性メトリクスを確認する

ISO 26262-6、Clause 5.4.3 では、設計で複雑度を低く維持することが求められています。ISO 26262-6、Clause 7.4.3 では、設計でモジュール化と保守性を示すことが求められています。これらの要件を満たすには、設計で適切なソフトウェア構造を使用し、ソフトウェア コンポーネントとインターフェイスのサイズと複雑度を制限します。

ISO 26262-6 に関して設計のサイズ、アーキテクチャ、および複雑度を確認するのに役立つサンプル チェックリストを以下に示しています。チェックリストの各項目に対して、対応するダッシュボード メトリクスを使用して確認アクティビティを実行します。このサンプル チェックリストを確認し、アプリケーションのニーズを満たすように変更してください。

チェックリスト項目確認アクティビティダッシュボード メトリクス根拠
1 — ユニットまたはコンポーネントはモデル レベルで低い複雑度を備えているか。

全体的な設計の循環的複雑度が低いことを確認します。

[コンポーネントの構造] セクションで [複雑度] ウィジェットを表示します。

Complexity widget in Component Structure section

メトリクス ID — slcomp.OverallCyclomaticComplexity

詳細については、Overall Design Cyclomatic Complexityを参照してください。

全体的な設計の循環的複雑度は、Simulink® 設計アーティファクト、Stateflow® 設計アーティファクト、および MATLAB 設計アーティファクト全体の実行パスの合計数です。一般的に、設計にパスが多いほど、設計はより複雑です。

2 — ユニットまたはコンポーネントは適切なモデル構造を使用しているか。

層の最大幅と最大深度が低いことを確認します。[深さ] ウィジェットをクリックし、ユニットまたはコンポーネントの深さに寄与するモデル層のテーブルを表示します。[幅] ウィジェットをクリックし、ユニットまたはコンポーネントの幅に寄与するモデル層のテーブルを表示します。

[コンポーネントの構造] セクションで [深さ] ウィジェットと [幅] ウィジェットを表示します。

Depth and Breadth widgets in Component Structure section

メトリクス ID — slcomp.MaxLayerDepth

メトリクス ID — slcomp.MaxLayerBreadth

詳細については、Maximum Layer DepthおよびMaximum Layer Breadthを参照してください。

子モデルの階層をもつモデルでは、層の最大深度は、階層構造の子の最大深度を計算します。層の最大幅は、モデル層上の直接の子の最大数を計算します。階層モデル構造では、最大深度と最大幅は、通常、相互に比例しています。あるメトリクス結果が他より著しく大きい場合、その構造は適切な階層構造ではありません。

3 — ユニットまたはコンポーネントは妥当な数のインターフェイスを備えているか。

コンポーネントのインターフェイスのサイズを確認します。[コンポーネント インターフェイス] セクションのウィジェットをクリックして、設計に関連付けられているインターフェイスのテーブルを表示します。

[コンポーネント インターフェイス] セクションで、[入力端子][出力端子][入力信号][出力信号] のウィジェットを表示します。

Port and signal metric results in Component Interface section

メトリクス ID — slcomp.InterfacePorts

メトリクス ID — slcomp.ComponentInterfaceSignals

詳細については、Input and Output Component Interface PortsおよびInput and Output Component Interface Signalsを参照してください。

コンポーネントのインターフェイスのサイズは、設計にとって適切な最小のサイズであるべきです。インターフェイスの適切なサイズとは、シンプルで、モジュール化されており、保守が容易なサイズです。

4 — 設計の各側面で低い複雑度が維持されているか。

設計の Simulink アーティファクト、Stateflow アーティファクト、MATLAB アーティファクトに関連付けられている設計の循環的複雑度の値と判定カウントの分布を確認します。[設計の循環的複雑度の内訳] セクションのウィジェットをクリックして、設計のアーティファクトに関連付けられている判定の数を示すテーブルを表示します。

[設計の循環的複雑度の内訳] で、[複雑度] 列に値、[分布] 列に判定の分布を表示します。[分布] ビンにカーソルを合わせて詳細情報を表示します。

Tooltip for distribution bin in Design Cyclomatic Complexity Breakdown section

メトリクス ID — slcomp.SLCyclomaticComplexity

メトリクス ID — slcomp.SFCyclomaticComplexity

メトリクス ID — slcomp.MatlabCyclomaticComplexity

詳細については、Design Cyclomatic Complexity Breakdownを参照してください。

Simulink、Stateflow、および MATLAB の設計の循環的複雑度の値は、それらの種類のアーティファクトに関連付けられている実行パスの合計数です。一般的に、設計にパスが多いほど、設計はより複雑です。[分布] 列には、設計のどこで判定パスが発生しているかが示されます。

5 — 設計の各側面が適切にモジュール化されているか。設計の Simulink アーティファクト、Stateflow アーティファクト、MATLAB アーティファクトのアーキテクチャを確認します。[Simulink アーキテクチャ] セクション、[Stateflow アーキテクチャ] セクションおよび [MATLAB アーキテクチャ] セクションのウィジェットをクリックして、設計のアーティファクトに関連付けられている判定の数を示すテーブルを表示します。

[Simulink アーキテクチャ] セクション、[Stateflow アーキテクチャ] セクションおよび [MATLAB アーキテクチャ] セクションで、[カウント] 列に値、[分布] 列に判定の分布を表示します。[分布] ビンにカーソルを合わせて詳細情報を表示します。

Count column and Distribution bins for Simulink Architecture section

設計の一部が大きい、多くの判定を行っている、または可読性が良くないなどの場合、設計のテストが困難で、保守が難しくなる可能性があります。メトリクス結果を使用して、より小さくテストが可能なユニットを識別したり、モデルを再構成して可読性を向上させたりして、設計をリファクタリングする必要があるかどうかを判定します。

参考文献:

  • ISO 26262-6:2018(en) 自動車 — 機能安全 — パート 6: ソフトウェア レベルでの製品開発。国際標準化機構

参考

関連するトピック