Цикломатическая сложность

Опубликовано: 16 Января, 2022

Цикломатическая сложность участка кода - это количественная мера количества линейно независимых путей в нем. Это программный показатель, используемый для обозначения сложности программы. Он вычисляется с использованием графа потока управления программы. Узлы на графе указывают наименьшую группу команд программы, а направленное ребро в ней соединяет два узла, т.е. если вторая команда может сразу следовать за первой командой.

Например, если исходный код не содержит оператора потока управления, его цикломатическая сложность будет равна 1, а исходный код содержит в нем единственный путь. Точно так же, если исходный код содержит одно условие if, тогда цикломатическая сложность будет равна 2, потому что будет два пути: один для истинного, а другой для ложного.

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

M = E – N + 2P 

where, 
E = the number of edges in the control flow graph 
N = the number of nodes in the control flow graph 
P = the number of connected components 
 

Шаги, которые необходимо выполнить при вычислении цикломатической сложности и разработке тестовых случаев:

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

Пусть фрагмент кода как таковой:

 А = 10
   ЕСЛИ B> C ТО
      А = В
   ЕЩЕ
      А = С
   ENDIF
Распечатать A
Печать B
Печать C

График потока управления приведенного выше кода

Цикломатическая сложность, вычисленная для приведенного выше кода, будет из графа потока управления. График показывает семь форм (узлов), семь линий (ребер), следовательно, цикломатическая сложность 7-7 + 2 = 2.

Использование цикломатической сложности:

  • Таким образом, определение независимого выполнения пути оказалось очень полезным для разработчиков и тестировщиков.
  • Он может убедиться, что каждый путь был протестирован хотя бы один раз.
  • Таким образом помогает больше сосредоточиться на непокрытых путях.
  • Покрытие кода можно улучшить.
  • Риск, связанный с программой, может быть оценен.
  • Эти метрики, которые использовались ранее в программе, помогают снизить риски.

Преимущества цикломатической сложности:.

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

Недостатки цикломатической сложности:

  • Это мера сложности управления программами, а не данные - сложность данных.
  • В этом случае вложенные условные структуры труднее понять, чем невложенные.
  • В случае простых сравнений и схем принятия решений это может дать неверную цифру.

Ссылка: https://en.wikipedia.org/wiki/Cyclomatic_complexity

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.