Main Content

クローン検出を使用したコンポーネント再利用の有効化

クローンは、同一のブロック タイプと接続をもつモデル化パターンです。クローン検出器アプリはモデル全体またはサブシステムの境界を越えてクローンを特定します。クローン検出器アプリまたは MATLAB コマンドを使用してプログラムによりクローン パターンのライブラリ ブロックを作成し、クローンをこれらのライブラリ ブロックへのリンクで置き換えることにより、コンポーネントを再利用することができます。これを使用して、既存のライブラリからのクローンにリンクすることもできます。

厳密クローンと類似クローン

クローンは厳密クローンと類似クローンという 2 つのタイプに分類できます。厳密クローンは、ブロックのタイプ、接続、パラメーター値が同一です。類似クローンは、ブロックのタイプと接続が同一ですが、ブロック パラメーター値は異なる場合があります。たとえば、類似クローンでは Gain ブロックの値は異なっていても構わず、演算が異なる Sum ブロックも類似クローンと見なされますが、厳密クローンでは同じでなければなりません。

厳密クローンと類似クローンは、以下の違いをもつ可能性があります。

  • 2 つのクローンの並べ替え順序が異なる。

  • ブロック接続が同じ場合に、信号線の長さとブロックの場所とサイズが異なる。

  • ブロックと信号の名前が異なる。

クローンは、特定後にライブラリ ブロックへのリンクに置き換えることができます。類似クローンはマスク ライブラリ サブシステムにリンクします。

クローンの検出場所の指定

クローン検出器アプリは、モデル内のクローンを検出する 2 つのオプションをサポートしています。クローン検出の [設定] を使用して、サブシステム内またはモデル全体の任意の場所でクローンを検索できます。

  • サブシステム クローン: サブシステム内のクローンのみを特定します。

  • モデル全体のクローン: モデル全体のクローンを特定します。

厳密クローンと類似クローンの特定

この例では、クローン検出器アプリを使用して厳密サブシステム クローンと類似サブシステム クローンを特定し、それらをライブラリ ブロックへのリンクに置き換える方法を説明します。

  1. モデル ex_detect_clones を開きます。

    openExample("ex_detect_clones")

    Simulink canvas for ex_detect_clones model

  2. モデルを作業フォルダーに保存します。アプリにアクセスするには、モデルが開かれていなければなりません。

  3. [アプリ] タブで、[クローン検出器] をクリックします。または、MATLAB® コマンド ラインで次のように入力します。

    clonedetection("ex_detect_clones")
  4. アプリによって [クローン検出器] タブが開きます。この例では、各セクションについて説明します。

    Clone Detector toolstrip with sections for View, Prepare, Detect, Refactor, and Verify

クローン検出のためのペインの設定

アプリによって、複数のペインに情報が表示されます。[表示] メニューでペインを 3 つ選択できます。ペインには次のものがあります。

  • ヘルプ - クローン検出ワークフローの概要を含むヘルプ ペインにアクセスする場合に選択します。

  • 結果 - [クローン検出の結果とアクション] ペインを表示する場合に選択します。

  • プロパティ - [検出されたクローン プロパティ] ペインを表示する場合に選択します。

クローン検出のためのパラメーターの設定

[設定] ドロップダウン メニューを使用して、クローン検出のためのパラメーターを設定できます。

  • 信号名が異なる場合は、[以下の違いを無視]、[信号名] を選択して、クローンを特定し分類します。

  • ブロックのプロパティが異なる場合は、[以下の違いを無視]、[ブロック プロパティ] を選択して、クローンを特定し分類します。ブロック プロパティの詳細については、ブロック プロパティの指定を参照してください。

  • [厳密クローンからサブシステム参照への置き換え] をクリックし、厳密クローンを検索してサブシステム参照ブロックに置き換えます。

  • [コンポーネントの除外] をクリックして [モデル参照の除外][ライブラリ リンクの除外]、および [非アクティブ領域とコメントアウト領域の除外] オプションにアクセスします。[非アクティブ領域とコメントアウト領域の除外] オプションを有効にすると、モデルの Variant Source ブロックのため、さまざまな数のクローンが特定されます。詳細については、クローン検出からのコンポーネントの除外を参照してください。[モデル参照の除外] オプションおよび [ライブラリ リンクの除外] オプションを有効にすると、モデルによっては、特定されるクローンの数が少なくなります。

  • クローンを探すには [ライブラリとのパターン一致] をクリックして外部ライブラリを選択します。詳細については、モデル ライブラリのクローンの特定と置換を参照してください。

  • [一致しないブロック パラメーターの最大数] は、既定では 50 です。これは、サブシステム間で異なり、それでも類似クローンとして分類される可能性のあるパラメーターの数を表します。この数を減らすと、特定され分類される類似クローンの数を少なくすることができます。値をゼロに設定すると、厳密クローンのみが特定されます。

  • [モデル全体でのクローンの検出] をクリックし、モデル全体の任意の場所でのクローンの検出を有効にします。[最小領域サイズ][最小クローン グループ サイズ] の値を選択して、これらと一致するブロックをもつクローンを検出できます。[最小領域サイズ] はクローンあたりのブロック数であり、[最小クローン グループ サイズ] はそのクローン グループ内に存在するクローンの数です。それぞれの既定のサイズは 2 です。

