Introduktion til cyklomatisk kompleksitet

Cyklomatisk kompleksitet er udviklet af Thomas J. McCabe i 1976. Han anbefalede, at programmerere skulle tælle kompleksiteten af ​​modulerne, som de arbejder på, og opdele dem i mindre moduler, så når den cyklomatiske kompleksitet af modulet oversteg 10. 10 er maksimal cyklomatisk kompleksitet for et program. Det er en måling af kildekodekompleksiteten, der er relateret til et antal kodningsfejl. Det bestemmer de uafhængige stier, hvilket ville være meget nyttigt for udviklerne og testerne.

Dette hjælper med at teste softwaren og giver os mere tillid til, at alle aspekter af vores program er blevet testet. Dette forbedrer kodekvaliteten og hjælper også med at koncentrere sig mere om usynlige stier, hvis nogen. Det beregnes generelt ved at udvikle en kontrolstrømningsgraf for koden, der måler antallet af lineært uafhængige stier gennem et program for at måle kompleksiteten af ​​et stykke kode nøjagtigt. Dette hjælper med at forbedre softwarekvaliteten.

Definition

Den cyklomatiske kompleksitet af koden er antallet af lineært uafhængige stier inden for den beregnes.

Hvordan beregnes cyklomatisk kompleksitet?

Beregning af programmets cyklomatiske kompleksitet er meget let med følgende formel.

Cyklomatisk kompleksitet = E - N + 2P

  • E => Nej. på kanterne på grafen
  • N => Antallet af noder på grafen
  • P => Antallet af tilsluttede komponenter

Der er en alternativ formel, hvis vi overvejer udgangspunktet, der går tilbage til dit indgangspunkt. Og du vil oprette det som en cyklus.

Cyklomatisk kompleksitet = E - N + P

Cyklomatisk kompleksitet = E - N + 1

Vi har endnu en måde at beregne dette på. Dette er en mere nem måde.

  1. Tegn graf
  2. Forbind derefter udgangspunktet til indgangspunktet
  3. Og tæl derefter huller i grafen

Se på følgende figur:

Følgende er nogle flowdiagrammerotationer:

Hvis-så-ellers:

Mens:

Gøre imens:

Til:

Hvis programmet ikke har nogen løkke, er dets kompleksitet lavere. Når programmet støder på en hvilken som helst loop, bliver kompleksiteten øget.

Antag, at vi har en, hvis den tilstand, der er defineret, fik vi kompleksitet som 2. På grund af betingelsen er det at have to betingelser sandt og falskt.

Denne teknik anvendes mest til grundlæggende test af den hvide boks. Cyklomatisk kompleksitet repræsenterer et minimumsnr. af test, der kræves for at udføre hver sti i koden.

Forskellige sprog har forskellige værktøjer til at måle programmets cyklomatiske kompleksitet.

Trin til beregning af den cyklomatiske kompleksitet er som følger

  1. Tegn flowchart eller et grafisk diagram ud fra koden.
  2. I det andet trin skal du kontrollere og identificere, hvor mange uafhængige stier det har.
  3. Beregn derefter den cyklomatiske kompleksitet med formlen nævnt nedenfor:

M = E –N + 2P

  1. I henhold til målingen udformer testtilfældene.

Nu kan du få et spørgsmål om, hvordan det faktisk kan beregnes. Lad os gå videre og forstå, hvordan vi rent faktisk vil beregne det.

Overvej følgende Java-kodeeksempel:

Dette program beregner fibonacii-serien som:

0 + 1 = 1

1 + 1 = 2

2 + 1 = 3

3 + 2 = 5

5 + 3 = 8

8 + 5 = 13

// Det følgende program er bare at udskrive fibonacii-serien

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

O / p:

Fibonacii-serien er: 0

1

1

2

3

5

8

13

Se nærmere på ovenstående program. Du finder en mens løkke. Dette program består af kun en mens loop.

Nu er tiden inde til at tegne en graf for det.

Kontrol flow graf som nedenfor:

Flowchart

For at beregne kompleksiteten af ​​ovenstående program skal vi først beregne det samlede antal. af kanter:

Samlet antal på kanterne: 6

Beregn nu det samlede antal numre.

Samlet nr. Af knudepunkter: 5

Formel: M = EN + 2p

M = 6 -5 + 2

M = 1 + 2

M = 3

Så den cyklomatiske kompleksitet for dette program er 3.

Komplekse koder er vanskelige at vedligeholde og opdatere eller ændre. Som vi alle ved, at cyklomatisk kompleksitet ikke bør overstige 10.

Typer af kompleksitet

Der er to typer kompleksitet:

Væsentlig kompleksitet :

Denne kompleksitet er en type kode, som vi ikke kan ignorere.

Eks. Flystyringssystemet er et mere komplekst system.

Tilfældig kompleksitet:

Som navnet antyder, fordi der skete noget som bug fixing, patching, ændring osv. I systemet. Oftest arbejder vi kun på utilsigtet kompleksitet.

Fordelene ved cyklomatisk kompleksitet:

  • Som enkel logik, hvis kompleksiteten mindskes, er vi mere praktiske at forstå.
  • Hvis det mere komplekse program er der, er programmereren nødt til at cha = eck, ingen muligheder forøges.
  • Stier, der tælles i kompleksitet, viser, at et program, der er skrevet af et program, er komplekst, eller at vi kan gå videre og reducere kompleksiteten.
  • Det reducerer koblingen af ​​kode.
  • Antag, at et program har cyklomatisk kompleksitet på 5. Det betyder, at der er 5 forskellige uafhængige stier gennem metoden.
  • Dette betyder, at der skal laves 5 testtilfælde for at implementere denne kode til test.
  • Derfor er det altid godt at få et mindre antal for cyklomatisk kompleksitet.
  • Denne proces er påkrævet, fordi den meget koblede kode er meget vanskelig at ændre.
  • Jo højere kompleksitet ingen af ​​koden, der betyder kode, også er mere kompleks.

Værktøjer, der bruges til beregning af cyklomatisk kompleksitet, er

  • Cyclo
  • CCCC
  • McCabe IQ
  • GCov
  • Bullseye-dækning
  • PMD
  • LC2
  • Findbugs
  • Jarchitect

Konklusion

Cyklomatisk kompleksitet er målet for programkompleksiteten. Denne foranstaltning hjælper os med at forstå det krævede arbejde, der skal udføres, og hvor kompliceret softwaren bliver. Cyklomatisk kompleksitet er en del af White Box Testing.

Anbefalede artikler

Dette har været en guide til cyklomatisk kompleksitet. Her diskuterer vi, hvordan man beregner cyklomatisk kompleksitet? sammen med fordele og typer kompleksitet. Du kan også se på de følgende artikler for at lære mere -

  1. Introduktion til Linux
  2. Introduktion til C ++
  3. Hvad er HTML5?
  4. Hvad er dvaletilstand?

Kategori: