ダッシュボードでの解析用にプロジェクト アーティファクトを管理
モデルベース デザインを使用してソフトウェア ユニットを開発およびテストするときは、ダッシュボードを使用してユニット テスト アクティビティのステータスと品質を評価します。要件、モデルの設計要素、およびテスト間でトレーサビリティ リンクを確立することで、要件が実装および検証されている範囲を測定できます。ダッシュボードはこのトレーサビリティ情報を解析し、トレーサビリティ、ステータス、テスト アーティファクトの結果に関する詳細なメトリクス測定値を提供します。
ダッシュボードの各メトリクスはモデルの品質の異なる側面を測定し、業界認定のソフトウェア開発標準 (ISO 26262、DO-178C など) のガイドラインを反映しています。モデルの品質をダッシュボードで監視するには、プロジェクト内のアーティファクトを維持して、以下の考慮事項に従います。
プロジェクト内のアーティファクト ファイルの管理
アクティビティをダッシュボードで解析するには、設計とテスト アーティファクトをプロジェクトに保存します。プロジェクトの使用を開始する方法の詳細については、Create Project to Use Model Design and Model Testing Dashboardsを参照してください。
メトリクスで解析できるアーティファクトの種類には次のようなものがあります。
モデル
モデルで使用されるライブラリ
Requirements Toolbox™ で作成する要件
Simulink® Test™ で作成したテスト
実行されたテストのテスト結果
メモ
ダッシュボードではプロジェクト フォルダー内のすべてのアーティファクトが解析されますが、メトリクス結果が古くなる原因になる可能性があるのはメトリクスに直接関係するアーティファクトだけです。たとえば、テスト ケースに変更を加えた場合、テストのメトリクス結果が古くなったことをダッシュボードで特定できます。ただし、テスト ケースでテストするモデルに変更を加えた場合は、その変更によってテストのメトリクス結果が古くなったかどうかをダッシュボードで特定できません。
シミュレーション キャッシュとコード生成に異なるルート フォルダーを指定
既定では、プロジェクトはシミュレーション キャッシュ フォルダーとコード生成フォルダーの両方に同じルート フォルダーを使用します。可能であれば、プロジェクトのシミュレーション キャッシュ フォルダーとコード生成フォルダーに異なるルート フォルダーを使用してください。異なるルート フォルダーを指定すると、ダッシュボードはシミュレーション キャッシュ フォルダーに対する変更を追跡する必要がなくなります。
プロジェクトのキャッシュ フォルダー設定を表示するには、[プロジェクト] タブの [環境] セクションで [詳細] をクリックします。[プロジェクトの詳細] ダイアログに、[シミュレーション キャッシュ フォルダー] と [コード生成フォルダー] に指定されたルート フォルダーが表示されます。
変更の追跡の動作は、プロジェクトの設定のみに依存します。カスタムの操作は、変更の追跡の動作に影響を与えません。たとえば、ダッシュボードは Simulink.fileGenControl
によって指定されたルート フォルダーをチェックしません。
プロジェクトに対するアーティファクトのトレースの有効化
プロジェクト内のアーティファクトを編集して保存すると、ダッシュボードはこれらの変更を追跡し、アーティファクトのトレースを有効にして、派生アーティファクトを追跡し、古くなったメトリクス結果を検出する必要があります。既定では、ダッシュボードは、ダッシュボードでプロジェクトを最初に開いたときにアーティファクトのトレースを有効にするよう要求します。[有効にして続行] をクリックし、ダッシュボードでツールの出力を追跡して古くなったメトリクス結果を検出できるようにします。
また、以下のいずれかの方法を使用して、アーティファクトのトレースを手動で有効にすることもできます。
MATLAB® の [プロジェクト] タブで [起動とシャットダウン] をクリックします。[プロジェクトの起動とシャットダウンの管理] ダイアログの [環境] セクションで、[ツールの出力を追跡して期限切れの結果を検出] を選択します。
MATLAB Online™ の [プロジェクト] タブで [設定] をクリックします。[プロジェクトの設定] ダイアログの [Simulink] セクションで [ツールの出力を追跡して期限切れの結果を検出] を選択します。
ダッシュボードでアーティファクトを解析し、古くなったメトリクス結果を検出する方法については、デジタル スレッドを使用したアーティファクト トレーサビリティの監視と古くなった結果の検出を参照してください。
アーティファクトをユニットおよびコンポーネントまでトレース
ダッシュボードの [プロジェクト] パネルでは、テスト レベルとモデル参照階層に従ってモデルが整理されています。プロジェクトに多くのモデルとモデル参照階層が含まれている場合、モデルのさまざまなテスト レベルを識別するようにダッシュボードを構成することにより、ユニット テスト アクティビティを追跡できます。プロジェクト内のエンティティにラベルを付けて、そのラベルを認識するようにダッシュボードを構成することで、ソフトウェア アーキテクチャ内でユニットおよび上位レベルのコンポーネントであるエンティティを指定できます。コンポーネントと見なされるモデルを指定しない場合、ダッシュボードでは、System Composer™ アーキテクチャ モデルがコンポーネントと見なされます。詳細については、階層内のモデルをコンポーネントまたはユニットとして分類を参照してください。
ユニットまたはコンポーネントのスコープ内にあるアーティファクトを判別するために、ダッシュボードは、プロジェクト内のアーティファクト間、ソフトウェア ユニット モデル間、およびコンポーネント モデル間のトレーサビリティ リンクを解析します。[プロジェクト] パネルでは、ユニットがそれらを参照するコンポーネント別に整理され、リストされます。
既定では、ファイルがパス上にない場合やプロジェクトに追加されていない場合も含め、プロジェクト フォルダー内のすべてのファイルがダッシュボードで解析されます。特定のモデルをダッシュボードから除外する場合は、コンポーネントとユニットとしてのモデルの指定に示すように、プロジェクト内の対象とするモデルにラベルを付けて、そのラベルを認識するようにダッシュボードを構成することで、ユニットまたはコンポーネントであるモデルを指定します。
ユニットまたはコンポーネントとそのアーティファクト間でダッシュボードによって検出されたトレーサビリティ パスを確認するには、ツールストリップの [トレース ビュー] をクリックします。トレース ビューは対話型ダイアグラムであり、これを使用して、アーティファクトが設計のユニットおよびコンポーネントにどのようにトレースされるのかを確認したり、プロジェクトの要件、テスト、およびテスト結果のトレーサビリティ情報を確認したりできます。詳細については、Explore Traceability Information for Units and Componentsを参照してください。
[プロジェクト] パネルでユニットまたはコンポーネントを選択すると、[アーティファクト] パネルに、選択されたユニットまたはコンポーネントまでトレースするアーティファクトが表示されます。トレースされたアーティファクトには次のものがあります。
機能要件
設計アーティファクト
テスト
テスト結果
機能要件
[機能要件] フォルダーには、ユニットまたはコンポーネントで実装されているかユニットまたはコンポーネントの上流にある [タイプ] が Functional
の要件が表示されます。
メトリクス結果を収集するときに、ダッシュボードはユニットまたはコンポーネントが直接実装する機能要件のみを解析します。[機能要件] フォルダーには、要件がユニットまたはコンポーネントで実装されているのか、ユニットまたはコンポーネントの上流にあるのかを識別しやすくする 2 つのサブフォルダーが含まれます。
実装済み — [タイプ] が
Implements
のリンクでユニットまたはコンポーネントに直接リンクされている機能要件。これらの要件は、このユニットまたはコンポーネントについてのダッシュボードのメトリクスで使用されます。上流 — 実装済みの要件に間接的または推移的にリンクされている機能要件。これらの要件は、このユニットまたはコンポーネントについてのダッシュボードのメトリクスで使用されません。
Requirements Toolbox を使用して要件ファイル (.slreqx
) で要件を作成するかインポートします。ユニットまたはコンポーネントへとトレースしない要件は、問題のトレースフォルダーに表示されます。要件が、想定に反して [アーティファクト] パネルに表示されない場合は、アーティファクト、リンク、および結果の欠損の解決を参照してください。
ダッシュボードがプロジェクト ファイル間の依存関係をトレースする方法の詳細については、デジタル スレッドを使用したアーティファクト トレーサビリティの監視と古くなった結果の検出を参照してください。
設計アーティファクト
[設計] フォルダーには、次のような、現在のユニットまたはコンポーネントへとトレースするプロジェクト アーティファクトが表示されます。
ユニットまたはコンポーネントのブロック線図を含むモデル ファイル。
ユニットまたはコンポーネントが参照するモデル。
モデルによって部分的または完全に使用されるライブラリ。
モデルにリンクされているデータ ディクショナリ。
モデルへとトレースする外部 MATLAB コード。
アーティファクトが、想定に反して [設計] フォルダーに表示されない場合は、アーティファクト、リンク、および結果の欠損の解決を参照してください。ダッシュボードがプロジェクト ファイル間の依存関係をトレースする方法の詳細については、デジタル スレッドを使用したアーティファクト トレーサビリティの監視と古くなった結果の検出を参照してください。
メモ
ダッシュボードに表示されることが想定される外部 MATLAB コードが表示されない場合は、構造がサポートされていないかどうかを確認してください。
次に該当するクラス メソッドは [アーティファクト] パネルに表示されません。
ドット表記を使用して呼び出す非静的メソッド。
関数表記を使用して呼び出す非静的メソッド。
ドット表記を使用して Simulink モデルから呼び出す静的メソッド。
スーパークラス メソッド。
クラス定義ファイルとは別のファイルに定義されている。
これらのメソッドについては、ダッシュボードに、[設計] フォルダー内の関連するクラス定義が表示されます。
コンストラクターがスーパークラスのコンストラクターの場合、クラス コンストラクターは [アーティファクト] パネルに表示されません。ダッシュボードには [設計] フォルダー内の関連するスーパークラス定義が表示されますが、メソッドそのものは表示されません。
クラス プロパティは、そのプロパティが Simulink または Stateflow® から呼び出される場合、[アーティファクト] パネルに表示されません。ダッシュボードの [アーティファクト] パネルには、関連するクラス定義が表示されます。
列挙クラスは [アーティファクト] パネルに表示されません。たとえば、Simulink で Enumerated Constant ブロックを使用する場合、ダッシュボードには
enum
型を定義する MATLAB クラスは表示されません。クラス ファイルに同じ名前をもつメソッドとローカル関数が含まれる場合、ドット表記を使用する呼び出しがクラス定義内のメソッドを呼び出し、関数表記を使用する呼び出しがクラス ファイル内のローカル関数を呼び出します。
テスト
[テスト] フォルダーには、選択されたユニットまでトレースするテストとテスト ハーネスが表示されます。"テスト" は以下のいずれかにすることができます。
テスト反復
反復のないテスト ケース
ユニットのメトリクス結果を収集するときに、ダッシュボードはユニット テストのみを解析します。[テスト] フォルダーには、テストがユニット テストと見なされるかどうか、および、ユニットまでトレースするテスト ハーネスを識別しやすくするサブフォルダーが含まれます。
ユニット テスト — ダッシュボードでユニット テストと見なされるテスト。ユニット テストは、ユニット全体またはユニットの下位レベル要素 (サブシステムなど) を直接テストします。これらのテストは、このユニットについてのダッシュボードのメトリクスで使用されます。
その他 — ユニットまでトレースするが、ダッシュボードでユニット テストと見なされないテスト。たとえば、ライブラリについてのテストやバーチャル サブシステムについてのテストはダッシュボードでユニット テストとは見なされません。これらのテストは、このユニットについてのダッシュボードのメトリクスで使用されません。
テスト ハーネス — ユニットまたはユニットの下位レベル要素までトレースするテスト ハーネス。テスト ハーネスはダブルクリックすると開きます。
Simulink Test を使用してテストを作成します。ユニットへとトレースしないテストは、問題のトレースフォルダーに表示されます。想定に反して、テストが [アーティファクト] パネルに表示されない場合やテストのメトリクス結果が表示されない場合は、アーティファクト、リンク、および結果の欠損の解決を参照してください。
ダッシュボードがプロジェクト ファイル間の依存関係をトレースする方法の詳細については、デジタル スレッドを使用したアーティファクト トレーサビリティの監視と古くなった結果の検出を参照してください。
テスト結果
ユニットのメトリクス結果を収集するときに、ダッシュボードはユニット テストからのテスト結果のみを解析します。[テスト結果] フォルダーには、ユニット テストからのテスト結果を識別しやすくするサブフォルダーが含まれます。
[モデル]、[SIL]、および [PIL] のサブフォルダーには、それぞれノーマル、ソフトウェアインザループ (SIL)、およびプロセッサインザループ (PIL) ユニット テストのシミュレーション結果が含まれます。これらの結果は、このユニットについてのダッシュボードのメトリクスで使用されます。
テスト結果の次のタイプが表示されます。
保存されたテスト結果 — テスト マネージャーで収集し、結果ファイルにエクスポートした結果。
一時的なテスト結果 — テスト マネージャーで収集したものの、結果ファイルにはエクスポートしていない結果。テスト マネージャーから結果をエクスポートすると、ダッシュボードは一時的な結果ではなく保存された結果を解析します。また、プロジェクトを閉じるか、Simulink Test の結果エクスプローラーで結果セットを閉じると、ダッシュボードは一時的な結果の認識を停止します。後続のテスト セッションまたはプロジェクト セッションで結果を解析する場合は、結果を結果ファイルにエクスポートしてください。
その他 — シミュレーション結果以外の結果、ユニット テストからでない結果、または単なるレポート。たとえば、SIL の結果はシミュレーション結果ではありません。これらの結果は、このユニットについてのダッシュボードのメトリクスで使用されません。
ユニットへとトレースしないテスト結果は、問題のトレースフォルダーに表示されます。想定に反して、テスト結果が [アーティファクト] パネルに表示されない場合やテストのメトリクス結果が表示されない場合は、アーティファクト、リンク、および結果の欠損の解決を参照してください。
外部 MATLAB 関数を使用する場合は、外部 MATLAB 関数のインライン化の制御を参照してください。関数のインライン化により、ダッシュボードでのカバレッジ メトリクスの結果に不整合が生じる可能性があります。
ダッシュボードがプロジェクト ファイル間の依存関係をトレースする方法の詳細については、デジタル スレッドを使用したアーティファクト トレーサビリティの監視と古くなった結果の検出を参照してください。
メモ
モデル カバレッジ メトリクスのカバレッジは要件にはスコープされないことに注意してください。テスト結果で [カバレッジ結果をリンクされた要件にスコープ] チェック ボックスを選択した場合、その選択はダッシュボードで無視され、ダッシュボードに表示されるモデル カバレッジ メトリクスの結果はスコープされません。[カバレッジ結果をリンクされた要件にスコープ] オプションの詳細については、Scoping Coverage for Requirements-Based Tests (Simulink Test)を参照してください。
問題のトレース
[問題のトレース] フォルダーには、ダッシュボードがいずれのユニットまたはコンポーネントまでもトレースしていないアーティファクトが表示されます。[問題のトレース] フォルダーを使用して、ユニットまたはコンポーネントへのトレーサビリティがアーティファクトから欠落しているかどうかをチェックします。[問題のトレース] フォルダーには問題のトレースのタイプを識別しやすくするサブフォルダーが含まれます。
予期せぬ実装リンク — [タイプ] が
Container
または [タイプ] がInformational
の要件に対する、[タイプ] がImplements
の要件リンク。コンテナー要件と情報要件は、それらが属する要件セットの実装ステータスと検証ステータスの対象とはならないため、ダッシュボードでは、これらのリンクの [タイプ] はImplements
と想定されません。要件が実装対象となっていない場合は、リンク タイプを変更できます。たとえば、[タイプ] がInformational
の要件を、[タイプ] がRelated to
のリンクをもつように変更できます。未解決で未サポートのリンク — プロジェクトで切断された要件リンクまたはダッシュボードでサポートされていない要件リンク。たとえば、モデル ブロックが要件を実装しているが、そのモデル ブロックが削除された場合、要件リンクは未解決になります。ダッシュボードは、一部のアーティファクトおよび一部のリンクのトレーサビリティ解析をサポートしません。
トレースされないテスト — プロジェクト パス上にないモデルまたは下位レベル要素 (サブシステムなど) で実行するテスト。
トレースされない結果 — ダッシュボードがテストまでトレースできなくなった結果。たとえば、テストから結果が生成されたが、そのテストを削除した場合、ダッシュボードで結果をテストまでトレースできなくなります。
ダッシュボードは、一部のアーティファクトおよび一部のリンクのトレーサビリティ解析をサポートしません。ユニットまたはコンポーネントへとトレースすることが想定されているアーティファクトがトレースなしの場合は、アーティファクト、リンク、および結果の欠損の解決でトラブルシューティング ソリューションを参照してください。
アーティファクトの問題
解析中にエラー、警告、および情報メッセージの原因となったアーティファクトの詳細を確認するには、ツールストリップの [アーティファクトの問題] をクリックします。問題は MATLAB セッション間で保持され、重大度、メッセージ、ソース、またはメッセージ ID でメッセージを並べ替えることができます。
メッセージには以下が表示されます。
ダッシュボードがサポートしないモデル構造
ダッシュボードがトレースしないリンク
ダッシュボードがサポートしないテスト ハーネスまたはテスト ケース
テスト結果の未達カバレッジまたはシミュレーション結果
ダッシュボードによる読み込み時にエラーを返すアーティファクト
ダッシュボードが非アクティブにするモデル コールバックに関する情報
パス上になく、トレース中に考慮されないアーティファクト
詳細については、View Artifact Issues in Projectを参照してください。
アーティファクト エラー
ダッシュボードがアーティファクト解析を実行したときにアーティファクトがエラーを返した場合、[エラー] フォルダーが表示されます。トレーサビリティ解析中にアーティファクトが返す可能性があるいくつかのエラーを以下に示します。
トレーサビリティ解析が開始されたときに保存されていない変更がある場合、アーティファクトはエラーを返します。
前のバージョンの Simulink に保存されていた場合、テスト結果ファイルはエラーを返します。
アーティファクトの解析中にダッシュボードで検出される警告およびエラーの詳細を確認するには、ツールストリップの [アーティファクトの問題] をクリックします。こうしたアーティファクトを開いて、エラーを修正します。ダッシュボードは、ダッシュボードの上部にバナーを表示して、[プロジェクト] パネルと [アーティファクト] パネルに表示されるアーティファクト トレーサビリティが古くなっていることを示します。バナー上の [アーティファクトのトレース] ボタンをクリックし、[プロジェクト] パネルと [アーティファクト] パネルのデータをリフレッシュします。
プロジェクトでダッシュボードによる解析が必要
プロジェクトのダッシュボードを最初に開くときに、ダッシュボードはプロジェクト内のアーティファクトを特定し、トレーサビリティ情報を収集します。ダッシュボードは、アーティファクトを監視する前に、この初回のセットアップを行ってトレーサビリティ データを確立する必要があります。初回のセットアップをキャンセルすると、プロジェクト内のアーティファクトが [アーティファクト] パネルの [未解析] フォルダーに表示されます。未解析のアーティファクトをトレースするには、[収集] 、 [アーティファクトのトレース] をクリックします。
外部 MATLAB 関数のインライン化の制御
既定では、カバレッジ メトリクスのユニット全体のカバレッジに外部 MATLAB 関数のカバレッジも含まれます。
プロジェクトに外部 MATLAB 関数がある場合は、次のいずれかを行います。
関数の内部に
coder.inline('never')
命令を配置し、プロジェクト ラベルを使用して M ファイルをユニットとして分類する関数の内部に
coder.inline('always')
命令を配置するが、プロジェクト ラベルは使用せず、M ファイルをユニットとして分類しない
coder.inline
命令の詳細については、coder.inline
を参照してください。coder.inline('default')
の使用はできる限り避けてください。coder.inline('default')
命令では関数をインライン化するかどうかを内部のヒューリスティックな方法を使用して判定するため、ダッシュボードでのカバレッジ メトリクスの結果に不整合が生じる可能性があります。
一般に、モデルをダッシュボードでユニットまたはコンポーネントとして分類するにはプロジェクト ラベルを使用します。外部 MATLAB 関数にユニット ラベルを追加すると、その関数は [プロジェクト] パネルに表示されなくなりますが、その関数のカバレッジをダッシュボードでユニット全体のカバレッジから除外できます。プロジェクト ラベルを使用してユニットとコンポーネントを分類する方法の詳細については、階層内のモデルをコンポーネントまたはユニットとして分類を参照してください。