Main Content

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 Components from Clone Detectionを参照してください。[モデル参照の除外] オプションおよび [ライブラリ リンクの除外] オプションを有効にすると、モデルによっては、特定されるクローンの数が少なくなります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. [クローン検出の結果とアクション] ペインの [ログ] タブで生成されたクローン検出器のログにある [元に戻す] ボタンをクリックすることで、モデルをクローンのある元の構成に復元できます。

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

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

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

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

    メモ:

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

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

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

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

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

関連するトピック