Buscar

UC-Lab3-res_01a (2)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 3 páginas

Prévia do material em texto

UFJF/DCC	DCC117 - MODELAGEM DE SISTEMAS	� PAGE �1�/� NUMPAGES \*Arabic �4�			� PAGE �1�/� NUMPAGES \*Arabic �4�
	Aluno (a): Gabarito 
1) Considere um sistema de terminal de autoatendimento bancário, e as seguintes funções do mesmo:
F1: 	Abrir terminal (ator Supervisor)
F2: 	Informar parâmetros de funcionamento do terminal (operações permitidas, montante disponível para saques, etc.) (ator Supervisor, na abertura do terminal)
F3: 	Fazer depósito (ator Cliente)
F4: 	Fazer saque e emitir extrato (ator Cliente)
F5: 	Atualizar saldo do cliente (a cada depósito ou saque efetuado)
F6: 	Consultar saldo (ator cliente)
F7: 	Fechar terminal (ator Supervisor)
F8: 	Emitir relatório de fechamento do terminal (ator Supervisor, no fechamento do terminal ou a qualquer momento) 
Faça o DUC (Diagrama de UCs) atentando para os critérios de escolha dos UCs. Utilize a tabela abaixo para justificar essa escolha.
	UC (nome)
	Funções englobadas
	Justificativa (cite os critérios utilizados)
	Abrir terminal
	F1, F2
	F1 (Abrir terminal) não deixa o sistema em um estado estável (Critério 2), pois se F2 (Informar parâmetros do terminal) não for realizado, o terminal fica inoperável (ou seja, nenhum outro evento autônomo poderá ser ativado). Portanto, é preciso incluir F2 no mesmo UC que representa F1. Com F1 e F2 sendo ambas realizadas, o sistema atinge um estado estável (ou seja, independentemente do que ocorrer depois, não haverá a necessidade de fazer o sistema retornar ao estado anterior à ativação do UC). Outra questão é se F1 inicia o UC ou se outra funcionalidade deveria ser incluída antes (em outras palavras, se F1 é ativada por um evento autônomo ou não). Como a abertura de um terminal é um evento inicial (evento externo que pode ocorrer como primeiro evento logo após a ativação do sistema), então ele é autônomo, e portanto, deve iniciar um UC.
	Fazer depósito
	F3, F5
	A função F5 (Atualizar saldo do cliente) sempre ocorre imediatamente após um depósito (F3) (ou após um saque – veja a análise do próximo UC). O sistema deverá embutir essa dependência no seu código e, portanto, o evento que dispara F5 não é autônomo, mas sim subassumido por aquele que dispara F3. Logo, a funcionalidade F5 não pode iniciar um UC (Critério 3), mas deve complementar o UC que contém F3. Resta verificar que F3 pode iniciar um UC (ou seja, que é disparada por um evento autônomo – Critério 3) e que F3 e F5, juntas (nessa ordem), são suficientes para um UC (ou seja, que uma vez executadas, deixam o sistema em um estado estável – Critério 2). Para verificar que F3 é disparada por um evento autônomo, basta observar que nenhuma suposição pode ser embutida no sistema sobre um evento autônomo que sempre antecede imediatamente a execução de F3. Para verificar que F3 e F5, executadas nessa ordem, deixam o sistema em um estado estável, basta observar que, concluída essa execução, qualquer outro evento autônomo poderá ser disparado e, em nenhuma hipótese, haverá a necessidade de retornar o sistema ao seu estado que vigorava antes dessa execução. 
	Fazer saque
	F4, F5
	Análise análoga à anterior: basta substituir F3 por F4.
	Emitir extrato
	parte de F4
	Um cliente pode solicitar a emissão de um extrato, sem que para isso tenha de fazer um saque. Isso significa que a funcionalidade “emitir extrato” (parte de F4) é disparada por um evento externo (do cliente), para o qual não se pode embutir no sistema, qualquer pré-suposição sobre que outro evento autônomo sempre o antecede imediatamente (por exemplo, antes de emitir extrato o cliente poderia ter feito um depósito em vez de saque; ou ainda não ter feito nada). Ou seja, a funcionalidade emitir extrato é ativada por um evento autônomo e, portanto, deve iniciar o seu próprio UC. Será que existiria outra funcionalidade a compor esse UC? Só se a emissão de um extrato não fosse capaz de deixar o sistema em um estado estável e, então, seria necessário acrescentar outra funcionalidade capaz de levar o sistema à estabilidade. Mas, emitir extrato é um UC de consulta�e, como tal, deixa o sistema estável. Portanto, a funcionalidade emitir extrato, sozinha, constitui um UC.
	Consultar saldo
	F6
	Essa funcionalidade é disparada por um evento autônomo e, portanto, inicia um UC. Além disso, ela sozinha constitui um UC, pois o mesmo pode ser caracterizado como um UC de consulta e, portanto, deixa o sistema em um estado estável.
	Fechar terminal
	F7
	Essa funcionalidade é disparada por um evento autônomo e, logo, inicia um UC. Além disso, ela é suficiente como UC, pois nada mais é necessário nesse UC para deixar o sistema em um estado estável. Conforme o enunciado acima, F8 está relacionada a F7: ela pode ser ativada a partir de F7, toda vez que F7 for disparada ou condicionalmente (isso está indefinido no enunciado). Nesse caso, o evento que dispara F8 é subassumido pelo evento que dispara F7. Mas F8 também pode ser ativada independentemente de F7 (a qualquer momento) e, portanto, nesse caso, o evento disparador de F8 é autônomo. Em vista disso, F8 deve iniciar seu próprio UC. Os dois UCs (o de F7 e o de F8) devem ser relacionados: se for assumido que F7 sempre dispara F8, o UC de F7 deve incluir o de F8; caso contrário, se for assumido que o disparo de F8 depende de uma condição (por exemplo, uma escolha do ator Supervisor), então o UC de F8 deve estender o UC de F7 (esta foi a suposição adotada para a elaboração do DUC acima).
	Emitir relatório fechamento
	F8
	Análise análoga à da funcionalidade F6: 
	Obs.:
	Uma pergunta pertinente seria: será que uma mesma função pode fazer parte de mais de um UC? A resposta é sim! Basta que o evento externo que dispara a função seja subassumido por mais de um evento autônomo. 
