Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

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

クローンには、厳密クローンと類似クローンの 2 種類があります。厳密クローンは、ブロックのタイプ、接続、パラメーター値が同一です。類似クローンは、ブロックのタイプと接続が同一ですが、ブロック パラメーター値は異なる場合があります。たとえば、Gain ブロックの値は類似クローンでは異なる場合がありますが、厳密クローンでは同じでなければなりません。

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

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

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

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

厳密クローンのみを検出するには、モデリング クローンを特定するツールの各チェックで、[一致しないブロック パラメーターの最大数]0 に設定します。このパラメーター値を増やすと、ツールで検出可能な類似クローンの数が増えます。

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

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

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

  1. モデル ex_clone_detection を開きます。MATLAB® コマンド ラインで以下のように入力します。

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    ex_clone_detection

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

モデルのクローンの特定

  1. [検出] セクションで、[システム内でクローンを検索] タブで、クローンを特定するモデルとして ex_clone_detection を入力します。他のサブシステムにアクセスしてクローンを特定するにはピンを切り替えます。

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

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

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

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

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

    クローン検出の結果が、特定されたクローン、クローンの種類、検出のパラメーター、クローン検出での除外に関する統合レポートとともに、新しいウィンドウで開きます。

  2. [クローン検出のアクションと結果] ペインで [クローン グループをライブラリにマップ] タブをクリックします。

    クローン グループのリストが表示されます。

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

  4. [モデルの階層構造] タブをクリックします。ハイパーリンクをクリックしてモデルに存在しているサブシステムを強調表示します。

  5. [クローン グループをライブラリにマップ] タブで Similar Clone Group 1 を展開して [View Parameter Difference] ハイパーリンクをクリックします。

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

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

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

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

クローンの置換

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

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

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

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

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

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

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    ex_clone_library
    

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

    メモ:

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

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

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

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

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

関連するトピック