Pular para o conteúdo principal

Questão de Arquitetura de Software — Arquitetura em camadas — FGV 2024

Arquitetura de SoftwareArquitetura em camadas
Código
fg077371
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
A analista Raquel foi designada para refatorar o código de um sistema à luz da Arquitetura Limpa. Raquel iniciou a tarefa assimilando os princípios de design utilizados pela arquitetura. A analista seguiu determinando a camada apropriada da Arquitetura Limpa para cada módulo do sistema. Logo após, Raquel revisou a implementação dos módulos A e B, que encapsulam regras de negócio específicas à aplicação. A analista removeu as referências diretas aos módulos A e B no código da camada interior adjacente, aplicando o princípio de design que garante a não violação da Regra da Dependência ao longo das camadas, durante o fluxo de controle.Raquel removeu as referências diretas aos módulos A e B da camada de:
  1. Aentidades, aplicando a segregação de interface;
  2. Bentidades, aplicando a inversão de dependência;
  3. Ccasos de uso, aplicando a segregação de interface;
  4. Dadaptadores, aplicando a segregação de interface;
  5. Eadaptadores, aplicando a inversão de dependência.
Revelar gabarito e comentário

GabaritoB — entidades, aplicando a inversão de dependência;

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”.

Arquitetura Limpa: Regra da Dependência e Inversão de Dependência

Gabarito: letra B. Raquel removeu referências diretas aos módulos A e B do código da camada de entidades, aplicando o princípio da inversão de dependência (Dependency Inversion Principle – DIP), que garante a não violação da Regra da Dependência (dependências apontam para dentro) durante o fluxo de controle.

Na Arquitetura Limpa (Clean Architecture), as camadas mais internas (entidades) não devem depender de implementações concretas de camadas mais externas (casos de uso ou adaptadores). Para evitar essa dependência direta, utiliza-se a inversão de dependência: a camada interna define interfaces (abstrações) que são implementadas pelas camadas externas. Dessa forma, a camada interna não referencia diretamente os módulos externos, mas apenas as abstrações, permitindo que o fluxo de controle ocorra sem violar a direção das dependências.

Camada

Princípio Aplicado

Justificativa

Gabarito

Entidades

Inversão de Dependência

Remove referências diretas a módulos externos, usando abstrações para respeitar a Regra da Dependência

✅ B

Entidades

Segregação de Interface

Princípio incorreto para garantir a não violação da Regra da Dependência

❌ A

Casos de Uso

Segregação de Interface

Camada e princípio incorretos

❌ C

Adaptadores

Segregação de Interface

Camada e princípio incorretos

❌ D

Adaptadores

Inversão de Dependência

Princípio correto, mas camada incorreta (adaptadores são externos)

❌ E

Arquitetura Limpa
  • 1Camadas (do centro para fora)
    • Entidades (mais interna)
    • Casos de uso
    • Adaptadores
    • Frameworks (mais externa)
  • 2Regra da Dependência
    • Dependências apontam para dentro
    • Fluxo de controle pode inverter
  • 3Princípios aplicados
    • Inversão de dependência (DIP)
      • Entidades definem interfaces
      • Externas implementam
    • Segregação de interface (ISP)
      • Interfaces coesas e específicas
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A alternativa afirma que a remoção ocorreu na camada de entidades com segregação de interface. A segregação de interface (ISP) é um princípio que trata de interfaces coesas e específicas, mas não é o princípio que garante a não violação da Regra da Dependência. O princípio correto é a inversão de dependência.

Alternativa B — ✅ Correta ⟵ GABARITO

A remoção foi na camada de entidades, aplicando inversão de dependência. Ao remover referências diretas aos módulos A e B das entidades e introduzir interfaces (abstrações), as entidades passam a depender de abstrações, não de implementações concretas, respeitando a Regra da Dependência.

Alternativa C — ❌ Incorreta

A alternativa sugere que a remoção foi na camada de casos de uso com segregação de interface. A camada correta é entidades, não casos de uso. Além disso, o princípio é inversão de dependência, não segregação de interface.

Alternativa D — ❌ Incorreta

A camada de adaptadores é mais externa que casos de uso; a remoção de referências a módulos de regras de negócio específicas (A e B) na camada de adaptadores não faz sentido, pois adaptadores já dependem de casos de uso. O princípio também está errado.

Alternativa E — ❌ Incorreta

Embora o princípio esteja correto (inversão de dependência), a camada está errada (adaptadores). A camada interior adjacente aos módulos A e B é entidades, não adaptadores.

NÃO CAIA NESSA!

A banca troca o princípio correto (inversão de dependência) por segregação de interface, que é outro princípio SOLID. Lembre-se: para remover dependências diretas a implementações concretas, o princípio aplicado é a inversão de dependência (DIP), não a segregação de interface (ISP).

Gabarito: letra B.

Link permanente: /questoes/fg077371