Включите повторное использование компонента при помощи обнаружения клонов

Клоны являются шаблонами моделирования, которые имеют одинаковые типы блоков и связи. Приложение Clone Detector идентифицирует клоны через контуры модели-ссылки. Можно использовать приложение Clone Detector для повторного использования компонентов путем создания библиотечных блоков из клонов подсистем и замены клонов ссылками на эти блоки библиотек. Можно также использовать инструмент для связи с клонами в существующей библиотеке.

Точные клоны и подобные клоны

Существует два типа клонов: точные клоны и подобные клоны. Точные клоны имеют одинаковые типы блоков, соединения и значения параметров. Подобные клоны имеют одинаковые типы блоков и соединения, но они могут иметь различные значения параметров блоков. Для примера значение блока Gain может быть различным в аналогичных клонах, но должно быть одинаковым в точных клонах.

Точные клоны и подобные клоны могут иметь следующие различия:

  • Два клона могут иметь разный сортированный порядок.

  • Длина сигнальных линий и расположение и размер блоков могут быть различными, если блочные соединения одинаковы.

  • Блоки и сигналы могут иметь различные имена.

Чтобы обнаружить только точные клоны, для каждой проверки в инструменте Identify Modeling Clones задайте для Maximum Number of Unmatched Block Parameters значение 0. Увеличение этого значения параметров увеличивает количество аналогичных клонов, которые потенциально может обнаружить инструмент.

После идентификации клонов можно заменить их ссылками на библиотечные блоки. Подобные клоны ссылаются на маскированные подсистемы библиотеки.

Идентифицируйте точные и подобные клоны

В этом примере показано, как использовать приложение Clone Detector для идентификации точных клонов и подобных клонов, а затем заменить их ссылками на библиотечные блоки.

  1. Откройте модель ex_clone_detection. В MATLAB® в командной строке введите:

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

  2. Сохраните модель в рабочей папке. Модель должна быть открыта для доступа к приложению.

  3. На вкладке Apps нажмите Clone Detector. Кроме того, в командной строке MATLAB введите:

    clonedetection("ex_clone_detection")
  4. Приложение открывает вкладку Clone Detector. В этом примере рассматривается каждый раздел.

Настройка панелей для обнаружения клонов

Приложение отображает информацию на нескольких панелях. В меню View можно выбрать три панели. Панели:

  • Help. Выберите для доступа к панели справки, содержащей обзор рабочего процесса обнаружения клонов.

  • Results. Выберите для просмотра панели «Действия и результаты обнаружения клонов».

  • Properties. Выберите для просмотра панель «Обнаруженные свойства клона».

Установите параметры для обнаружения клонов

Параметры для обнаружения клонов можно настроить с помощью раскрывающегося меню Settings.

  • Выберите Ignore differences in > Signal Names, чтобы идентифицировать и классифицировать клоны, когда имена сигналов отличаются.

  • Выберите Ignore differences in > Block Properties, чтобы идентифицировать и классифицировать клоны, когда свойства блоков отличаются. Дополнительные сведения о свойствах блоков см. в разделе «Задание свойств блоков».

  • Щелкните Exclude Components, чтобы получить доступ к опциям Exclude model references, Exclude library Links и Exclude inactive and commented out regions. Включение опции Exclude inactive and commented out regions идентифицирует клоны переменных чисел из-за Variant Source блока в модели. Для получения дополнительной информации смотрите Исключить подсистемы и ссылки на модели из обнаружения клонов. Включение опций Exclude model references и Exclude library Links приведет к идентификации меньшего количества клонов, в зависимости от модели.

  • Щелкните Match Patterns with Libraries и выберите внешнюю библиотеку для поиска клонов. Для получения дополнительной информации см. «Идентификация и замена клонов в библиотеках моделей».

  • Это Maximum number of unmatched block parameters 50 по умолчанию. Это представляет количество параметров, которые могут варьироваться среди подсистем и все еще классифицироваться как подобные клоны. Вы можете уменьшить это количество, чтобы идентифицировать и классифицировать меньше похожих клонов. Установка значения нуля позволит идентифицировать только точные клоны.

