Violação do SRP – Efeito Arquitetural
Gabarito: letra C. A violação do Princípio da Responsabilidade Única (SRP) leva a um alto acoplamento, pois um módulo que assume múltiplas responsabilidades acaba dependendo de mais módulos e forçando dependências desnecessárias em outros contextos.
O SRP (Single Responsibility Principle) afirma que uma classe ou módulo deve ter apenas um motivo para mudar. No cenário, o módulo ManipuladorDeVotos acumula persistência do voto e geração de relatório estatístico – duas responsabilidades distintas. Isso faz com que ele se acople a mais elementos (banco de dados, fontes de dados para relatório) e que outros módulos que dependem dele herdem essas dependências, elevando o acoplamento. A coesão, por outro lado, é reduzida, pois os elementos internos não estão focados em um único propósito.
Aspecto Analisado | Efeito da Violação do SRP | Relação com Acoplamento/Coesão | Consequência Arquitetural |
|---|
Coesão | Reduzida (coesão acidental) | Responsabilidades distintas no mesmo módulo | Baixa coesão, dificulta manutenção |
Reutilização | Prejudicada | Módulo carrega funcionalidades não relacionadas | Menos reutilizável em outros contextos |
Acoplamento | Aumentado (Gabarito – C) | Módulo depende de mais artefatos (banco, fontes de relatório) | Alto acoplamento, dependências desnecessárias |
Complexidade Ciclomática | Aumentada | Mais caminhos de decisão e fluxos internos | Maior complexidade, não baixa |
Relevância do SRP | Diretamente relevante | Princípio fundamental para métricas de qualidade | Violação impacta negativamente coesão e acoplamento |
Alternativa A — ❌ Incorreta
A violação do SRP reduz a coesão, não a aumenta. Coesão lógica é um tipo de coesão baixa; o módulo agora possui responsabilidades não relacionadas, o que resulta em coesão acidental, ainda mais baixa.
Alternativa B — ❌ Incorreta
Módulos com múltiplas responsabilidades são menos reutilizáveis, pois quem precisa de apenas uma funcionalidade é obrigado a carregar as demais, dificultando o reúso em contextos diferentes.
Alternativa C — ✅ Correta ⟜ GABARITO
O acúmulo de responsabilidades no mesmo módulo aumenta o acoplamento: o módulo passa a depender de mais artefatos e, por sua vez, outros módulos que o utilizam ficam acoplados a essas dependências extras. Em engenharia de software, busca-se baixo acoplamento e alta coesão – o oposto do que ocorre aqui.
Alternativa D — ❌ Incorreta
O SRP é diretamente relevante para acoplamento e coesão. Sua violação tipicamente reduz a coesão e eleva o acoplamento, sendo um dos princípios fundamentais para manter essas métricas saudáveis.
Alternativa E — ❌ Incorreta
A complexidade ciclomática tende a aumentar quando um módulo acumula responsabilidades, pois cresce o número de caminhos de decisão e fluxos lógicos internos, não o contrário.
Gabarito: letra C