Projeto de Sistemas 2016/2 2 a Lista de Exercícios (1) A Figura 1 mostra um fragmento do diagrama de classes de análise de um sistema para uma livraria. Nesse sistema, usabilidade é um dos condutores do projeto da arquitetura e a seguinte tática deve ser empregada: minimize o número de ações de entrada requeridas e possíveis erros, permitindo, sempre que possível, a seleção de dados a partir de um conjunto pré-definido de valores de entrada. Faça o projeto do Componente de Domínio do Problema. Considere que está disponível para reúso o utilitariopessoa da Figura 2 e que o sistema será implementado em Java. Figura 1 - Diagrama de Classes da Fase de Análise Figura 2 Utilitário Pessoa
(2) Considere o desenvolvimento de um sistema para apoiar as atividades de uma pousada. Clientes se hospedam em quartos e podem solicitar serviços, tais como serviços de lavanderia, restaurante etc. A Figura 3 mostra o diagrama de casos de uso para o sistema proposto. Os casos de uso Cadastrar Quarto, Cadastrar Serviço e Cadastrar Cliente possuem fluxos de eventos básicos para criar, alterar, consultar e excluir as respectivas entidades. O caso de uso Efetuar Reserva possui fluxos de eventos para efetuar nova reserva, cancelar reserva e consultar reserva. O caso de uso Controlar Hospedagem possui fluxos de eventos para registrar entrada e para registrar saída. Ao se registrar uma saída, a hospedagem deverá ser paga, realizando o caso de uso Efetuar Pagamento. O pagamento pode ser feito por meio de cartão de crédito, cheque ou dinheiro. Por fim, o caso de uso Controlar Prestação de Serviço possui fluxos de eventos para registrar uma prestação de serviço, alterar dados de uma prestação de serviço e cancelar uma prestação de serviço. Figura 3 Diagrama de Casos de Uso O fluxo de eventos Registrar Saída do caso de uso Controlar Hospedagem tem a seguinte descrição: 1. O recepcionista informa o quarto que deseja encerrar a hospedagem. 2. De posse do quarto, o sistema recupera a hospedagem vigente do quarto e os serviços prestados para essa hospedagem. 3. O sistema calcula o valor a ser pago em diárias, o valor a ser pago por serviços prestados e o valor total a ser pago. 4. A hospedagem é finalizada, registrando-se a data e hora da saída. 5. Incluir Efetuar Pagamento. A Figura 4 apresenta o diagrama de classes da fase de análise.
Figura 4 Diagrama de Classes da Fase de Análise (a) Faça o projeto do Componente de Domínio do Problema. Considere que há dois utilitários disponíveis para reúso, a saber: utilitariopessoa (Figura 2) e utilitariopagamento (Figura 5). Além disso, considere que o sistema será implementado em Java. (b) A partir do diagrama de classes desenvolvido na questão anterior, faça um diagrama de sequência para o fluxo de eventos Registrar Saída considerando o uso do padrão Camada de Serviço. Adicione os métodos de forma apropriada no diagrama de classes. (c) Considerando apenas os casos de uso Controlar Hospedagem e Controlar Prestação de Serviço e a aplicação do padrão Camada de Serviço, faça em um mesmo diagrama o projeto do Componente de Gerência de Tarefas e o projeto da Camada de Interface com o Usuário. Figura 5 Utilitário Pagamento
(3) Considere o desenvolvimento de um sistema para apoiar as atividades de uma clínica médica. Pacientes agendam consultas com médicos. Quando uma consulta é realizada, é registrado um registro clínico que prescreve medicamentos. A Figura 6 mostra o diagrama de casos de uso para o sistema proposto. Os casos de uso Controlar Medicamento, Controlar Médico e Controlar Paciente possuem fluxos de eventos básicos para criar, alterar, consultar e excluir as respectivas entidades. O caso de uso Agendar Consulta possui fluxos de eventos para marcar nova consulta, cancelar consulta e consultar dados de consulta. O caso de uso Realizar Consulta possui fluxos de eventos para efetuar registro clínico e consultar registro clínico. A Figura 7 mostra um fragmento do diagrama de classes de análise para esse sistema. A usabilidade é um dos condutores do projeto da arquitetura desse sistema e a seguinte tática deve ser empregada: minimize o número de ações de entrada requeridas e possíveis erros, permitindo, sempre que possível, a seleção de dados a partir de um conjunto pré-definido de valores de entrada. Observação: Princípio ativo é a substância que deverá exercer efeito farmacológico. Por exemplo, o paracetamol é o princípio ativo de diversos medicamentos, dentre eles o Tylenol. Figura 6 Diagrama de Casos de Uso Figura 7 - Diagrama de Classes da Fase de Análise
(a) Faça o projeto do Componente de Domínio do Problema. Considere que está disponível para reúso o utilitariopessoa da Figura 2 e que o sistema será implementado em Java. (b) Considerando apenas uma aplicação a ser usada por atendentes, e o uso do padrão Camada de Serviço, faça em um mesmo diagrama o projeto do Componente de Gerência de Tarefas e o projeto da Camada de Interface com o Usuário para esta aplicação. (c) A partir do diagrama de classes elaborado no item (a), derive o modelo relacional correspondente. (d) Considerando apenas a aplicação a ser usada por atendentes, o uso do padrão Data Access Object - DAO e o uso de um framework de persistência implementando a API JPA, faça o projeto da Camada de Gerência de Dados correspondente. (4) Seja um sistema de submissão de trabalhos para eventos científicos. Há funcionalidades que estarão disponíveis apenas para os coordenadores dos eventos (registro do evento, definição do comitê de avaliação, convite aos avaliadores etc.), outras que serão voltadas para avaliadores (resposta a convite, acesso aos trabalhos e registro de suas avaliações) e um terceiro conjunto de funcionalidades voltado para os autores dos trabalhos (submissão de trabalhos). O sistema deve rodar na Web e poderá ser acessado pelos três tipos de usuários anteriormente descritos. As figuras 8 e 9 mostram, respectivamente, o diagrama de casos de uso e o diagrama de classes de análise do subsistema de submissão de trabalhos. Nesse subsistema, deseja-se que, sempre que possível, a entrada de dados seja feita via seleção de dados a partir de um conjunto pré-definido de valores de entrada. O caso de uso Controlar Colaborador possui os fluxos de eventos básicos para criar, alterar, consultar e excluir colaboradores. O caso de uso Submeter Trabalho a Evento possui fluxos de eventos para submeter novo trabalho, cancelar submissão, alterar dados de submissão e consultar submissão. Figura 8 Diagrama de Casos de Uso Figura 9 - Diagrama de Classes da Fase de Análise (a) Faça o projeto do Componente de Domínio do Problema. Considere que está disponível para reúso o utilitariopessoa da Figura 2 e que o sistema será implementado em Java.
(b) Considerando apenas o subsistema de submissão de artigos, e a aplicação do padrão Camada de Serviço, faça em um mesmo diagrama o projeto do Componente de Gerência de Tarefas e o projeto da Camada de Interface com o Usuário para este subsistema. (c) A partir do diagrama de classes elaborado no item (a), derive o modelo relacional correspondente. (d) Faça o projeto da Camada de Gerência de Dados do subsistema de submissão de artigos, considerando o uso do padrão Data Access Object - DAO e o uso de um framework de persistência implementando a API JPA. (5) As figuras 10 e 11 mostram fragmentos dos diagramas de casos de uso e de classes de análise para um sistema de uma empresa especializada em leilões pela Internet. Em cada leilão, são definidos lotes de itens que serão leiloados. Alguns desses itens são consignados e, portanto, possuem um fornecedor como proprietário. Além disso, itens são classificados por tipo, tais como móveis, equipamentos de informática, obras de arte etc. Participantes inscrevem-se em leilões e, estando inscritos em um leilão, podem dar lances para adquirir algum dos lotes desse leilão. A usabilidade é um dos condutores do projeto da arquitetura desse sistema e a seguinte tática deve ser empregada: minimize o número de ações de entrada requeridas e possíveis erros, permitindo, sempre que possível, a seleção de dados a partir de um conjunto pré-definido de valores de entrada. (a) Faça o projeto do Componente de Domínio do Problema. Considere que está disponível para reúso o utilitariopessoa apresentado na Figura 2 e que o sistema será implementado em Java. (b) Derive o modelo relacional correspondente ao projeto efetuado no item anterior. Indique as abordagens usadas nos mapeamentos de herança, justificando sua decisão. Indique, ainda, a escolha em relação às chaves primárias, justificando sua decisão. (c) Considerando apenas o subsistema de participação em leilões, e a aplicação do padrão Camada de Serviço, faça em um mesmo diagrama o projeto do Componente de Gerência de Tarefas e o projeto da Camada de Interface com o Usuário para este subsistema. Figura 10 Diagrama de Casos de Uso Subsistema Participação em Leilão.
Figura 11 - Diagrama de Classes da Fase de Análise (6) Considere o desenvolvimento de um sistema para apoiar as atividades do site de venda de discos usados "Sebo Virtual". Clientes compram itens, os quais podem ser CDs, DVDs ou discos de vinil. Os itens são disponibilizados por sebos que se associam ao Sebo Virtual. Cada item é relativo a um Álbum, sendo que álbuns são classificados em gêneros, tais como: MPB, Rock, Sertanejo, Pop, Funk, Clássico etc. A Figura 12 mostra o diagrama de casos de uso do subsistema de Venda de Itens. A Figura 13 mostra o diagrama de classes de análise para esse sistema. Ao acessar este subsistema pela Internet, o cliente já acessa a página relativa ao caso de uso Efetuar Compra, o qual possui fluxos de eventos para pesquisar itens, adicionar item a compra, retirar item de compra e finalizar compra. Nesta página de compra, há um link que permite acessar o caso de uso Controlar Cliente, o qual possui os fluxos de eventos básicos para criar novo cliente, alterar dados de cliente, consultar cliente e excluir cliente. A usabilidade é um dos condutores do projeto da arquitetura desse sistema e a seguinte tática deve ser empregada: minimize o número de ações de entrada requeridas e possíveis erros, permitindo, sempre que possível, a seleção de dados a partir de um conjunto pré-definido de valores de entrada. Figura 12 - Diagrama de Casos de Uso - Subsistema Venda de Itens
Figura 13 Diagrama de Classes (a) Faça o projeto do Componente de Domínio do Problema. Considere que está disponível para reúso o utilitariopessoa da Figura 2 e que o sistema será implementado em Java. (b) Considerando apenas o subsistema de Venda de Itens e o uso do padrão Camada de Serviço, faça, em um mesmo diagrama, o projeto do Componente de Gerência de Tarefas e o projeto da Camada de Interface com o Usuário para esta aplicação. Mostre neste diagrama como o padrão arquitetônico MVC (Modelo - Visão - Controlador) se manifesta, indicando quais classes compõem os componentes desse padrão. (c) A partir do diagrama de classes elaborado no item (a), derive o modelo relacional correspondente. Justifique suas decisões para hierarquias de classes, apontando a estratégia usada e porque ela foi escolhida.