Идентифицируйте клоны в модели

  1. Чтобы найти клоны в модели, нажмите на подсистему, которую вы хотите проанализировать. В Detect разделе выбранное имя подсистемы отображается на Find Clones in System вкладке. Используйте контакт, чтобы запомнить выбор.

  2. Щелкните Find Clones, чтобы идентифицировать клоны.

  3. Цвет подсистем изменяется, чтобы отразить аналогичные и точные идентифицированные клоны. Красная подсветка представляет собой точные клоны, а различные оттенки синей подсветки представляют похожие клоны.

Анализ результатов обнаружения клонов

После идентификации клонов можно проанализировать результаты обнаружения клонов и внести изменения в модель по мере необходимости. Чтобы проанализировать результаты:

  1. На панели Clone Detection Actions and Results на панели Logs щелкните гиперссылку.

    Новое окно открывает результаты обнаружения клонов интегрированным отчетом об идентифицированных клонах, типах клонов, параметрах обнаружения и исключениях в обнаружении клонов.

  2. На панели Clone Detection Actions and Results перейдите на вкладку Map Clone Groups to Library.

    Отображается список групп клонов.

  3. Нажмите на > символ рядом с Exact Clone Group 1 чтобы увидеть все подсистемы, которые являются точными клонами, количество блоков и различия блоков. Повторите то же самое для Similar Clone Group 1 и Similar Clone Group 2.

  4. Перейдите на вкладку Model Hierarchy. Щелкните гиперссылки, чтобы выделить подсистемы, которые присутствуют в модели.

  5. На вкладке Map Clone Groups to Library разверните Similar Clone Group 1 и щелкните гиперссылку View Parameter Difference.

  6. На панели Detected Clone Properties нажмите ex_clone_detection/SS5/G9 гиперссылка, которая открывает блок усиления G9 в подсистеме SS5, где можно получить доступ к параметру, отличному от подсистемы базового уровня.

  7. Измените значение параметра усиления из A на B и нажмите Find Clones. Это позволит реклассифицировать Similar Clone Group 1 на Exact Clone Group 2 потому что вы разрешили различие в подсистемах и преобразовали ее в точный клон.

  8. Под Refactor Benefits панелью можно учесть процент присутствующих клонов разных типов.

    На панели Clone Detection Actions and Results, на вкладке Map Clone Groups to Library, выберите клоны, которые вы хотите рефакторовать. Выберите все группы клонов для рефакторинга, чтобы уменьшить 22.5806% повторного использования модели.

Замена клонов

  1. Можно использовать имя библиотеки по умолчанию или изменить имя файла библиотеки и его расположение на вкладке Map Clone Groups to Library перед заменой клонов.

  2. Нажмите Replace Clones.

    Модель рефакторируется, и клоны заменяются ссылками на newLibraryFile файл библиотеки в рабочей директории.

  3. Можно восстановить модель в исходном строении с помощью клонов, нажав кнопку Restore найденную в журнале детектора клонов, который был сгенерирован на вкладке Logs панели Clone Detector Actions and Results.

Идентификация и замена клонов в библиотеках моделей

  1. Откройте библиотеку ex_clone_library. В командной строке MATLAB введите:

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

  2. Нажмите Settings > Match Patterns with Libraries и выберите ex_clone_library.slx. Затем нажмите Find Clones.

    Примечание

    Идентификация и рефакторинг клонов во внешних библиотеках должны выполняться отдельно от модели. Во время рефакторинга модели будут заменены только точные клоны в библиотеках ссылок.

  3. Нажмите Replace Clones.

    Модель рефактерируется с точными замененными клонами.

Проверяйте эквивалентность модели

Если у вас есть лицензия Simulink Test™, можно нажать Check Equivalency. Откроется окно, в котором отображается, что текущая модель была успешно рефактирована в эквивалентную модель.

Похожие темы