No contexto de um sistema de gerência de Hotel, responda:
Em que situação seria correto dividir o UC 1: Emitir relatório de quartos ocupados e disponíveis, em dois outros (justifique com base nos critérios):
UC 1a: Emitir relatório de quartos ocupados 
UC 1b: Emitir relatório de quartos disponíveis
	Resposta: No caso em que o ator pode querer um relatório independentemente do outro, ou seja, cada relatório constituir um objetivo distinto que o ator pode ter, e ser buscado em situações ou momentos diferentes (Critério 1). Nessa circunstância, não podemos dizer que o evento disparador da emissão de um relatório seja sempre precedido pelo evento disparador do outro relatório; ou seja, ambos os eventos serão autônomos (Critério 3). Observe que, sendo UC 1a e UC 1b, ambos, UCs de consulta, não há alteração no estado do sistema após a execução de qualquer um deles e, portanto, o Critério 2 não impede a divisão do UC 1. 
Seria correto substituir os UCs abaixo, por um único? (justifique com base nos critérios):
UC 2: Fazer reserva de quarto
UC 3: Fazer check-in� 
	Resposta: Não (pelo menos não em um sistema do tipo daquele normalmente utilizado nos hotéis que constumamos frequentar). Isso porque, se juntarmos ambos UCs em um único, esse UC resultante englobará dois eventos autônomos – um para disparar a função de reservar e outro para disparar o check-in, já que não podemos aceitar que o segundo evento (o do check-in) seja sempre precedido imediatamente pelo evento (autônomo) da reserva. Tal UC único feriria, portanto, o Critério 3�. 
No contexto de um sistema de gerência de Restaurante, responda:
Seria correto substituir os UCs abaixo, por um único? (justifique com base nos critérios):
UC 1: Pedir a conta
UC 2: Pagar a conta
	Resposta: Não (pela mesma análise da questão 2 acima). 
� UC que não altera o estado do sistema, mas apenas consulta o estado corrente.
�	Registrar início de hospedagem
� 	O mesmo tipo de análise impede que montemos um único UC com o evento disparador de check-in em primeiro lugar, seguido pelo evento disparador de reserva.

Outros materiais