SóProvas


ID
748075
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Um restaurante contratou uma equipe para desenvolver um sistema de informação que auxilie nas tarefas diárias do negócio. Após um levantamento inicial, a equipe listou os seguintes requisitos:

• o caixa será responsável por encerrar uma conta e registrar o pagamento da mesma;

• caso o pagamento seja feito com cheque, será necessário que o sistema do restaurante se comunique com o sistema de consulta de cheques do Serviço de Proteção ao Lojista para obter informações sobre o cliente;

• caso o pagamento seja feito com cartão de crédito, será necessário que o sistema do restaurante se comunique com o sistema da administradora do cartão para obter autorização;

• apenas o gerente terá acesso à função de estorno do valor pago. Caso a despesa tenha sido paga com cartão, será necessário se comunicar com o sistema da administradora;

• tanto o sistema da administradora de cartões como o de consulta de cheques serão acessados via web service;

• o gerente também poderá encerrar uma conta.

Qual diagrama de caso de uso descreve adequadamente os requisitos acima?

Alternativas
Comentários
  • Segundo Jacobson, "Um caso de uso é uma descrição de um conjunto de sequências de ações, inclusive variantes, que um sistema executa para produzir um resultado observável por um ator (...) Um caso de uso captura o comportamneto pretendido do sistema (ou subsistema, classe ou interface) que você está desenvolvendo, sem ser preciso especificar como esse comportamento é implementado. Essa é uma separação importante, porque a análise de um sistema (que especifica o comportamento) deve, tanto quanto possível, não ser influenciada por questões referente a implementação (que especifica como esse comportamento pe executado)" (UML Guia do Usuário - 2ed) - Ou seja, dá pra perceber que "WebService" não é um caso de uso. WebService é um detalhe de implementação e não deveria aparecer no diagrama de caso de uso. Com isso eliminamos as alternativas "A", "D" e "E". - De cara já dá pra eliminar a letra "B", pois um caso de uso só se comunica com um ator através do relacionamento de associação. E na letra "B" tem dois relacionamentos de dependência ligando ator/caso de uso: (1) Entre "Encerrar conta" e "Sistema Consulta de Cheques" e (2) Entre "Estornar Valor Pago" e "Sistema Adm Cartão". Além disso, é o gerente que herda de caixa e não o contrário.
    Pergunta: "Todo gerente pode exercer as funções de um caixa? Sim. Todo caixa pode exercer as funções de um Gerente? Não. Pois as funções do gerente são mais específicas." Logo,  um Gerente "é um" caixa. Em contrapartida, um caixa "não é" (necessariamente) um gerente. Temos que Gerente (Subclasse) herda de Caixa (Superclasse).  Logo, Gabarito letra "C". 
  • Um caso de uso representa uma funcionalidade do sistema e "WebService" é apenas um passo da implementação de um dos casos de uso.
    Falado a grosso modo: faria todo sentido ter na tela da aplicação um botão/funcionalidade chamado "encerrar conta" ou "estornar valor pago", mas não faria o menor sentido, nesse contexto, ter um botão chamado "WebService".
    E na letra B contem um relacionamento inexistente entre o caso de uso "encerrar conta" e os atores.

    restando apenas como alternativa a letra C.
  • Acredito que webservice, por estar ligado à implementação, poderia ser limado logo de cara.
    A UML independe de tecnologia