Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — FGV 2026

Engenharia de SoftwareGeral
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.

  1. APontos de Função
  2. BCobertura de Testes
  3. CMétrica de defeitos por KLOC
  4. DComplexidade Ciclomática
  5. 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.

Gabarito: letra D

Link permanente: /questoes/fg157242