Questão de Arquitetura de Software — Arquitetura em camadas — FGV 2024
Arquitetura de Software›Arquitetura 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:
Aentidades, aplicando a segregação de interface;
Bentidades, aplicando a inversão de dependência;
Ccasos de uso, aplicando a segregação de interface;
Dadaptadores, aplicando a segregação de interface;
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).