Questão de Engenharia de Software — Geral — FGV 2026
Engenharia de Software›Geral
Código
fg157242
Banca
FGV
Órgão
ALERO
Ano
2026
Cargo
Ana Leg ( )
A equipe de Engenharia de Computação precisa avaliar a complexidade de um módulo de software antes de alocar recursos para sua manutenção. Uma métrica deve ser usada para quantificar o número de caminhos logicamente independentes através do código.
Assinale a métrica de software que mede a complexidade da lógica de controle de um programa.
APontos de Função
BCobertura de Testes
CMétrica de defeitos por KLOC
DComplexidade Ciclomática
ECobertura de Caminho
Revelar gabarito e comentário▾
GabaritoD — Complexidade Ciclomática
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Métricas de Software: Complexidade Ciclomática
Gabarito: letra D. A Complexidade Ciclomática é a métrica que quantifica o número de caminhos logicamente independentes através do código, medindo a complexidade da lógica de controle de um programa — exatamente o que o enunciado pede. As demais alternativas medem outros aspectos: Pontos de Função medem tamanho funcional, Cobertura de Testes e Cobertura de Caminho são critérios de teste, e defeitos por KLOC é uma métrica de qualidade/defeitos.
A Complexidade Ciclomática, proposta por Thomas McCabe em 1976, é uma métrica de software que mede a complexidade estrutural de um programa a partir do seu grafo de fluxo de controle. Ela conta o número de caminhos linearmente independentes — ou seja, caminhos que apresentam pelo menos uma nova condição ou um novo conjunto de comandos. O valor resultante indica quantos casos de teste, no mínimo, precisam ser executados para garantir que todos os fluxos possíveis do código sejam verificados, assegurando uma cobertura completa de testes.
O cálculo pode ser feito de três formas equivalentes: (1) a partir do grafo de fluxo de controle, usando a fórmula V(G) = E − N + 2, onde E é o número de arestas e N o número de nós; (2) contando os nós de decisão (desvios condicionais) e somando 1; ou (3) contando as regiões fechadas do grafo. Quanto maior a complexidade ciclomática, maior o número de caminhos possíveis e, consequentemente, maior o esforço necessário para testar o módulo — o que justifica seu uso na alocação de recursos para manutenção.
A métrica é amplamente utilizada na prática porque correlaciona-se com a dificuldade de manutenção e com a propensão a defeitos: módulos com alta complexidade ciclomática tendem a ser mais difíceis de entender, testar e modificar. Por isso, muitas organizações estabelecem limites máximos aceitáveis (comumente 10) para a complexidade ciclomática de funções ou métodos, como parte de suas diretrizes de qualidade de código.
A pegadinha desta questão está em distinguir métricas de complexidade de métricas de tamanho e de critérios de teste. Pontos de Função medem o tamanho funcional do software pela perspectiva do usuário, independentemente da tecnologia; defeitos por KLOC mede a densidade de defeitos em relação ao tamanho do código; e Cobertura de Testes e Cobertura de Caminho são critérios de adequação de testes, não métricas de complexidade do código em si. A Complexidade Ciclomática é a única que mede diretamente a complexidade da lógica de controle.
Guarde a fronteira entre o que cada métrica mede: tamanho (Pontos de Função, KLOC), complexidade (Ciclomática), qualidade/defeitos (defeitos por KLOC) e adequação de testes (cobertura). É exatamente nessa distinção que as alternativas se dividem.
Métricas de software
1Tamanho
Pontos de Função
KLOC
2Complexidade
Complexidade Ciclomática (McCabe)
Caminhos independentes
V(G) = E − N + 2
Limite comum: 10
3Qualidade/defeitos
Defeitos por KLOC
4Adequação de testes
Cobertura de Testes
Cobertura de Caminho
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Pontos de Função medem o tamanho funcional do software, baseado na funcionalidade percebida pelo usuário, independente da tecnologia utilizada. Não mede a complexidade da lógica de controle do código — pelo contrário, a análise de pontos de função nem sequer analisa o código-fonte, focando nas funções de dados e transações visíveis ao usuário.
Alternativa B — ❌ Incorreta
Cobertura de Testes é um critério de adequação de testes, não uma métrica de complexidade do código. Ela indica a porcentagem do código que foi exercitada pelos testes (por exemplo, cobertura de comandos, de decisões ou de condições), mas não quantifica o número de caminhos independentes do programa.
Alternativa C — ❌ Incorreta
A métrica de defeitos por KLOC (mil linhas de código) mede a densidade de defeitos do software, relacionando a quantidade de erros encontrados com o tamanho do código. É uma métrica de qualidade, não de complexidade da lógica de controle.
Alternativa D — ✅ Correta ⟵ GABARITO
A Complexidade Ciclomática, proposta por Thomas McCabe, mede exatamente o número de caminhos logicamente independentes através do código, a partir do grafo de fluxo de controle. O enunciado descreve precisamente essa métrica: quantificar caminhos independentes para avaliar a complexidade da lógica de controle. É a métrica clássica para esse fim, usada para estimar o esforço de teste e manutenção.
Alternativa E — ❌ Incorreta
Cobertura de Caminho é um critério de teste estrutural (caixa-branca) que exige que todos os caminhos possíveis do programa sejam executados pelos testes. Embora esteja relacionada aos caminhos do código, ela é um critério de adequação de testes, não uma métrica que quantifica a complexidade — e, na prática, é um critério impraticável para programas com loops, pois o número de caminhos pode ser infinito.
NÃO CAIA NESSA!
A banca mistura métricas de complexidade com critérios de teste e métricas de tamanho. Cobertura de Caminho (alternativa E) parece atraente por mencionar "caminhos", mas ela é um critério de teste, não uma métrica de complexidade. A Complexidade Ciclomática é a métrica que quantifica o número de caminhos independentes; a cobertura de caminho é o critério que verifica se todos foram testados. São conceitos complementares, mas distintos — e é essa distinção que separa a correta das demais.