Введение в цикломатическую сложность

Цикломатическая сложность была разработана Томасом Дж. МакКейбом в 1976 году. Он рекомендовал программистам учитывать сложность модулей, над которыми они работают, и разбивать их на более мелкие модули, чтобы всякий раз, когда цикломатическая сложность модуля превышала 10. 10 максимальная цикломатическая сложность для одной программы. Это измерение сложности исходного кода, которое связано с рядом ошибок кодирования. Он определяет независимые пути, которые были бы очень полезны для разработчиков и тестеров.

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

Определение

Цикломатическая сложность кода - это количество линейно независимых путей в нем.

Как рассчитать цикломатическую сложность?

Расчет цикломатической сложности программы очень прост по следующей формуле.

Цикломатическая сложность = E - N + 2P

  • E => Нет. ребер графа
  • N => Количество узлов графа
  • P => Нет подключенных компонентов

Существует альтернативная формула, если мы рассмотрим точку выхода, которая возвращается к вашей точке входа. И вы создадите это как цикл.

Цикломатическая сложность = E - N + P

Цикломатическая сложность = E - N + 1

У нас есть еще один способ рассчитать это. Это более простой способ.

  1. Нарисовать график
  2. Затем подключите точку выхода к точке входа
  3. А затем посчитать отверстия в графике

Посмотрите на следующий рисунок:

Ниже приведены некоторые обозначения потоковых диаграмм:

Если-то-иначе:

Пока:

Делать пока:

За:

Если в программе нет цикла, ее сложность ниже. Когда программа встречает какой-либо цикл, сложность возрастает.

Предположим, у нас есть один, если условие определено, тогда мы получили сложность как 2. Из-за того, что условие имеет два условия True и False.

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

Разные языки имеют разные инструменты для измерения цикломатической сложности программы.

Шаги для расчета цикломатической сложности следующие

  1. Нарисуйте блок-схему или графическую диаграмму из кода.
  2. Теперь, на втором шаге проверьте и определите, сколько у него независимых путей.
  3. Затем рассчитайте цикломатическую сложность по формуле, указанной ниже:

M = E –N + 2P

  1. В соответствии с мерой дизайна тестовых случаев.

Теперь вы можете получить вопрос о том, как он может быть рассчитан на самом деле. Давайте пойдем дальше и поймем, как мы на самом деле собираемся рассчитать это.

Рассмотрим следующий пример кода Java:

Эта программа вычисляет ряд Фибоначчи как:

0 + 1 = 1

1 + 1 = 2

2 + 1 = 3

3 + 2 = 5

5 + 3 = 8

8 + 5 = 13

// Следующая программа должна просто напечатать серию Фибоначчи

class Printno (
Public static void main(String() args)(
int max = 20 ;
int pre = 0;
int next = 1;
System.out.println(“The Fibonacii series is : ” +prev);
While(next<= max)(
System.out.println(next);
Sum = prev + next;
Prev = next;
Next =sum;
)
)
)

> javac Printno.java

> Ява Принтно

O / P:

Фибонация серии это: 0

1

1

2

3

5

8

13

Давайте внимательнее посмотрим на вышеуказанную программу. Вы найдете один цикл. Эта программа состоит только из одного цикла while.

Теперь пришло время нарисовать график для этого.

График потока управления, как показано ниже:

блок - схема

Теперь, чтобы рассчитать сложность вышеприведенной программы, сначала нам нужно рассчитать общее количество нет. краев:

Всего № ребер: 6

Теперь вычислите общее количество узлов.

Общее количество Nodes: 5

Формула: M = EN + 2p

М = 6 -5 + 2

М = 1 + 2

М = 3

Таким образом, цикломатическая сложность для этой программы составляет 3.

Сложные коды сложно поддерживать и обновлять или модифицировать. Как мы все знаем, цикломатическая сложность не должна превышать 10.

Типы сложности

Есть два типа сложности:

Существенная сложность :

Эта сложность является типом кода, который мы не можем игнорировать.

Ex. Система управления полетом является более сложной.

Случайная сложность:

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

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

  • Как простая логика, если сложность уменьшается, нам удобнее понимать.
  • Если есть более сложная программа, то программисту не нужно увеличивать возможности.
  • Пути, подсчитанные по сложности, показывают, что программа, написанная программой, сложна, или мы можем пойти дальше и уменьшить сложность.
  • Это уменьшает сцепление кода.
  • Предположим, что программа имеет цикломатическую сложность 5. Это означает, что в этом методе есть 5 различных независимых путей.
  • Это означает, что для реализации этого кода для тестирования необходимо выполнить 5 контрольных примеров.
  • Следовательно, всегда полезно получить меньшее число для цикломатической сложности.
  • Этот процесс необходим, потому что код с высокой связью очень трудно изменить.
  • Чем выше сложность кода, что означает, что код также сложнее.

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

  • Цикло
  • КПКГ
  • МакКейб IQ
  • GCov
  • Буллсай Покрытие
  • PMD
  • LC2
  • FindBugs
  • Jarchitect

Вывод

Цикломатическая сложность - это мера сложности программы. Эта мера помогает нам понять, какую работу необходимо выполнить, и насколько сложным будет программное обеспечение. Cyclomatic сложность является частью тестирования White Box.

Рекомендуемые статьи

Это было руководство по цикломатической сложности. Здесь мы обсудим, как рассчитать цикломатическую сложность? наряду с преимуществами и типами сложности. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. Введение в Linux
  2. Введение в C ++
  3. Что такое HTML5?
  4. Что такое Hibernate?