Olá, pessoal! Como eu já disse neste blog, estou estagiando na FATEC de Praia Grande, desenvolvendo um sistema web para registrar as reservas de equipamentos e salas da faculdade. Essa já é a terceira semana de estágio e eu já implementei quase que a primeira parte completa. Na fase de análise do software, ele foi dividido em mais de vinte casos de uso.
O primeiro caso de uso, que é o de agendar eventos (reservas), está quase que completamente implementado e ele está demandando bastante tempo para ser feito, pois é o mais complexo. Inclusive, essa parte do sistema está sendo mais complexa do que eu imaginava, principalmente porque o sistema prevê a recorrência de eventos, ou seja, o evento (uma aula cujo professor precisará de um notebook e de um projetor para exibir a matéria, por exemplo) pode acontecer várias vezes por um certo período de tempo (todas as quartas, uma vez por mês, todas as segundas e quintas, uma vez a cada três semanas na quinta e na sexta, a cada dois meses, todas as terceiras quartas-feiras do mês e outros períodos), e esse período de tempo pode durar até uma data pré-estabelecida, um certo número de recorrências ou até mesmo pode não terminar nunca, recorrenco até o evento ser excluído do sistema. Sem contar que o sistema não pode deixar um equipamento (um notebook, por exemplo) ser reservado para dois eventos que ocorrem simultaneamente. Em outras palavras, ao agendar o evento, o sistema tem que verificar em todos os eventos cadastrados se algum deles, em algum dia, no horário marcado e na duração marcada, têm reservado previamente a mesma sala ou algum dos até três equipamentos que podem ser reservados para um mesmo evento (e a situação se complica quando a recorrência de um evento não tem data de término prevista).
A boa notícia é que essa parte complexa já foi implementada e o que falta para concluir o primeiro caso de uso seria terminar as páginas JSP e terminar de implementar o fluxo alternativo do caso de uso (por exemplo, o que acontece se o evento a ser registrado usa o mesmo equipamento que um outro evento já registrado, num mesmo dia e horário e como o sistema deve proceder).
E o segundo caso de uso é até parecido com o primeiro, o segundo caso é o de solicitar agendamentos de evento, ou seja, quando um professor acessa o sistema pede que um evento seja agendado. A página JSP e o código necessário para o caso de uso funcionar é tão parecido com o do primeiro caso de uso que provavelmente eu até reaproveite o código existente, fazendo algumas alterações necessárias. E os demais casos de uso acredito que serão bem mais fáceis de implementar.
A respeito do banco de dados a ser utilizado, eu pretendia usar o MS SQL Server, que já é usado no servidor do Centro de Informática, mas o sistema está ficando tão orientado a objetos (até a recorrência é representada por uma classe, ou melhor, algumas classes que extendem a classe abstrata de recorrência, cada uma implementando um tipo de recorrência) que provavelmente não irá compensar o uso de banco de dados relacional e nem mesmo o uso de frameworks ORM como o Hibernate, que não dispensa o mapeamento das classes para tabelas. Muito provavelmente, irei usar alguma solução de armazenamento de dados orientada a objetos, talvez o Db4o, o Prevayler ou o Perola (esse último tem maior chance de ser usado).
O desenvolvimento do sistema tem também enfrentado algumas dificuldades não somente de implementação, mas também por outros inconvenientes técnicos, como a lentidão do notebook que uso no estágio (tem três SGBDs instalados: MySQL 5.0, MS SQL Server Express 2005 e Oracle Express 10, eu tenho que ficar matando alguns processos antes de abrir o Eclipse 3.4 com todos os plugins para desenvolvimento web, que é o Eclipse mais pesado de todos, isto sem contar o fato do notebook ter apenas 512 MB de memória) e os diversos vírus que aparecem e que contribuem com a lentidão do notebook velho (lembrando que o notebook está com o Windows XP instalado). Ontem, escaneei o HD do notebook com o Symantec AntiVirus Corporate Edition (outro troço pesado rodando na máquina) e este pegou mais de 40 arquivos mal-intencionados, a maioria sendo o vírus W32.Gammima.AG e trojans. E depois que eu escaneei, apareceram mais vírus! Só não formato o notebook e ponho Linux porque o notebook não é meu, é da FATEC!
Por hoje, é só! Dentro de alguns dias, estarei postando novamente, com probabilidade alta de eu escrever novamente sobre o meu estágio! Tchau e até o próximo post (embora eu tenha usado o método GET no servlet que implementei para fazer funcionar o Ajax do JSP que pega os nomes dos professores dinamicamente)!