Um Engenheiro da Computação atua como um consultor sênior e...

Próximas questões
Com base no mesmo assunto
Q3882864 Engenharia de Software
Um Engenheiro da Computação atua como um consultor sênior em um projeto de lei que exige o desenvolvimento de um sistema de inteligência artificial para prever o impacto fiscal de novas emendas constitucionais. O projeto é de alto risco, alta visibilidade política e tem requisitos evolutivos.
Esse Engenheiro está revisando um módulo que viola o princípio de Responsabilidade Única (SRP) do SOLID. O módulo ManipuladorDeVotos é responsável por persistir o voto e por gerar o relatório estatístico do voto.
Assinale a afirmativa correta em relação ao efeito arquitetural primário da violação do SRP nesse cenário.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: C

Fundamento decisivo: O módulo ManipuladorDeVotos acumula persistência de voto e geração de relatório estatístico, ou seja, reúne responsabilidades distintas no mesmo componente.

Tema central: SRP, coesão e acoplamento
Análise das alternativas
A
Errada
Errada. Misturar persistência de voto com geração de relatório não aumenta coesão lógica; ao contrário, evidencia múltiplas responsabilidades no mesmo módulo. O critério decisivo é que violação do SRP implica piora de coesão, não aumento.
B
Errada
Errada. Um módulo que acumula responsabilidades distintas fica menos reutilizável, porque leva junto comportamentos que podem não interessar em outros contextos. O critério decisivo é que a reutilização tende a cair quando o módulo faz mais do que uma única responsabilidade.
C
Certa
A alternativa C está certa porque a reunião de responsabilidades distintas no mesmo módulo indica violação do SRP e piora da modularidade, com tendência a maior acoplamento.
D
Errada
Errada. O SRP se relaciona diretamente com a qualidade modular, especialmente com coesão e, de forma associada, com acoplamento. Portanto, não é tecnicamente sustentável tratá-lo como irrelevante para esses atributos.
E
Errada
Errada. Violação do SRP não implica complexidade ciclomática baixa, porque essa métrica depende do fluxo de controle, e não da simples existência de mais de uma responsabilidade no módulo. Não há nexo necessário entre o problema descrito e baixa complexidade ciclomática.
Pegadinha da questão
A confusão real era trocar o efeito de perda de coesão pelo efeito arquitetural que a alternativa correta explicitou: maior acoplamento. Outra armadilha era supor que juntar funções no mesmo módulo melhora reutilização ou autoriza concluir algo sobre complexidade ciclomática.
Dica para questões semelhantes
  • Se o módulo concentra responsabilidades distintas, identifique múltiplos motivos de mudança: isso sinaliza violação do SRP.
  • Em questões comparativas, diferencie coesão e acoplamento: violar SRP compromete a coesão e tende a ampliar dependências.
  • Não conclua sobre complexidade ciclomática sem informação sobre fluxo de controle; responsabilidade e métrica de decisão são planos diferentes.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

GABARITO C.

o princípio 'S' prega que cada módulo deve possuir apenas uma responsabilidade (entende-se como método).

veja que o modulo ManipuladorDeVotos tem duas responsabilidades: persistir voto e gerar o relatório estatístico dos votos.

isso cria dois motivos distintos para alterar o mesmo módulo:

-mudanças na regra de persistência (ORM, banco, transação, etc.)

ou

-mudanças na lógica de cálculo ou formatação do relatório.

quando dois aspectos distintos são colocados no mesmo módulo, eles ficam obrigatoriamente acoplados entre si: qualquer mudança em um implica tocar o mesmo artefato, o que reduz a separação de preocupações e aumenta o acoplamento.

Alto Acoplamento: Como a classe faz duas coisas totalmente diferentes, ela precisa "importar" as bibliotecas de banco de dados E as bibliotecas de geração de gráficos/PDF. Ela fica dependente (acoplada) a múltiplos pacotes externos. Pior ainda: o módulo que quer apenas salvar um voto acaba sendo obrigado a "carregar" o código de gerar relatório junto com ele.

Gabarito: C

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo