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