Pular para o conteúdo principal

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

Engenharia de SoftwareUML
Código
fg075145
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Desenvolvedor de Sistemas
Seja o diagrama de casos de uso UML a seguir:Imagem associada para resolução da questãoUma semântica válida para esse diagrama é a de que
  1. Aé possível ao ator X ativar a sequência de interações do caso de uso F por derivação primária.
  2. Bo caso de uso D implementa uma situação específica do caso de uso F.
  3. Co caso de uso E possui sequência de interações necessariamente utilizadas pelo caso de uso B.
  4. Dos casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C.
  5. Eos casos de uso A e B representam classes associativas entre o ator X e o caso de uso C.
Revelar gabarito e comentário

GabaritoD — os casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C.

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 Casos de Uso UML: relacionamentos include, extend e generalização

Gabarito: letra D. A alternativa correta afirma que os casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C — exatamente o que representa o relacionamento de inclusão (include) na UML, em que o caso de uso base (A e B) sempre incorpora o comportamento do caso de uso incluído (C). As demais alternativas confundem os relacionamentos de extend, generalização e associação com o include, ou atribuem semânticas inexistentes ao diagrama.

O diagrama de casos de uso é um dos diagramas comportamentais da UML e tem como objetivo representar, de forma estática, as funcionalidades que o sistema oferece (os casos de uso) e quem as utiliza (os atores), além dos relacionamentos entre eles. Os três relacionamentos principais entre casos de uso são:

  • Include (inclusão): o caso de uso base sempre executa o comportamento do caso de uso incluído. A seta é tracejada, apontando do caso de uso base para o incluído, com o estereótipo <<include>>. É uma relação de dependência obrigatória — se o caso de uso A inclui C, toda vez que A for executado, C também será.

  • Extend (extensão): o caso de uso de extensão é executado opcionalmente, sob uma condição específica, quando o caso de uso base é executado. A seta é tracejada, apontando do caso de uso de extensão para o base, com o estereótipo <<extend>>. É uma relação de dependência condicional — o caso de uso base pode ser executado sem o de extensão.

  • Generalização (herança): um caso de uso filho herda o comportamento do caso de uso pai, podendo substituí-lo ou especializá-lo. Representa-se com uma seta sólida com ponta vazada, do filho para o pai.

A confusão mais comum em provas é inverter o sentido das setas ou trocar o significado de include e extend. No include, a seta sai do caso de uso que depende e aponta para o caso de uso do qual depende; no extend, a seta sai do caso de uso opcional e aponta para o caso de uso base. Além disso, o include é obrigatório e o extend é condicional — essa é a distinção central que a banca explora.

Para fixar: no include, o caso de uso incluído é uma parte necessária do fluxo do caso de uso base; no extend, o caso de uso de extensão é um complemento opcional que só entra em cena se uma condição for satisfeita. A generalização, por sua vez, não é uma relação de dependência, mas de herança de comportamento.

Guarde essa fronteira entre include, extend e generalização: é exatamente nela que as alternativas desta questão se dividem.

Alternativa A — ❌ Incorreta

A alternativa afirma que o ator X pode ativar a sequência de interações do caso de uso F por derivação primária. O termo "derivação primária" não existe na semântica dos diagramas de casos de uso da UML. A relação de generalização entre casos de uso é chamada de herança ou especialização, não de "derivação primária". Além disso, a alternativa não descreve corretamente nenhum dos relacionamentos padrão (include, extend ou generalização).

Alternativa B — ❌ Incorreta

Afirma que o caso de uso D implementa uma situação específica do caso de uso F. Essa descrição corresponde à relação de generalização/especialização (herança), em que um caso de uso filho especializa o comportamento do caso de uso pai. No entanto, a alternativa não indica que essa é a relação representada no diagrama — e, pelo gabarito, o relacionamento correto entre os casos de uso é o de inclusão (include), não o de generalização. A alternativa troca o tipo de relacionamento.

Alternativa C — ❌ Incorreta

Afirma que o caso de uso E possui sequência de interações necessariamente utilizadas pelo caso de uso B. O termo "necessariamente" indica uma relação de inclusão (include), em que o caso de uso base sempre executa o caso de uso incluído. No entanto, a alternativa não corresponde ao relacionamento representado no diagrama — o gabarito aponta que a relação de include está entre A, B e C, não entre E e B. A alternativa atribui uma relação de dependência obrigatória a um par de casos de uso que não a possui.

Alternativa D — ✅ Correta ⟵ GABARITO

A alternativa afirma que os casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C. Essa é a definição exata do relacionamento de inclusão (include) na UML: quando dois ou mais casos de uso compartilham um comportamento comum, esse comportamento é extraído para um caso de uso separado (C), e os casos de uso base (A e B) o incluem. A seta tracejada com o estereótipo <<include>> aponta de A e B para C, indicando que ambos sempre executam a sequência de interações definida em C. É exatamente isso que a alternativa descreve.

Alternativa E — ❌ Incorreta

Afirma que os casos de uso A e B representam classes associativas entre o ator X e o caso de uso C. O conceito de classe associativa pertence ao diagrama de classes da UML, não ao diagrama de casos de uso. Em casos de uso, não existem classes associativas — os elementos são atores, casos de uso e relacionamentos (include, extend, generalização e associação). A alternativa mistura conceitos de diagramas diferentes, o que a torna semanticamente inválida.

Gabarito: letra D — os casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C, caracterizando o relacionamento de inclusão (include).

Link permanente: /questoes/fg075145