Pular para o conteúdo principal

Questão de Engenharia de Software — UML — FGV 2024

Engenharia de SoftwareUML
Código
fg165496
Banca
FGV
Órgão
TRF 1
Ano
2024
Cargo
AJ ( ª Região)
Observe o diagrama de máquina de estados modelado em UML 2.5.1 para uma instância de classe. O diagrama de máquinas de estado de comportamento representa que a transição:Imagem associada para resolução da questão
  1. Aexterna do estado A para B ocorre em paralelo à transição de A para C;
  2. Bcompleta para o estado B requer execução dos comportamentos de duas regiões;
  3. Clocal de B1 no estado composto B indica que o comportamento de entrada do estado B1 não é executado;
  4. Dinterna no estado B2 indica que nenhum comportamento de saída ou entrada é executado quando essa transição ocorre;
  5. Epara o fim do ciclo de vida da instância de classe modelada depende do comportamento de saída do estado C da máquina de estados.
Revelar gabarito e comentário

GabaritoD — interna no estado B2 indica que nenhum comportamento de saída ou entrada é executado quando essa transição ocorre;

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

UML – Diagrama de Máquina de Estados: transições e comportamentos

Gabarito: letra D. A transição interna no estado B2, por definição da UML 2.5, não dispara os comportamentos de saída (exit) do estado de origem nem os de entrada (entry) do estado de destino — ela apenas executa o comportamento associado à própria transição, permanecendo no mesmo estado. É exatamente isso que a alternativa D afirma, e é o conceito central que a banca explora nesta questão.

A máquina de estados é um diagrama comportamental da UML que modela o ciclo de vida de uma instância (objeto) por meio de estados e transições. Cada estado pode ter comportamentos associados: entry (executado ao entrar no estado), exit (executado ao sair do estado) e do (executado enquanto permanece no estado). As transições, por sua vez, podem ser de três tipos:

  • Transição externa: é a mais comum — o objeto sai do estado de origem (executando o exit), executa o comportamento da transição e entra no estado de destino (executando o entry).

  • Transição interna: o objeto permanece no mesmo estado; não executa os comportamentos de saída nem de entrada, apenas o comportamento associado à transição. É representada dentro do próprio estado, com o rótulo evento / ação.

  • Transição local: ocorre dentro de um estado composto, entre subestados, sem sair do estado composto — ou seja, não executa o exit do estado composto nem o entry do estado composto, mas pode executar os comportamentos dos subestados envolvidos.

A distinção entre transição interna e local é sutil e muito cobrada. A interna não dispara nenhum comportamento de saída ou entrada (nem do estado atual, nem de qualquer outro). A local, por sua vez, não dispara os comportamentos do estado composto que a contém, mas pode disparar os dos subestados. A banca adora inverter esses conceitos, como veremos nas alternativas.

Para fixar, veja a comparação:

Tipo de transição

Executa exit do estado de origem?

Executa entry do estado de destino?

Exemplo típico

Externa

Sim

Sim

A --> B

Interna

Não

Não

evento / ação dentro do estado

Local

Não (do estado composto)

Não (do estado composto)

B1 --> B2 dentro de B

No diagrama da questão, o estado composto B contém os subestados B1 e B2. A alternativa D fala de uma transição interna em B2 — ou seja, uma transição que começa e termina no próprio B2, sem sair dele. Nesse caso, a UML determina que os comportamentos de saída e entrada não são executados. É a definição literal de transição interna.

A pegadinha está em confundir transição interna com transição local ou com transição externa. A banca explora exatamente essa confusão: o candidato que não domina a diferença pode achar que a transição interna executa algum comportamento de entrada ou saída, ou que a local não executa os comportamentos dos subestados. Guarde a regra de ouro: transição interna = nenhum exit/entry; transição local = não sai do estado composto; transição externa = executa tudo.

1Externa
Executa exit da origem
Executa entry do destino
2Interna
Não executa exit/entry
Só executa a ação do evento
3Local
Não sai do estado composto
Executa exit/entry dos subestados
Transições em máquina de estados
LEVELsoulevel.com.br
Transições em máquina de estados: Externa (Executa exit da origem, Executa entry do destino); Interna (Não executa exit/entry, Só executa a ação do evento); Local (Não sai do estado composto, Executa exit/entry dos subestados)

Alternativa A — ❌ Incorreta

Afirma que a transição externa de A para B ocorre em paralelo à transição de A para C. Em UML, transições concorrentes só existem dentro de regiões paralelas de um estado composto (representadas por linhas tracejadas). No diagrama, não há indicação de regiões paralelas entre A, B e C — as transições são mutuamente exclusivas, ou seja, o objeto segue um único caminho por vez. A banca tenta confundir com o conceito de concorrência, que não se aplica aqui.

Alternativa B — ❌ Incorreta

Diz que a transição completa para o estado B requer execução dos comportamentos de duas regiões. Isso só faria sentido se o estado B tivesse regiões paralelas (orthogonal state), o que não é o caso — B é um estado composto simples, com subestados B1 e B2, mas sem regiões. A transição para B é uma transição externa comum: executa o exit de A, o comportamento da transição e o entry de B. Não há exigência de múltiplas regiões.

Alternativa C — ❌ Incorreta

Afirma que a transição local de B1 no estado composto B indica que o comportamento de entrada do estado B1 não é executado. Isso está invertido. A transição local, por definição, não executa os comportamentos de saída e entrada do estado composto (B), mas executa os comportamentos dos subestados envolvidos (B1 e B2). Ou seja, ao fazer uma transição local de B1 para B2, o entry de B2 é executado, e o exit de B1 também. A alternativa erra ao dizer que o entry de B1 não é executado — na verdade, se a transição local parte de B1, o exit de B1 é executado; se chega a B1, o entry de B1 é executado. A confusão é clássica: trocar o comportamento do estado composto pelo do subestado.

Alternativa D — ✅ Correta ⟵ GABARITO

A transição interna no estado B2 é representada dentro do próprio B2, com o rótulo evento / ação. Por definição da UML, ela não executa os comportamentos de saída (exit) do estado de origem nem de entrada (entry) do estado de destino — que, neste caso, são o mesmo estado (B2). O objeto permanece em B2, apenas executando a ação associada à transição. É exatamente o que a alternativa afirma, e é o conceito que a banca cobra.

Alternativa E — ❌ Incorreta

Diz que a transição para o fim do ciclo de vida da instância depende do comportamento de saída do estado C. Na UML, a transição para o estado final (fim) é uma transição externa comum: ela executa o exit do estado de origem (C), mas a ocorrência da transição depende do evento que a dispara, não do comportamento de saída. O exit é uma consequência da transição, não uma condição para ela. A alternativa inverte causa e efeito — o comportamento de saída é executado porque a transição ocorre, e não o contrário.

Gabarito: letra D — a transição interna em B2 não executa comportamentos de saída ou entrada, conforme a definição da UML 2.5.

Link permanente: /questoes/fg165496