Questão de Engenharia de Software — Diagrama de Objetos — FUNDATEC 2023
Engenharia de Software›Diagrama de Objetos
Código
qq896848
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Programação de Sistemas na Tecnologia Microsoft
Quais são as principais vantagens da utilização de injeção de dependências em um projeto de software?
AAumento da coesão e diminuição do acoplamento.
BFacilidade para testes unitários e maior flexibilidade do código fonte.
CPossibilidade de reutilização completa de código e maior segurança de sua execução.
DDiminuição da complexidade e ganho visível de performance.
ENenhuma das anteriores.
Revelar gabarito e comentário▾
GabaritoB — Facilidade para testes unitários e maior flexibilidade do código fonte.
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”.
Injeção de Dependências
Gabarito: letra B. A injeção de dependências é uma técnica que promove o baixo acoplamento e a alta coesão, resultando em duas vantagens principais: facilidade para testes unitários (pois permite substituir dependências reais por mocks ou stubs) e maior flexibilidade do código fonte (é possível trocar implementações sem alterar as classes que as utilizam). Esses benefícios são amplamente reconhecidos na engenharia de software moderna.
A injeção de dependências consiste em fornecer os objetos que uma classe necessita (suas dependências) de fora, em vez de a própria classe instanciá-los. Isso reduz o acoplamento entre módulos e aumenta a testabilidade e a manutenibilidade do sistema.
Injeção de dependências: Conceito (Dependências fornecidas externamente, Cliente não instancia); Benefícios (Baixo acoplamento, Alta testabilidade (mocks/stubs), Flexibilidade (troca de implementações)); Não garante (Reutilização completa, Segurança de execução, Ganho de performance)
Alternativa A — ❌ Incorreta
Afirma que a injeção de dependências aumenta a coesão e diminui o acoplamento. Embora a técnica realmente contribua para o baixo acoplamento, ela não é a principal responsável pelo aumento de coesão; a coesão está mais relacionada à responsabilidade interna de um módulo. Além disso, a questão pede as principais vantagens da utilização da técnica, e a alternativa não captura os aspectos mais enfatizados na prática: testabilidade e flexibilidade. Por isso, não é a melhor resposta.
Alternativa B — ✅ Correta ⟵ GABARITO
A injeção de dependências facilita os testes unitários ao permitir que dependências sejam facilmente substituídas por objetos simulados (mocks), isolando a unidade sob teste. Também confere maior flexibilidade, pois é possível alterar implementações (ex.: trocar um banco de dados por outro) sem modificar o código cliente. Essas são as vantagens mais frequentemente citadas pela literatura e pela prática.
Alternativa C — ❌ Incorreta
A injeção de dependências não garante a reutilização completa de código, nem aumenta a segurança de execução. Ela pode até introduzir complexidade adicional (configuração, containers). A segurança é um atributo que depende de outros fatores, como validação e criptografia, não sendo um benefício direto da técnica.
Alternativa D — ❌ Incorreta
A injeção de dependências pode, em alguns casos, até aumentar a complexidade (devido à configuração de contêineres e arquivos de injeção), e não oferece ganho visível de performance — pelo contrário, pode adicionar uma pequena sobrecarga durante a injeção. O foco da técnica não é desempenho, sim manutenibilidade e testabilidade.
Alternativa E — ❌ Incorreta
Como a alternativa B está correta, a opção "Nenhuma das anteriores" é falsa.
PEGA ESSA DICA!
Em questões sobre injeção de dependências, lembre-se sempre de associá-la a testabilidade e flexibilidade. Ela não é uma técnica de otimização de performance ou segurança. Na prova, ao ver uma questão similar, desconfie de alternativas que mencionem ganho de velocidade ou segurança como vantagem principal.