Inleiding tot cyclomatische complexiteit

Cyclomatische complexiteit is ontwikkeld door Thomas J. McCabe in 1976. Hij adviseerde programmeurs om de complexiteit van de modules waaraan ze werken te tellen en deze op te splitsen in kleinere modules zodat telkens wanneer de cyclomatische complexiteit van de module 10 overschrijdt. maximale cyclomatische complexiteit voor één programma. Het is een meting van de complexiteit van de broncode die verband houdt met een aantal coderingsfouten. Het bepaalt de onafhankelijke paden, wat zeer nuttig zou zijn voor de ontwikkelaars en testers.

Dit helpt bij het testen van de software en geeft ons meer vertrouwen dat elk aspect van ons programma is getest. Dit verbetert de codekwaliteit en helpt ook meer te concentreren op onzichtbare paden indien aanwezig. Het werd in het algemeen berekend door het ontwikkelen van een controlestroomgrafiek van de code die het aantal lineair onafhankelijke paden door een programma meet om de complexiteit van een stuk code nauwkeurig te meten. Dit helpt om de softwarekwaliteit te verbeteren.

Definitie

De cyclomatische complexiteit van de code is het aantal lineair onafhankelijke paden waarin het wordt berekend.

Hoe cyclomatische complexiteit berekenen?

Het berekenen van de cyclomatische complexiteit van het programma is heel eenvoudig met de volgende formule.

Cyclomatische complexiteit = E - N + 2P

  • E => Het nr. van randen van de grafiek
  • N => Het aantal knooppunten van de grafiek
  • P => Het aantal aangesloten componenten

Er is een alternatieve formule als we het uitgangspunt beschouwen dat naar uw ingangspunt teruggaat. En je maakt het als een cyclus.

Cyclomatische complexiteit = E - N + P

Cyclomatische complexiteit = E - N + 1

We hebben nog een manier om dit te berekenen. Dit is een gemakkelijkere manier.

  1. Grafiek tekenen
  2. Verbind vervolgens het uitgangspunt met het ingangspunt
  3. En tel vervolgens gaten in de grafiek

Bekijk de volgende afbeelding:

Hier volgen enkele stroomgrafieknotaties:

Als dan anders:

Terwijl:

Doen terwijl:

Voor:

Als het programma geen lus heeft, is de complexiteit ervan lager. Wanneer het programma een lus tegenkomt, neemt de complexiteit toe.

Stel dat we er een hebben als de voorwaarde is gedefinieerd, dan hebben we complexiteit als 2. Vanwege de voorwaarde is het hebben van twee voorwaarden Waar en Onwaar.

Deze techniek werd meestal gebruikt bij het basistesten van de witte doos. Cyclomatische complexiteit vertegenwoordigt een minimumnr. van tests vereist om elk pad in de code uit te voeren.

Verschillende talen hebben verschillende hulpmiddelen om de cyclomatische complexiteit van het programma te meten.

Stappen om de cyclomatische complexiteit te berekenen zijn als volgt

  1. Teken het stroomdiagram of een grafiekdiagram uit de code.
  2. Controleer nu in de tweede stap en identificeer hoeveel onafhankelijke paden het heeft.
  3. Bereken vervolgens de cyclomatische complexiteit met onderstaande formule:

M = E –N + 2P

  1. Volgens het meetontwerp de testgevallen.

Nu kunt u een vraag krijgen dat, hoe het daadwerkelijk kan worden berekend. Laten we doorgaan en begrijpen hoe we het daadwerkelijk gaan berekenen.

Overweeg het volgende Java-codevoorbeeld:

Dit programma berekent de fibonacii-reeks als:

0 + 1 = 1

1 + 1 = 2

2 + 1 = 3

3 + 2 = 5

5 + 3 = 8

8 + 5 = 13

// Volgend programma is om gewoon de fibonacii-serie af te drukken

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:

De fibonacii-serie is: 0

1

1

2

3

5

8

13

Bekijk het bovenstaande programma nader. Je zult er een while-lus vinden. Dit programma bestaat uit slechts één while-lus.

Nu is het tijd om er een grafiek voor te tekenen.

Controle stroom grafiek zoals hieronder:

flowchart

Om de complexiteit van het bovenstaande programma te berekenen, moeten we eerst het totale aantal berekenen. van randen:

Totaal aantal van randen: 6

Bereken nu het totale aantal knooppunten.

Totaal aantal knooppunten: 5

Formule: M = EN + 2p

M = 6-5 + 2

M = 1 + 2

M = 3

De cyclomatische complexiteit voor dit programma is dus 3.

Complexe codes zijn moeilijk te onderhouden en bij te werken of te wijzigen. Zoals we allemaal weten, mag de cyclomatische complexiteit de 10 niet overschrijden.

Soorten complexiteit

Er zijn twee soorten complexiteit:

Essentiële complexiteit :

Deze complexiteit is een soort code die we niet kunnen negeren.

Ex. Het vluchtbeheersysteem is complexer.

Accidentele complexiteit:

Zoals de naam al doet vermoeden, omdat er iets in het systeem is gebeurd, zoals bugfixing, patchen, modificatie, enz. Meestal werken we alleen aan Accidental complexity.

Voordelen van cyclomatische complexiteit:

  • Als eenvoudige logica, als complexiteit afneemt, zijn we handiger om te begrijpen.
  • Als het complexere programma aanwezig is, moet de programmeur het aantal mogelijkheden vergroten.
  • Paden geteld in complexiteit laten zien dat een programma geschreven door een programma complex is of dat we door kunnen gaan en de complexiteit kunnen verminderen.
  • Het vermindert de koppeling van code.
  • Stel dat een programma cyclomatische complexiteit heeft van 5. dat betekent dat er 5 verschillende onafhankelijke paden door de methode zijn.
  • Dit betekent dat er 5 testcases moeten worden gemaakt om deze code voor testen te implementeren.
  • Daarom is het altijd goed om een ​​lager aantal te krijgen voor cyclomatische complexiteit.
  • Dit proces is vereist omdat de sterk gekoppelde code erg moeilijk te wijzigen is.
  • Hoe hoger de complexiteit van de code, wat betekent dat code ook complexer is.

Hulpmiddelen die worden gebruikt voor het berekenen van cyclomatische complexiteit zijn

  • cyclo
  • CCCC
  • McCabe IQ
  • gcov
  • Bullseye-dekking
  • PMD
  • LC2
  • FindBugs
  • Jarchitect

Conclusie

Cyclomatische complexiteit is de maat voor de complexiteit van het programma. Deze maatregel helpt ons inzicht te krijgen in het vereiste werk en hoe complex de software zal zijn. Cyclomatische complexiteit maakt deel uit van White Box Testing.

Aanbevolen artikelen

Dit is een gids geweest voor cyclomatische complexiteit. Hier bespreken we hoe cyclomatische complexiteit te berekenen? samen met voordelen en soorten complexiteit. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Inleiding tot Linux
  2. Introductie tot C ++
  3. Wat is HTML5?
  4. Wat is Hibernate?