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

Цикломатичната сложност е разработена от Thomas J. McCabe през 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 код:

Тази програма изчислява серията fibonacii като:

0 + 1 = 1

1 + 1 = 2

2 + 1 = 3

3 + 2 = 5

5 + 3 = 8

8 + 5 = 13

// Следващата програма е просто да отпечатате серията fibonacii

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

> java Printno

О / р:

Серията fibonacii е: 0

1

1

2

3

5

8

13

Разгледайте по-подробно горната програма. Ще намерите един, докато цикъл. Тази програма се състои само от един, докато цикъл.

Сега е времето да нарисувате графика за него.

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

Блок-схема

Сега, за да изчислим сложността на горната програма, първо трябва да изчислим общия не. на ръбовете:

Общо не. на ръбовете: 6

Сега, изчислете общия no.of възли.

Общ брой на възлите: 5

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

М = 6 -5 + 2

М = 1 + 2

М = 3

И така, цикломатичната сложност за тази програма е 3.

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

Видове сложност

Има два вида сложност:

Основна сложност :

Тази сложност е вид код, който не можем да игнорираме.

Ex. Системата за управление на полетите е по-сложна.

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

Както името го подсказва, защото в системата се е случило нещо като отстраняване на грешки, кръпка, модификация и т.н. Най-вече работим само върху Случайната сложност.

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

  • Тъй като простата логика, ако сложността намалее, ние сме по-удобни за разбиране.
  • Ако по-сложната програма е налице, тогава програмистът трябва да се откаже от липсата на възможности.
  • Преброените по сложност пътища показват, че програма, написана от програма, е сложна или можем да продължим напред и да намалим сложността.
  • Намалява свързването на кода.
  • Да предположим, че една програма има цикломатична сложност от 5, което означава, че има 5 различни независими пътя през метода.
  • Това означава, че за изпълнение на този код за тестване трябва да бъдат направени 5 тестови случая.
  • Следователно винаги е добре да се получи по-малко число за цикломатична сложност.
  • Този процес е необходим, тъй като силно свързаният код е много труден за промяна.
  • Колкото по-голяма е сложността на кода, което означава, че кодът също е по-сложен.

Инструментите, използвани за изчисляване на цикломатичната сложност са

  • Cyclo
  • СССС
  • McQabe IQ
  • GCov
  • Покритие на Bullseye
  • PMD
  • LC2
  • Findbugs
  • Jarchitect

заключение

Цикломатичната сложност е мярката на сложността на програмата. Тази мярка ни помага да разберем необходимата работа, която трябва да се свърши и колко сложен ще бъде софтуерът. Цикломатичната сложност е част от тестовете за бяла кутия.

Препоръчителни статии

Това е ръководство за цикломатичната сложност. Тук обсъждаме Как да изчислим цикломатичната сложност? заедно с Предимства и видове сложност. Можете също да разгледате следните статии, за да научите повече -

  1. Въведение в Linux
  2. Въведение в C ++
  3. Какво е HTML5?
  4. Какво е хибернация?