モデル内のサブシステム クローンの特定

  1. モデル内でクローンを検索するために、解析するサブシステムをクリックします。[検出] セクションの [システム内でクローンを検索] タブに、選択したサブシステム名が表示されます。ピンを使用して選択内容を記憶させます。

    Find Clone in System tab in Detect section of toolstrip

  2. [クローンの検索] をクリックしてクローンを特定します。

    Simulink canvas for ex_detect_clones model with blocks highlighted in red and blue

  3. サブシステムの色は、特定された類似クローンおよび厳密クローンを反映して変化します。赤の強調表示は厳密クローンを表し、青の強調表示のさまざまな影は類似クローンを表します。

クローン検出器アプリによって、作業ディレクトリにバックアップ フォルダーが作成されます。バックアップ フォルダーの名前には、接頭辞 m2m_<model name> が付きます。クローンのデータは MAT ファイルに保存されます。モデルをリファクタリングしてクローンをライブラリ ブロックへのリンクに置き換えた後に、このフォルダーで元のモデルのバックアップを検索することもできます。

クローン検出の結果の解析

クローンを特定した後、クローン検出の結果を解析して、必要に応じてモデルに変更を加えることができます。結果を解析するには次のようにします。

  1. [クローン検出の結果とアクション] パネルで、[クローンの結果] タブにクローン グループのリストが表示されます。

  2. Exact Clone Group 1 の横の > 記号をクリックすると、厳密クローンであるすべてのサブシステム、ブロックの数、およびブロックの差異が表示されます。Similar Clone Group 1 および Similar Clone Group 2 について同じ手順を繰り返します。

  3. [クローン検出の結果とアクション] ペインで、[ログ] タブをクリックします。[ログ] ペインで、ハイパーリンクをクリックします。

    クローン検出レポートが HTML で生成され、MATLAB の現在のフォルダーに保存されます。レポートが新しい Web ブラウザー ウィンドウで開き、クローンの概要、クローン グループ、クローン タイプ、検出パラメーター、およびモデルに適用された対象外指定構成に関する詳細情報を含む個別の検出結果が示されます。

    Clone detection report

  4. [モデルの階層構造] タブをクリックします。ハイパーリンクをクリックしてモデル内の特定のサブシステムを強調表示します。戻ってすべてのクローンを強調表示するには、[クローンの結果] タブで [すべてのクローンを強調表示] をクリックします。

  5. [クローンの結果] タブで Similar Clone Group 1 を展開して、[View Parameter Difference] ハイパーリンクをクリックします。

  6. [検出されたクローン プロパティ] パネルで ex_detect_clones/SS5/G9 ハイパーリンクをクリックします。これにより、サブシステム SS5 のゲイン ブロック G9 が開き、そこからベースライン サブシステムと異なっているパラメーターにアクセスできます。

  7. ゲイン パラメーターの値を A から B に変更し、[クローンの検索] をクリックします。これにより、Similar Clone Group 1Exact Clone Group 2 に再分類されます。これは、サブシステムの差異を解決し、厳密クローンに変換したためです。

  8. [リファクタリングの利点] パネルで、存在するクローンのさまざまなタイプの割合を考慮することができます。

    [クローン検出の結果とアクション] ペインの [クローンの結果] タブで、リファクタリングするクローンを選択します。すべてのクローン グループをリファクタリングするよう選択して、モデルの再利用の 22.5806% を減少させます。

    Detected Clone properties with Refactor Benefits for Overall, Exact, and Similar types of clones

クローンの置換

  1. 既定のライブラリ名を使用することも、クローンを置換する前にライブラリ ファイルの名前および場所を [クローンの結果] タブで変更することもできます。

  2. [クローンの置換] をクリックします。

    モデルがリファクターされ、クローンが作業ディレクトリの newLibraryFile ライブラリ ファイルへのリンクで置き換えられます。

  3. [クローン検出の結果とアクション] ペインの [クローンの結果] タブで [元に戻す] ボタンをクリックすることで、モデルをクローンのある元の構成に復元できます。

モデル ライブラリのクローンの特定と置換

外部ライブラリ ファイルを使用して、モデル内のクローンを特定して置換できます。

  1. ライブラリ ex_clone_library を開きます。MATLAB コマンド ラインで以下のように入力します。

    openExample('ex_clone_library')
    

    Simulink canvas for ex_clone_library

  2. [設定]、[ライブラリとのパターン一致] をクリックして ex_clone_library.slx を選択します。次に [クローンの検索] をクリックします。

    メモ:

    外部ライブラリを使用したクローンの特定とリファクタリングは、モデルとは別に行わなければなりません。モデルのリファクタリングの間に、ライブラリ内の厳密クローンのみがライブラリ リンクに置き換えられます。

  3. [クローンの置換] をクリックします。

    モデルは、厳密クローンが置換されてリファクターされます。

モデルの同一性のチェック

Simulink Test™ のライセンスがある場合、[同一性のチェック] ドロップダウン ボタンを使用してクリックできます。ウィンドウが開き、現在のモデルが同一のモデルに問題なくリファクターされたことが表示されます。

Equivalency Check window with button to View Results

関連するトピック