Questão nº 55
Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 55)
Roberto está utilizando a UML para modelar um sistema de
gerenciamento e monitoramento de pedidos. Ele definiu um
processo assíncrono, que envolve a tela cliente emitindo os
pedidos para um serviço, para o tratamento no servidor, além de
uma callback no cliente, exibindo a conclusão do processo.
Para modelar o fluxo de execução descrito, Roberto utilizou:
- Aum diagrama de atividades iniciado com enviar_pedido, do Cliente, seguido de um fork, que abre para um receive signal de concluído, no Cliente, e ler_pedido, seguido da emissão de concluído, no Servidor, com os fluxos sincronizados por um join, tendo na sequência a exibição da conclusão, no Cliente; (alternativa correta)
- Bum diagrama de sequência com Usuario, Cliente e Serviço, onde Usuario invoca enviar_pedido, de Cliente, este invoca ler_pedido, de Serviço, o qual invoca informar_conclusao, de Cliente, ao final da sequência;
- Cum diagrama de estados para o canal de comunicação entre Cliente e Serviço, indicando os estados do protocolo;
- Dum diagrama de pacotes, contemplando os artefatos Cliente e Servidor, com as respectivas responsabilidades;
- Eum diagrama de classes contendo as classes Cliente e Serviço, no qual o Cliente tem os métodos enviar_pedido e verificar, este segundo com marcação assíncrona, e Serviço tem os métodos ler_pedido e informar_conclusao.
Resposta comentada
Gabarito Alternativa A
UML (Unified Modeling Language) é uma linguagem visual padrão para modelar sistemas de software, ajudando a entender e comunicar como eles funcionam. Um processo assíncrono significa que uma ação (como enviar um pedido) não bloqueia o sistema que a iniciou, permitindo que ele continue outras tarefas enquanto espera por uma resposta ou conclusão posterior.
(A) Correta: Um diagrama de atividades é ideal para modelar fluxos de trabalho e processos, incluindo os paralelos e assíncronos. O `fork` (divisão) permite que o fluxo se divida em caminhos paralelos: um para o cliente aguardar o sinal de conclusão (`receive signal`) e outro para o servidor processar (`ler_pedido`) e emitir o sinal (`emissão de concluído`). O `join` (junção) sincroniza esses camais, garantindo que ambos os lados tenham progredido antes de exibir a conclusão. Isso representa perfeitamente o comportamento assíncrono e de callback.
(B) Incorreta: Um diagrama de sequência mostra a ordem das interações entre objetos. Embora possa representar callbacks, a descrição dada (Usuario -> Cliente -> Serviço -> Cliente) geralmente implica uma sequência de chamadas síncronas onde cada chamada aguarda o retorno da anterior. Para modelar assincronia de forma explícita, seriam necessárias notações específicas (como mensagens assíncronas com setas abertas) e a separação clara do tempo de vida do cliente não bloqueado, o que não é evidente na descrição. A armadilha aqui é que o diagrama de sequência pode mostrar interações, mas a forma como é descrito não captura a natureza não bloqueante e paralela do processo assíncrono com `fork` e `join` tão bem quanto o diagrama de atividades.
(C) Incorreta: Um diagrama de estados modela o ciclo de vida de um único objeto ou sistema através de seus diferentes estados e transições. Ele não é adequado para descrever o fluxo de execução de um processo que envolve a interação e paralelismo entre múltiplos componentes como cliente e servidor.
(D) Incorreta: Um diagrama de pacotes é usado para organizar elementos do modelo em grupos lógicos (pacotes) e mostrar as dependências entre eles. Ele foca na estrutura de alto nível e organização do sistema, não no comportamento ou fluxo de execução.
(E) Incorreta: Um diagrama de classes descreve a estrutura estática do sistema, mostrando classes, seus atributos, métodos e relacionamentos. Embora defina as operações (`enviar_pedido`, `ler_pedido`), ele não mostra a ordem em que essas operações são executadas, nem o fluxo de controle, o paralelismo ou a natureza assíncrona do processo.
Fonte: FGV TRF1 2024 Técnico Judiciário - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.