Questão de Engenharia de Software — UML — CESPE / CEBRASPE 2024
Engenharia de Software›UML
Código
ce188493
Banca
CESPE / CEBRASPE
Órgão
TCE-AC
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação - Área: Sistemas de Informação
Tendo como referência o diagrama de caso de uso apresentado
anteriormente, julgue o próximo item, relativos a UML (unified
modeling language).
O caso de uso informar endereço será acionado opcionalmente ao se acionar o caso de uso finalizar compra.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
Relacionamentos entre casos de uso: include, extend e generalização
Gabarito: Errado (E). A afirmativa está incorreta porque, em UML, o relacionamento que indica que um caso de uso é acionado opcionalmente por outro é o extend (ou <<extend>>), e não o include (ou <<include>>). O include representa uma relação obrigatória e sempre executada quando o caso de uso base é acionado. Como o enunciado afirma que "informar endereço" será acionado opcionalmente ao acionar "finalizar compra", a relação correta seria extend, não include — portanto, a afirmação está errada.
O diagrama de casos de uso é um dos diagramas comportamentais da UML e tem como objetivo representar as funcionalidades do sistema do ponto de vista do usuário (atores). Ele mostra quem (ator) faz o quê (caso de uso) e como esses casos de uso se relacionam entre si. Os relacionamentos entre casos de uso são um dos pontos mais cobrados em provas, e a banca explora exatamente a confusão entre include e extend.
Vamos entender cada um:
include (inclusão): representa uma relação obrigatória e sempre executada. Quando o caso de uso base é acionado, o caso de uso incluído também é acionado, sem exceção. É usado para extrair comportamentos comuns a vários casos de uso, evitando duplicação. Por exemplo, em um sistema de compras, o caso de uso "finalizar compra" pode sempre incluir o caso de uso "validar pagamento". A seta do include aponta do caso de uso base para o caso de uso incluído, com a estereotipagem <<include>>.
extend (extensão): representa uma relação opcional e condicional. O caso de uso estendido é acionado somente sob determinadas condições, ou seja, quando um ponto de extensão é atingido. É usado para adicionar comportamentos opcionais a um caso de uso existente. Por exemplo, em um sistema de compras, o caso de uso "informar endereço" pode ser opcionalmente acionado ao se acionar "finalizar compra", caso o usuário queira alterar o endereço de entrega. A seta do extend aponta do caso de uso de extensão para o caso de uso base, com a estereotipagem <<extend>>.
Generalização: representa uma relação de herança entre casos de uso, onde um caso de uso filho herda o comportamento do caso de uso pai. É usada para especializar comportamentos. Por exemplo, "pagar com cartão" e "pagar com boleto" podem ser generalizações de "pagar".
A pegadinha da questão está na palavra "opcionalmente". O enunciado diz que "informar endereço" será acionado opcionalmente ao se acionar "finalizar compra". Isso é a definição exata do relacionamento extend. Se a banca tivesse dito "obrigatoriamente" ou "sempre", aí sim seria include. A banca troca os conceitos para confundir o candidato.
Para fixar, veja a comparação:
Critério
include
extend
Obrigatoriedade
Obrigatório
Opcional
Condição
Sempre executado
Executado sob condição
Direção da seta
Do caso base para o incluído
Do caso de extensão para o base
Estereótipo
<<include>>
<<extend>>
Exemplo
"finalizar compra" inclui "validar pagamento"
"finalizar compra" estende "informar endereço"
NÃO CAIA NESSA!
A banca adora inverter os relacionamentos include e extend. A palavra-chave é "opcionalmente": se o caso de uso é acionado opcionalmente, é extend; se é acionado sempre/obrigatoriamente, é include. Nesta questão, o enunciado diz "opcionalmente", mas a relação correta seria extend, não include — por isso a afirmativa está errada. Com treino, você enxerga essas trocas de longe 💪.
Relacionamentos entre casos de uso: include (obrigatório, sempre executado, seta do base para o incluído); extend (opcional, condicional, seta do extensão para o base); Generalização (herança entre casos de uso)
Item — ❌ Errado
A afirmativa está errada porque descreve o relacionamento extend como se fosse include. O caso de uso "informar endereço" ser acionado opcionalmente ao se acionar "finalizar compra" é a definição de extend (extensão), que representa um comportamento opcional e condicional. O include (inclusão) representa um comportamento obrigatório e sempre executado. Portanto, a relação correta entre os casos de uso seria <<extend>>, e não <<include>>, tornando a afirmação incorreta.