Questão nº 7
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 7)
O analista José desenvolveu a aplicação CVMapaB observando a arquitetura hexagonal. Para a interação com o usuário, a CVMapaB disponibiliza uma interface gráfica de usuário e uma interface de linha de comando, a cvmapb, com ambas as interfaces capazes de realizar as mesmas operações. A aplicação também disponibiliza uma Application Programming Interface (API) web RESTful, capaz de realizar parte das operações disponíveis na cvmapb. A CVMapaB utiliza o sistema gerenciador de banco de dados da CVM para persistir os dados do usuário. A aplicação possui, ainda, implementações específicas para a publicação de métricas de desempenho. As métricas são remetidas pela CVMapaB ao pipeline de processamento de dados em tempo real da CVM.
Com base no enunciado e à luz da arquitetura hexagonal, são identificáveis na CVMapaB:
- Atrês portas primárias, duas portas secundárias, um adaptador primário e um adaptador secundário;
- Bduas portas primárias, duas portas secundárias, um adaptador primário e dois adaptadores secundários;
- Cduas portas primárias, uma porta secundária, dois adaptadores primários e três adaptadores secundários;
- Dduas portas primárias, uma porta secundária, três adaptadores primários e dois adaptadores secundários;
- Euma porta primária, duas portas secundárias, três adaptadores primários e dois adaptadores secundários. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
A Arquitetura Hexagonal (também conhecida como Ports and Adapters) visa isolar a lógica de negócio central de detalhes externos, como interfaces de usuário, bancos de dados e serviços. Ela faz isso definindo portas (interfaces que a aplicação usa ou expõe) e adaptadores (implementações concretas que conectam a porta a uma tecnologia específica).
- Portas Primárias (Driving Ports): Interfaces que a aplicação expõe para ser "dirigida" por agentes externos (usuários, outras aplicações).
- Adaptadores Primários (Driving Adapters): Agentes externos que usam as portas primárias para interagir com a aplicação (ex: GUI, CLI, API REST).
- Portas Secundárias (Driven Ports): Interfaces que a aplicação precisa para se comunicar com serviços externos (ex: banco de dados, sistema de mensageria).
- Adaptadores Secundários (Driven Adapters): Implementações concretas de serviços externos que atendem às portas secundárias (ex: driver de banco de dados, cliente de API externa).
Analisando o cenário da CVMapaB:
Portas Primárias e Adaptadores Primários:
A aplicação é "dirigida" por três interfaces:
- Interface Gráfica de Usuário (GUI)
- Interface de Linha de Comando (CLI -
cvmapb) - API web RESTful
Todas elas realizam as "mesmas operações" ou "parte das operações", o que indica que estão interagindo com o mesmo conjunto de funcionalidades expostas pela aplicação. Portanto, há uma única Porta Primária que define as operações que a aplicação pode realizar, e três Adaptadores Primários (GUI, CLI, API REST) que a utilizam.
Portas Secundárias e Adaptadores Secundários:
A aplicação "precisa" interagir com dois sistemas externos:
- Sistema gerenciador de banco de dados da CVM: Para "persistir os dados do usuário". Isso implica uma Porta Secundária para persistência de dados e um Adaptador Secundário (o SGBD da CVM).
- Pipeline de processamento de dados em tempo real da CVM: Para "publicação de métricas de desempenho". Isso implica uma Porta Secundária para publicação de métricas e um Adaptador Secundário (o pipeline da CVM).
Portanto, há duas Portas Secundárias e dois Adaptadores Secundários.
Resumo: 1 Porta Primária, 3 Adaptadores Primários, 2 Portas Secundárias, 2 Adaptadores Secundários.
(A) Incorreta: Aponta três portas primárias e um adaptador primário, o que contradiz a análise de que há uma única porta primária servida por múltiplos adaptadores.
(B) Incorreta: Aponta duas portas primárias e um adaptador primário, o que também contradiz a análise.
(C) Incorreta: O número de portas e adaptadores primários e secundários está incorreto em relação à análise.
(D) Incorreta: Aponta duas portas primárias e uma porta secundária, o que está incorreto. A armadilha aqui é confundir a quantidade de formas de interação (adaptadores) com a quantidade de interfaces (portas primárias), ou subestimar as necessidades de comunicação externa (portas secundárias).
(E) Correta: Uma porta primária (a interface que define as operações da aplicação), duas portas secundárias (uma para persistência de dados e outra para publicação de métricas), três adaptadores primários (GUI, CLI e API REST) e dois adaptadores secundários (o SGBD da CVM e o pipeline de métricas da CVM).
Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.