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

Клоны моделируют шаблоны, которые имеют идентичные типы блока и связи. Приложение 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. Панели:

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

  • Results. Выберите, чтобы просмотреть панель Результатов и Обнаружение клонов.

  • Свойства. Выберите, чтобы просмотреть панель Detected Clone Properties.

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

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

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

  • Выберите Ignore differences in > Block Properties, чтобы идентифицировать и классифицировать клоны, когда свойства блока будут отличаться. Для получения дополнительной информации о свойствах блока, смотрите Specify 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, вводят ex_clone_detection как модель, чтобы идентифицировать клоны в. Переключите контакт, чтобы получить доступ к другим подсистемам, чтобы идентифицировать клоны в.

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

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

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

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

  1. В панели Clone Detection Action and Results, на панели Logs, кликают по гиперссылке.

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

  2. В панели Clone Detection Action 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. Окно открывается и отображения, что текущая модель была успешно пересмотрена в эквивалентную модель.

Похожие темы