Pular para o conteúdo principal

Questão de Arquitetura de Software — SOA (Service-oriented architecture) — FGV 2024

Arquitetura de SoftwareSOA (Service-oriented architecture)
Código
fg100835
Banca
FGV
Órgão
TRF - 1ª REGIÃO
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade: Análise de Sistemas de Informação
O sistema TRF1Web possui um módulo orientado a eventos, chamado TRF1Sync. No TRF1Sync, há um objeto central que implementa um loop síncrono, responsável por receber eventos de indicação. Ao receber um evento, o objeto central dispara a operação associada mediante um objeto manipulador de evento. Esse comportamento do TRF1Sync é resultado direto da aplicação do seguinte padrão da Pattern-Oriented Software Architecture:
  1. Areactor;
  2. Bproactor;
  3. Cproactor;
  4. Dobjeto ativo;
  5. Eobjeto monitor.
Revelar gabarito e comentário

GabaritoA — reactor;

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

Padrão Reactor em arquitetura orientada a eventos

Gabarito: letra A. O comportamento descrito — objeto central com loop síncrono que recebe eventos e os despacha para manipuladores — corresponde exatamente ao padrão Reactor, um dos padrões de arquitetura de software da Pattern-Oriented Software Architecture (POSA) para lidar com múltiplas requisições de forma síncrona e eficiente.

A questão testa a capacidade de diferenciar padrões de concorrência em sistemas orientados a eventos. O principal distrator é o Proactor, que realiza o mesmo papel mas de forma assíncrona, enquanto os demais padrões (Objeto Ativo, Objeto Monitor) têm propósitos distintos.

Alternativa A — ✅ Correta ⟵ GABARITO

O Reactor é um padrão síncrono no qual um demultiplexador de eventos (objeto central) fica em loop aguardando eventos, e ao recebê-los, invoca o manipulador associado. É exatamente o que o TRF1Sync faz: "objeto central que implementa um loop síncrono, responsável por receber eventos de indicação" e "dispara a operação associada mediante um objeto manipulador de evento".

Alternativas B e C (Proactor) — ❌ Incorretas

Ambas apontam Proactor, que é o padrão assíncrono equivalente. No Proactor, o loop de eventos é assíncrono — a operação é iniciada e o manipulador é chamado quando a operação completa, sem bloquear o despachante. O enunciado explicita "loop síncrono", o que invalida o Proactor.

NÃO CAIA NESSA!

A banca explora a semelhança entre Reactor (síncrono) e Proactor (assíncrono). O termo "síncrono" no enunciado é a chave para descartar o Proactor. Decore: Reactor = síncrono (bloqueante); Proactor = assíncrono (não bloqueante).

Alternativa D (Objeto Ativo) — ❌ Incorreta

O Active Object (Objeto Ativo) desacopla a execução do método da invocação, utilizando uma fila de requisições e um scheduler próprio. Não há um loop central aguardando eventos externos; o objeto ativo gerencia suas próprias threads internas. Não corresponde ao descrito.

Alternativa E (Objeto Monitor) — ❌ Incorreta

O Monitor Object (Objeto Monitor) é um padrão de sincronização de threads, usado para garantir exclusão mútua e coordenação de acesso a recursos compartilhados. Não tem relação com despacho de eventos externos.

Característica

Reactor

Proactor

Sincronia

Síncrono

Assíncrono

Como lida com eventos

Bloqueia até evento chegar

Inicia operação e prossegue

Loop central

Sim, loop síncrono

Não, utiliza completion handlers

Exemplo típico

Servidor web NIO Java

APIs de I/O assíncrono (AIO)

Gabarito: letra A.

Link permanente: /questoes/fg100835