Pular para o conteúdo principal

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

Engenharia de SoftwareUML
Código
fg101168
Banca
FGV
Órgão
TRF - 1ª REGIÃO
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade: Governança e Gestão de Tecnologia da Informação
Observe o diagrama de máquina de estados modelado em UML 2.5.1 para uma instância de classe.Imagem associada para resolução da questãoO diagrama de máquinas de estado de comportamento representa que a transiçã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”.

Máquina de Estados UML: Transições Internas, Externas e Locais

Gabarito: letra D. A transição interna no estado B2, por definição da UML 2.5.1, não executa os comportamentos de saída (exit) do estado de origem nem os de entrada (entry) do estado de destino — ela apenas dispara o comportamento associado à própria transição, sem sair do estado. É exatamente essa característica que a alternativa D descreve com precisão.

A máquina de estados é um dos diagramas comportamentais da UML e modela o ciclo de vida de uma instância de classe (um objeto) por meio de estados e transições. Um estado representa uma condição ou situação na qual o objeto pode se encontrar, e uma transição representa a passagem de um estado para outro, disparada por um evento (gatilho), podendo ter uma guarda (condição) e executar um comportamento (efeito).

A UML 2.5.1 distingue três tipos de transições, e essa distinção é o coração da questão:

  • Transição externa: é a transição "clássica" — o objeto sai do estado de origem (executando o comportamento de saída, exit), executa o comportamento da transição e entra no estado de destino (executando o comportamento de entrada, entry). É a transição padrão entre dois estados diferentes.

  • Transição interna: ocorre dentro de um estado, sem que o objeto saia dele. Por isso, não executa os comportamentos de saída (exit) do estado nem os de entrada (entry) do estado — apenas o comportamento associado à própria transição é executado. É como se o objeto "permanecesse" no mesmo estado, mas reagisse a um evento.

  • Transição local: é uma transição entre dois estados que estão dentro do mesmo estado composto (região). A diferença crucial é que ela não executa o comportamento de saída (exit) do estado composto que contém ambos, nem o comportamento de entrada (entry) do estado composto de destino. Ou seja, a transição local "fica dentro" do estado composto, sem sair dele.

Para fixar a diferença entre transição interna e local, pense no estado composto B como uma "caixa" que contém os subestados B1 e B2:

Critério

Transição Interna

Transição Local

Transição Externa

Sai do estado de origem?

Não

Sim (mas fica dentro do composto)

Sim

Executa exit do estado de origem?

Não

Sim (do subestado, não do composto)

Sim

Executa entry do estado de destino?

Não

Sim (do subestado, não do composto)

Sim

Exemplo

Evento self dentro de B2

Transição de B1 para B2 dentro de B

Transição de A para B

A pegadinha da banca está em confundir transição interna com transição local. A transição local executa os comportamentos de entrada e saída dos subestados envolvidos (B1 e B2), mas não os do estado composto B. Já a transição interna não executa nenhum comportamento de entrada ou saída — nem do subestado, nem do composto. Guarde essa fronteira: é exatamente nela que as alternativas se dividem.

1Interna
Fica dentro do estado
Não executa exit
Não executa entry
2Local
Entre subestados do mesmo composto
Executa exit/entry dos subestados
Não executa exit/entry do composto
3Externa
Sai do estado de origem
Executa exit da origem
Executa entry do destino
Transições na UML 2.5.1
LEVELsoulevel.com.br
Transições na UML 2.5.1: Interna (Fica dentro do estado, Não executa exit, Não executa entry); Local (Entre subestados do mesmo composto, Executa exit/entry dos subestados, Não executa exit/entry do composto); Externa (Sai do estado de origem, Executa exit da origem, Executa entry do destino)

Alternativa A — ❌ Incorreta

Afirma que a transição externa de A para B ocorre em paralelo à transição de A para C. Em uma máquina de estados, transições concorrentes só ocorrem em regiões paralelas dentro de um estado composto (representadas por linhas tracejadas). No diagrama descrito, A, B e C são estados no mesmo nível, sem regiões paralelas — portanto, as transições são mutuamente exclusivas, não paralelas. O erro está em inventar um paralelismo que não existe na modelagem.

Alternativa B — ❌ Incorreta

Afirma que a transição completa para o estado B requer a execução dos comportamentos de duas regiões. Isso só faria sentido se o estado B fosse um estado composto com duas regiões paralelas (separadas por linha tracejada), onde a entrada no estado composto exige a entrada em todas as regiões simultaneamente. No diagrama, B é um estado composto com uma única região contendo B1 e B2 — não há duas regiões. A alternativa confunde estado composto com região paralela.

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 é exatamente o oposto da definição: a transição local executa o comportamento de entrada (entry) do subestado de destino (B1) e o comportamento de saída (exit) do subestado de origem. O que a transição local não executa são os comportamentos de entrada e saída do estado composto B (a "caixa"), não os dos subestados internos. A alternativa inverte o que é executado e o que não é.

Alternativa D — ✅ Correta ⟵ GABARITO

A transição interna no estado B2, por definição da UML 2.5.1, ocorre dentro do próprio estado, sem que o objeto saia dele. Por isso, nenhum comportamento de saída (exit) ou entrada (entry) é executado — apenas o comportamento associado à transição (o efeito) é disparado. É a definição literal de transição interna: o objeto permanece no estado B2, mas reage a um evento interno. A alternativa espelha exatamente essa regra.

Alternativa E — ❌ Incorreta

Afirma que a transição para o fim do ciclo de vida da instância depende do comportamento de saída do estado C. O fim do ciclo de vida em uma máquina de estados é representado por um estado final (um círculo preenchido com um anel), e a transição para ele é disparada por um evento, não pelo comportamento de saída de um estado. O comportamento de saída (exit) é apenas um efeito que ocorre durante a transição, não a causa dela. A alternativa confunde o efeito (comportamento de saída) com a causa (evento disparador).

NÃO CAIA NESSA!

A banca adora inverter os conceitos de transição interna e local. Na interna, nada de entry/exit é executado; na local, os entry/exit dos subestados são executados, mas os do estado composto não. Se a alternativa disser que a local não executa o entry do subestado, está errada — é justamente o contrário. Com treino, você enxerga essas inversões de longe 💪

PEGA ESSA DICA!

Para acertar questões de máquina de estados, monte uma tabela mental com os três tipos de transição e o que cada uma executa. Na prova, leia a alternativa e pergunte: "essa transição sai do estado? executa exit? executa entry?" — a resposta a essas três perguntas decide a alternativa.

Gabarito: letra D

Link permanente: /questoes/fg101168