Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — VUNESP 2024

Engenharia de SoftwareGeral
Código
vu212227
Banca
VUNESP
Órgão
Pref Osasco
Ano
2024
Cargo
Ana ( )

Considere o diagrama de sequência UML abaixo.

Imagem associada para resolução da questão

Assinale a alternativa correta a respeito do diagrama.

  1. AA mensagem msg2 representa uma chamada recursiva.
  2. BA mensagem msg1 é assíncrona, já que não possui mensagem de retorno.
  3. CA mensagem msg2 é assíncrona.
  4. DOs objetos a e b foram instanciados simultaneamente.
  5. EO objeto b foi instanciado por uma ocorrência de execução do objeto a.
Revelar gabarito e comentário

GabaritoC — A mensagem msg2 é assíncrona.

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

Diagrama de Sequência UML: mensagens síncronas e assíncronas

Gabarito: letra C. No diagrama de sequência UML, a mensagem msg2 é assíncrona, pois sua seta possui ponta aberta (não preenchida), indicando que o remetente não aguarda uma resposta imediata e pode continuar executando outras atividades. A mensagem msg1, por sua vez, é síncrona, representada por seta com ponta fechada (preenchida), e por isso possui uma linha de retorno tracejada. Essa distinção de notação é o ponto central da questão.

O diagrama de sequência é um diagrama comportamental da UML que descreve a interação entre objetos ao longo do tempo, enfatizando a ordem temporal das mensagens trocadas. Cada objeto é representado por uma linha de vida (linha vertical tracejada), e as mensagens são setas horizontais que ligam uma linha de vida a outra. A forma da ponta da seta é o que determina se a mensagem é síncrona ou assíncrona: seta com ponta fechada (triângulo preenchido) indica chamada síncrona, em que o remetente aguarda a conclusão do método chamado; seta com ponta aberta (triângulo vazio ou meia seta) indica chamada assíncrona, em que o remetente não bloqueia e segue seu fluxo. Mensagens síncronas costumam ter uma linha de retorno tracejada (mensagem de resposta), enquanto mensagens assíncronas não possuem retorno explícito.

No diagrama da questão, observa-se que msg1 parte do objeto a em direção ao objeto b com seta de ponta fechada, caracterizando uma chamada síncrona. Após a execução, há uma linha tracejada de retorno de b para a, confirmando a natureza síncrona. Já msg2 parte de a em direção a b com seta de ponta aberta, sem linha de retorno, caracterizando uma chamada assíncrona. Além disso, o objeto b é criado durante a execução do diagrama, o que é representado por um retângulo mais abaixo na linha de vida (instanciação), e não simultaneamente com a.

A banca explora a confusão entre os dois tipos de mensagem: muitos candidatos associam a ausência de retorno a assíncrona, mas esquecem que a forma da seta é o critério decisivo. Outra pegadinha é a instanciação: o objeto b não é instanciado por uma ocorrência de execução do objeto a, mas sim por uma mensagem de criação (estereótipo <<create>>), que não aparece no diagrama. A alternativa E tenta confundir a criação de b com uma chamada de método comum.

Guarde a regra: seta fechada = síncrona (com retorno); seta aberta = assíncrona (sem retorno). É exatamente essa distinção que separa as alternativas corretas das incorretas.

Alternativa A — ❌ Incorreta

A mensagem msg2 não é uma chamada recursiva. Recursão ocorre quando um objeto envia uma mensagem a si mesmo, ou seja, a seta parte e chega na mesma linha de vida. No diagrama, msg2 parte de a e chega em b, portanto é uma mensagem entre objetos distintos, não recursiva.

Alternativa B — ❌ Incorreta

A mensagem msg1 é síncrona, não assíncrona. A seta de msg1 possui ponta fechada (preenchida), indicando chamada síncrona, e há uma linha de retorno tracejada de b para a. A ausência de retorno não define assincronia; o que define é o formato da seta. Mensagens assíncronas têm seta com ponta aberta.

Alternativa C — ✅ Correta ⟵ GABARITO

A mensagem msg2 é assíncrona, pois sua seta possui ponta aberta (não preenchida), indicando que o remetente não aguarda resposta e pode continuar executando. Não há linha de retorno associada, o que reforça a natureza assíncrona. Essa é a leitura correta da notação UML.

Alternativa D — ❌ Incorreta

Os objetos a e b não foram instanciados simultaneamente. No diagrama, o objeto a existe desde o início (topo da linha de vida), enquanto b é criado durante a execução, representado por um retângulo mais abaixo na linha de vida. A instanciação de b ocorre em um momento posterior, não simultâneo.

Alternativa E — ❌ Incorreta

O objeto b não foi instanciado por uma ocorrência de execução do objeto a. A criação de um objeto em diagrama de sequência é representada por uma mensagem com estereótipo <<create>>, que não aparece no diagrama. A mensagem msg1 é uma chamada de método comum, não uma mensagem de criação. Portanto, a afirmação não encontra respaldo na notação UML.

Gabarito: letra C — a mensagem msg2 é assíncrona, conforme a notação de seta aberta.

Link permanente: /questoes/vu212227