Pular para o conteúdo principal

Questão de Engenharia de Software — UML — FCC 2021

Engenharia de SoftwareUML
Código
fc060792
Banca
FCC
Órgão
TJ-SC
Ano
2021
Cargo
Analista de Sistemas
Em uma situação hipotética, ao levantar os requisitos de um sistema de controle de estoque para o Tribunal de Justiça de Santa Catarina, um Analista de Sistema observa que, caso um produto não exista em estoque quando de sua verificação, deverá ser feita a compra do produto. Supondo-se que ele queira modelar os casos de uso Verificar Estoque e Comprar Produto, então o relacionamento entre esses dois casos será do tipo
  1. Aagregação.
  2. Bdecomposição.
  3. Cinclusão.
  4. Dgeneralização.
  5. Eextensão.
Revelar gabarito e comentário

GabaritoE — extensão.

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 – Relacionamentos entre Casos de Uso

Gabarito: letra E. No diagrama de casos de uso da UML, o relacionamento entre "Verificar Estoque" e "Comprar Produto" é do tipo extensão, pois a compra é um comportamento opcional e condicional (ocorre apenas quando o produto não existe em estoque). A relação de extensão é usada para modelar fluxos alternativos ou excepcionais que estendem um caso de uso base sob determinadas condições.

A questão testa a diferença entre os principais relacionamentos entre casos de uso na UML: inclusão, extensão, generalização e agregação (esta última não é um relacionamento padrão entre casos de uso na UML 2.0). O cenário descreve uma condição (produto não em estoque) que dispara um caso de uso complementar – exatamente o papel da extensão.

Relacionamento

Definição

Aplicação no cenário

Correto?

Agregação

Relacionamento todo-parte entre classes (não se aplica a casos de uso)

Não é um relacionamento válido para casos de uso na UML

❌

Decomposição

Termo genérico (não é relacionamento formal da UML)

Não é um relacionamento padrão entre casos de uso

❌

Inclusão (include)

Caso base sempre executa o caso incluído

Compra não ocorre sempre, apenas sob condição

❌

Generalização

Herança/especialização entre casos de uso

Não há herança entre as funcionalidades

❌

Extensão (extend)

Caso base pode ser estendido opcionalmente sob condição

Compra ocorre apenas se produto não existe em estoque

✅

1Inclusão (include)
Obrigatório
Sempre executado
2Extensão (extend)
Opcional
Condicional
3Generalização
Herança de comportamento
Especialização
4Agregação
Não é relacionamento de caso de uso
Relacionamentos entre casos de uso (UML)
LEVELsoulevel.com.br
Relacionamentos entre casos de uso (UML): Inclusão (include) (Obrigatório, Sempre executado); Extensão (extend) (Opcional, Condicional); Generalização (Herança de comportamento, Especialização); Agregação (Não é relacionamento de caso de uso)

Alternativa A — ❌ Incorreta

Agregação não é um relacionamento definido para casos de uso na UML. Embora apareça em diagramas de classes entre objetos, não se aplica a use cases. A agregação indica um todo-parte entre classes, não comportamento opcional.

Alternativa B — ❌ Incorreta

Decomposição não é um termo técnico da UML para relacionamentos entre casos de uso. Pode-se decompor um caso de uso em subfluxos, mas o relacionamento formal é inclusão (include) ou extensão (extend). A banca usa aqui um termo genérico para confundir.

Alternativa C — ❌ Incorreta

Inclusão (include) é um relacionamento em que o caso de uso base sempre executa o caso de uso incluído. Não se aplica ao cenário, pois a compra do produto só ocorre sob condição (produto inexistente). Se fosse inclusão, toda verificação de estoque obrigaria uma compra, o que não faz sentido.

Alternativa D — ❌ Incorreta

Generalização é usada quando um caso de uso herda comportamento de outro (especialização). Aqui não há herança; são funcionalidades distintas que se relacionam por condição.

Alternativa E — ✅ Correta ⟵ GABARITO

Extensão (extend) modela exatamente situações em que um caso de uso (extensão) é inserido opcionalmente em pontos de extensão de outro caso de uso base, sob certas condições. No exemplo: se o produto não está em estoque, o fluxo de verificação é estendido com a compra. A seta de extensão aponta do caso de uso estendido (Comprar Produto) para o caso base (Verificar Estoque), com a condição explícita.

NÃO CAIA NESSA!

A banca explora a confusão clássica entre <<include>> e <<extend>> no UML. Lembre-se: include é obrigatório e sempre executado; extend é opcional e condicional. No enunciado, a palavra "caso" (condição) é o gatilho para extensão. Treine identificando a palavra "se" ou "condicionalmente" – isso aponta para extend.

Gabarito: letra E.

Link permanente: /questoes/fc060792