Questão de Engenharia de Software — UML — FGV 2024
Engenharia de Software›UML
Código
fg165474
Banca
FGV
Órgão
ALEP
Ano
2024
Cargo
Ana Leg ( )
Seja o diagrama de casos de uso UML a seguir: Uma semântica válida para esse diagrama é a de que
Aé possível ao ator X ativar a sequência de interações do caso de uso F por derivação primária.
Bo caso de uso D implementa uma situação específica do caso de uso F.
Co caso de uso E possui sequência de interações necessariamente utilizadas pelo caso de uso B.
Dos casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C.
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”.
UML – Diagrama de Casos de Uso: Relacionamento de Inclusão (include)
Gabarito: letra D. No diagrama de casos de uso da UML, quando dois casos de uso (A e B) apontam para um terceiro (C) com a seta tracejada rotulada como «include», isso significa que ambos compartilham uma sequência de interações em comum, especificada no caso de uso incluído (C). A alternativa D descreve exatamente essa semântica: os casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C.
O diagrama de casos de uso é um dos diagramas comportamentais da UML, utilizado para representar as funcionalidades que o sistema oferece e quem as utiliza (atores). Cada caso de uso descreve um cenário de interação entre o ator e o sistema, focando no comportamento externo, sem detalhar a implementação interna. Os relacionamentos entre casos de uso são fundamentais para organizar e reutilizar comportamentos comuns, evitando duplicação de descrições.
Os principais relacionamentos entre casos de uso na UML são:
Inclusão (include): indica que um caso de uso base sempre inclui o comportamento de outro caso de uso. É representado por uma seta tracejada com o estereótipo «include», apontando do caso de uso base para o caso de uso incluído. O caso de uso incluído é executado obrigatoriamente como parte do fluxo do caso de uso base.
Extensão (extend): indica que um caso de uso base pode, opcionalmente, ser estendido por outro caso de uso, sob certas condições. É representado por uma seta tracejada com o estereótipo «extend», apontando do caso de uso de extensão para o caso de uso base. O caso de uso de extensão é executado apenas quando uma condição específica é satisfeita.
Generalização: indica que um caso de uso é uma especialização de outro, herdando seu comportamento. É representado por uma linha sólida com um triângulo vazio na ponta, apontando do caso de uso especializado para o caso de uso geral.
No diagrama da questão, os casos de uso A e B estão conectados ao caso de uso C por setas tracejadas com o estereótipo «include». Isso significa que tanto A quanto B, quando executados, sempre incluem a sequência de interações definida em C. Portanto, C representa um comportamento comum a A e B, que é reutilizado por ambos.
A alternativa D captura precisamente essa ideia: "os casos de uso A e B possuem uma sequência de interações em comum, especificada no caso de uso C". É a definição clássica do relacionamento de inclusão, onde o caso de uso incluído (C) é compartilhado por múltiplos casos de uso base (A e B).
As demais alternativas apresentam interpretações incorretas ou confusas sobre os relacionamentos do diagrama, como veremos a seguir.
Critério
A (Incorreta)
B (Incorreta)
C (Incorreta)
D (Correta)
E (Incorreta)
Conceito UML envolvido
Termo inexistente ("derivação primária")
Confunde extend com generalização
Confunde extend com include
include (inclusão)
Confunde caso de uso com classe associativa
Relação no diagrama
Nenhuma relação válida com F
D é extensão opcional de F
E é extensão opcional de B
A e B incluem C
A e B são casos de uso, não classes
Obrigatoriedade
—
Condicional (extensão)
Condicional (extensão)
Sempre (inclusão)
—
Semântica correta
Não existe na UML
D adiciona comportamento a F sob condição
E adiciona comportamento a B sob condição
C é comportamento comum reutilizado por A e B
Conceito de diagrama de classes, não de casos de uso
Alternativa A — ❌ Incorreta
A alternativa afirma que "é possível ao ator X 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 é um conceito válido em diagramas de casos de uso da UML. Não existe esse tipo de relacionamento ou ativação. O ator X interage diretamente com os casos de uso aos quais está conectado por linhas sólidas (associação), e não por "derivação primária". Além disso, o caso de uso F, se existir no diagrama, não é mencionado como relacionado a X por esse suposto mecanismo. A alternativa inventa uma terminologia que não pertence à UML.
Alternativa B — ❌ Incorreta
A alternativa afirma que "o caso de uso D implementa uma situação específica do caso de uso F". Isso descreveria um relacionamento de generalização (herança), onde D seria uma especialização de F. No entanto, o diagrama mostra que D e F estão conectados por uma seta tracejada com o estereótipo «extend», indicando que D é uma extensão opcional de F, não uma especialização. A extensão adiciona comportamento condicional ao caso de uso base, enquanto a generalização cria uma hierarquia de especialização. A alternativa confunde os dois conceitos.
Alternativa C — ❌ Incorreta
A alternativa afirma que "o caso de uso E possui sequência de interações necessariamente utilizadas pelo caso de uso B". Isso descreveria um relacionamento de inclusão (include), onde B sempre incluiria E. No entanto, o diagrama mostra que E está conectado a B por uma seta tracejada com o estereótipo «extend», indicando que E é uma extensão opcional de B, não uma inclusão obrigatória. A palavra "necessariamente" é o erro central: a extensão não é obrigatória, ela ocorre apenas sob certas condições. A alternativa troca o relacionamento de extensão pelo de inclusão.
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". Isso é exatamente o que o relacionamento de inclusão (include) representa. No diagrama, A e B estão conectados a C por setas tracejadas com o estereótipo «include», indicando que ambos sempre incluem o comportamento definido em C. Portanto, C especifica uma sequência de interações que é comum a A e B, sendo reutilizada por ambos. A alternativa está correta e descreve fielmente a semântica do diagrama.
Alternativa E — ❌ Incorreta
A alternativa afirma que "os casos de uso A e B representam classes associativas entre o ator X e o caso de uso C". Isso é um erro conceitual grave. Casos de uso não são classes associativas; classes associativas são um conceito do diagrama de classes, usado para modelar atributos de uma associação entre classes. No diagrama de casos de uso, A e B são casos de uso que interagem com o ator X e incluem o caso de uso C. Não há relação com classes associativas, que pertencem a outro tipo de diagrama da UML.