Introdução à complexidade ciclomática
A complexidade ciclomática é desenvolvida por Thomas J. McCabe em 1976. Ele recomendou que os programadores contassem a complexidade dos módulos nos quais estão trabalhando e os dividissem em módulos menores, de modo que sempre que a complexidade ciclomática do módulo exceder 10. 10 é a complexidade ciclomática máxima para um programa. É uma medida da complexidade do código-fonte que está sendo relacionada a vários erros de codificação. Ele determina os caminhos independentes, o que seria muito útil para os desenvolvedores e testadores.
Isso ajuda no teste do software e nos dá mais confiança de que todos os aspectos do nosso programa foram testados. Isso melhora a qualidade do código e também ajuda a se concentrar mais em caminhos invisíveis, se houver. Geralmente calculado através do desenvolvimento de um gráfico de fluxo de controle do código que mede o número de caminhos linearmente independentes por meio de um programa para medir com precisão a complexidade de um trecho de código. Isso ajuda a melhorar a qualidade do software.
Definição
A complexidade ciclomática do código é o número de caminhos linearmente independentes nele calculados.
Como calcular a complexidade ciclomática?
Calcular a complexidade ciclomática do programa é muito fácil pela seguinte fórmula.
Complexidade ciclomática = E - N + 2P
- E => O não. de arestas do gráfico
- N => O número de nós do gráfico
- P => O número de componentes conectados
Existe uma fórmula alternativa se considerarmos o ponto de saída que retorna ao seu ponto de entrada. E você o criará como um ciclo.
Complexidade ciclomática = E - N + P
Complexidade ciclomática = E - N + 1
Temos mais uma maneira de calcular isso. Esta é uma maneira mais fácil.
- Desenhar gráfico
- Em seguida, conecte o ponto de saída ao ponto de entrada
- E depois conte os furos no gráfico
Veja a figura a seguir:
A seguir, estão algumas notações do gráfico de fluxo:
Se-então-outro:
Enquanto:
Fazer enquanto:
Para:
Se o programa não estiver tendo nenhum loop, sua complexidade será menor. Quando o programa encontra qualquer loop, a complexidade aumenta.
Suponha que tenhamos um, se a condição definida, tivermos complexidade como 2. Por causa da condição, ter duas condições True e False.
Esta técnica é usada principalmente em testes básicos da caixa branca. A complexidade ciclomática representa um número mínimo não. de testes necessários para executar todos os caminhos no código.
Idiomas diferentes têm ferramentas diferentes para medir a complexidade ciclomática do programa.
As etapas para calcular a complexidade ciclomática são as seguintes
- Desenhe o fluxograma ou um diagrama gráfico a partir do código.
- Agora, na segunda etapa, verifique e identifique quantos caminhos independentes ele possui.
- Em seguida, calcule a complexidade ciclomática pela fórmula mencionada abaixo:
M = E –N + 2P
- De acordo com o design da medida, os casos de teste.
Agora, você pode ter uma pergunta que, como pode ser realmente calculada. Vamos seguir em frente e entender como vamos calculá-lo.
Considere o seguinte exemplo de código Java:
Este programa calcula a série fibonacii como:
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
// O programa a seguir é apenas imprimir a série 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
O / p:
A série fibonacii é: 0
1 1
1 1
2
3
5
8
13
Dê uma olhada no programa acima. Você encontrará um loop while. Este programa consiste em apenas um loop while.
Agora é a hora de desenhar um gráfico para isso.
Controle o gráfico de fluxo como abaixo:
Fluxograma
Agora, para calcular a complexidade do programa acima, primeiro precisamos calcular o total não. de arestas:
Total no. de arestas: 6
Agora, calcule o número total de nós.
Nº total de nós: 5
Fórmula: M = EN + 2p
M = 6 -5 + 2
M = 1 + 2
M = 3
Portanto, a complexidade ciclomática deste programa é 3.
Códigos complexos são difíceis de manter, atualizar ou modificar. Como todos sabemos, a complexidade ciclomática não deve exceder 10.
Tipos de complexidade
Existem dois tipos de complexidade:
Complexidade essencial :
Essa complexidade é um tipo de código que não podemos ignorar.
Ex. O sistema de gerenciamento de vôo é mais complexo.
Complexidade acidental:
Como o nome sugere, porque algo aconteceu como correção de bugs, patches, modificações, etc. no sistema. Principalmente, estamos trabalhando apenas na complexidade acidental.
Benefícios da complexidade ciclomática:
- Como lógica simples, se a complexidade diminuir, é mais conveniente entender.
- Se o programa mais complexo estiver lá, o programador precisará verificar que nenhuma das possibilidades é aumentada.
- Os caminhos contados em complexidade mostram que um programa escrito por um programa é complexo ou podemos prosseguir e reduzir a complexidade.
- Reduz o acoplamento do código.
- Suponha que um programa tenha complexidade ciclomática de 5. isso significa que existem 5 caminhos independentes diferentes através do método.
- Isso significa que 5 casos de teste devem ser feitos para implementar esse código para teste.
- Por isso, é sempre bom obter um número menor de complexidade ciclomática.
- Esse processo é necessário porque o código altamente acoplado é muito difícil de modificar.
- Quanto maior a complexidade do código, o que significa que o código também é mais complexo.
As ferramentas usadas para calcular a complexidade ciclomática são
- Ciclo
- CC0
- McCabe IQ
- GCov
- Cobertura Bullseye
- PMD
- LC2
- Findbugs
- Jarchitect
Conclusão
A complexidade ciclomática é a medida da complexidade do programa. Essa medida nos ajuda a entender o trabalho necessário a ser realizado e quão complexo será o software. A complexidade ciclomática faz parte do White Box Testing.
Artigos recomendados
Este foi um guia para a complexidade ciclomática. Aqui discutimos Como calcular a complexidade ciclomática? juntamente com Benefícios e tipos de complexidade. Você também pode consultar os seguintes artigos para saber mais -
- Introdução ao Linux
- Introdução ao C ++
- O que é HTML5?
- O que é o Hibernate?