Сравните сложность модели и метрики сложности кода

Анализируйте сложность своей системы при помощи цикломатических метрик сложности. Метрики указывают на структурную сложность системы путем измерения количества линейно независимых контуров в системе. Путем ограничения цикломатической сложности системы можно сделать его более читаемым, удобным в сопровождении, и портативным. Можно измерить цикломатическую сложность и для модели и для кода, сгенерированного из модели. Обратите внимание на то, что различия между кодом и моделью могут привести к разным уровням цикломатической сложности. Чтобы измерить цикломатическую сложность модели, используйте Метрическую Инструментальную панель и Цикломатическую метрику сложности.

Метрические пороговые значения

Порог сложности кода

Когда вы разрабатываете алгоритм кодом почерка, вы оцениваете удобочитаемость кода путем измерения цикломатической сложности кода. Код, который имеет более высокую цикломатическую сложность, может больше затруднить, чтобы изучить и обеспечить. Чтобы стандартизировать надежность кода, ваша организация может выбрать пороговое значение, которое ограничивает цикломатическую сложность вашего кода. Например, если вы пишете код, который соответствует Метрикам сложности кода HIS (Polyspace Bug Finder), вы проверяете, что цикломатическая сложность кода в или ниже порога 10.

Порог сложности модели

Когда вы используете рабочий процесс модельно-ориентированного проектирования, чтобы смоделировать алгоритм и сгенерировать код, можно оценить удобочитаемость системы при помощи цикломатической метрики сложности модели вместо того, чтобы измерить цикломатическую сложность сгенерированного кода. Графическое моделирование Simulink® позволяет вам управлять комплексными алгоритмами лучше, чем традиционный ручной код. Чтобы составлять это, цикломатический метрический порог сложности по умолчанию для модели равняется 30, который выше, чем стандартный порог сложности кода 10. Чтобы изменить метрическое пороговое значение модели, смотрите, Настраивают Метрическое Размещение Инструментальной панели и Функциональность.

Сравнение кода и метрических результатов сложности модели

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

  • Оптимизация генерации кода, которая устраняет дополнительную логику, которую содержит модель. Эта оптимизация может уменьшать сложность кода.

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

  • Дополнительная логика в сгенерированном коде для определенной цели. Эта логика может увеличить сложность кода.

Например, рассмотрите модель simulinkCruiseErrorAndStandardsExample. Открыть модель:

  1. Откройте проект.

    path = fullfile(matlabroot,'toolbox','shared','examples',...
    'verification','src','cruise');
    run(fullfile(path,'slVerificationCruiseStart'))

  2. Из проекта откройте папку модели и откройте simulinkCruiseErrorAndStandardsExample.

Модель содержит график, Вычисляют целевую скорость. Чтобы сгенерировать и анализировать код для графика при помощи Polyspace®, см. программное обеспечение Analyze Code и Test в цикле.

Отчеты, что Polyspace генерирует для кода, включают в себя метрики кода, такие как цикломатическая сложность. Сгенерированная ступенчатая функция для графика имеет цикломатическую сложность 20.

Чтобы измерить цикломатическую сложность модели, используйте Метрическую Инструментальную панель:

  1. Откройте Метрическую Инструментальную панель. В галерее Apps нажмите Metrics Dashboard.

  2. Нажмите All Metrics.

  3. Чтобы просмотреть подробные цикломатические результаты сложности, кликните по виджету Model Complexity.

График в модели имеет цикломатическую сложность 30. Для этого графика генератор кода оптимизирует код путем консолидации логики, таким образом, сгенерированный код имеет более низкую цикломатическую сложность, чем график в модели. В других случаях модель может иметь более низкую цикломатическую сложность, чем ее сгенерированный код. Когда вы обеспечите модель для генерации кода, используйте цикломатическую сложность модели, чтобы измерить сложность вашей системы.

Смотрите также

Похожие темы