Introduktion till cyklomatisk komplexitet

Cyklomatisk komplexitet utvecklas av Thomas J. McCabe 1976. Han rekommenderade att programmerare skulle räkna komplexiteten hos modulerna som de arbetar på och dela upp dem i mindre moduler så att när den cyklomatiska komplexiteten hos modulen överskrider 10. 10 är maximal cyklomatisk komplexitet för ett program. Det är en mätning av källkodens komplexitet som är relaterad till ett antal kodfel. Det bestämmer de oberoende vägarna, vilket skulle vara till stor hjälp för utvecklarna och testarna.

Detta hjälper till att testa programvaran och ger oss mer förtroende för att alla aspekter av vårt program har testats. Detta förbättrar kodkvaliteten och hjälper också till att koncentrera oss mer på osynliga vägar om några. Det beräknas generellt genom att utveckla en kontrollflödesgraf av koden som mäter antalet linjärt oberoende vägar genom ett program för att mäta komplexiteten hos ett kodstycke exakt. Detta hjälper till att förbättra programvarukvaliteten.

Definition

Kodens cyklomatiska komplexitet är antalet linjärt oberoende vägar i den beräknas.

Hur man beräknar cyklomatisk komplexitet?

Att beräkna programmets cyklomatiska komplexitet är mycket enkelt med följande formel.

Cyklomatisk komplexitet = E - N + 2P

  • E => Nej. på kanterna på grafen
  • N => Antalet noder i diagrammet
  • P => Antalet anslutna komponenter

Det finns en alternativ formel om vi tar hänsyn till utgångspunkten som går tillbaka till din startpunkt. Och du kommer att skapa det som en cykel.

Cyklomatisk komplexitet = E - N + P

Cyklomatisk komplexitet = E - N + 1

Vi har ytterligare ett sätt att beräkna detta. Detta är ett enklare sätt.

  1. Rita graf
  2. Anslut sedan utgångspunkten till startpunkten
  3. Och räkna sedan hål i diagrammet

Titta på följande figur:

Följande är några Flow Graph Notations:

Om då annars:

Medan:

Göra medan:

För:

Om programmet inte har någon slinga är dess komplexitet lägre. När programmet möter någon slinga blir komplexiteten ökad.

Anta att vi har ett om villkoret definierat så fick vi komplexitet som 2. På grund av att villkoret är att ha två villkor Sann och falsk.

Denna teknik används mest i grundläggande testning av den vita rutan. Cyklomatisk komplexitet representerar ett minimum nr. av tester som krävs för att utföra varje sökväg i koden.

Olika språk har olika verktyg för att mäta programmets cyklomatiska komplexitet.

Steg för att beräkna den cyklomatiska komplexiteten är som följer

  1. Rita flödesschemat eller ett diagram över koden.
  2. Kontrollera nu i det andra steget och identifiera hur många oberoende vägar den har.
  3. Beräkna sedan den cyklomatiska komplexiteten med formeln som nämns nedan:

M = E –N + 2P

  1. I enlighet med åtgärdens utformning av testfallen.

Nu kan du få en fråga om hur det faktiskt kan beräknas. Låt oss gå vidare och förstå hur vi faktiskt kommer att beräkna det.

Tänk på följande Java-kodexempel:

Detta program beräknar fibonacii-serien som:

0 + 1 = 1

1 + 1 = 2

2 + 1 = 3

3 + 2 = 5

5 + 3 = 8

8 + 5 = 13

// Följande program är att bara skriva ut 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 är: 0

1

1

2

3

5

8

13

Titta närmare på ovanstående program. Du hittar en medan slinga. Detta program består av endast en medan loop.

Nu är det dags att rita en graf för det.

Kontrollflödesdiagram enligt nedan:

Flödesschema

För att beräkna komplexiteten i ovanstående program måste vi först beräkna det totala antalet. av kanter:

Totalt antal på kanterna: 6

Beräkna nu det totala antalet noder.

Totalt antal noder: 5

Formel: M = EN + 2p

M = 6 -5 + 2

M = 1 + 2

M = 3

Så den cyklomatiska komplexiteten för detta program är 3.

Komplexa koder är svåra att underhålla och uppdatera eller ändra. Som vi alla vet att cyklomatisk komplexitet inte bör överstiga 10.

Typer av komplexitet

Det finns två typer av komplexitet:

Väsentlig komplexitet :

Denna komplexitet är en typ av kod som vi inte kan ignorera.

Ex. Flygledningssystemet är ett mer komplext system.

Oavsiktlig komplexitet:

Som namnet antyder är det något som hände som bugfixing, patchning, modifiering osv i systemet. Oftast arbetar vi bara med oavsiktlig komplexitet.

Fördelarna med cyklomatisk komplexitet:

  • Som enkel logik är vi bekvämare att förstå om komplexiteten minskar.
  • Om det mer komplexa programmet är där måste programmeraren cha = eck inga möjligheter ökar.
  • Vägar som räknas i komplexitet visar att ett program skrivet av ett program är komplext eller att vi kan gå vidare och minska komplexiteten.
  • Det minskar kodkopplingen.
  • Anta att ett program har cyklomatisk komplexitet på 5. det innebär att det finns 5 olika oberoende vägar genom metoden.
  • Detta innebär att 5 testfall måste göras för att implementera denna kod för testning.
  • Därför är det alltid bra att få ett mindre antal för cyklomatisk komplexitet.
  • Denna process krävs eftersom den mycket kopplade koden är mycket svår att modifiera.
  • Ju högre komplexitet ingen av koden som betyder kod är också mer komplex.

Verktyg som används för att beräkna cyklomatisk komplexitet är

  • Cyclo
  • CCCC
  • McCabe IQ
  • GCov
  • Bullseye täckning
  • PMD
  • LC2
  • Findbugs
  • Jarchitect

Slutsats

Cyklomatisk komplexitet är måtten på programkomplexiteten. Denna åtgärd hjälper oss att förstå det arbete som krävs och hur komplex programvaran kommer att bli. Cyklomatisk komplexitet är en del av White Box Testing.

Rekommenderade artiklar

Detta har varit en guide till cyklomatisk komplexitet. Här diskuterar vi hur man beräknar cyklomatisk komplexitet? tillsammans med fördelar och typer av komplexitet. Du kan också titta på följande artiklar för att lära dig mer -

  1. Introduktion till Linux
  2. Introduktion till C ++
  3. Vad är HTML5?
  4. Vad är viloläge?

Kategori: