|
Acadêmico(a): Rogério Sorroche |
Título: Sistema de Auxílio à matrícula de Alunos Utizando Java 2 Enterprise Edition |
|
Introdução: |
Semestralmente a Universidade Regional de Blumenau (FURB) disponibiliza aos seus alunos o procedimento de reserva de vaga. Este procedimento serve como uma pré-matrícula, onde o aluno escolhe as disciplinas que pretende cursar no próximo semestre. A reserva de vaga pode ser feita através da internet, pois já existe um sistema automatizado feito em Java Applets. Este applet mostra uma lista de todas as disciplinas que são oferecidas ao curso em que o aluno está matriculado, agrupadas por semestre. No sistema, o aluno escolhe a disciplina desejada e automaticamente é mostrada uma grade com os horários semanais da disciplina. Se houver coincidência de horário o mesmo é mostrado com uma cor diferente e uma mensagem ao aluno é emitida, caso contrário, a disciplina pode ser incluída pelo aluno em sua grade. Para alunos considerados regulares, isto é, que seguiram o currículo do curso sem reprovações, o procedimento funciona muito bem. Entretanto, esta não é a regra e muitos alunos têm pelo menos uma ou duas disciplinas nas quais não obtiveram aprovação. Para agravar esta situação, muitas disciplinas são pré-requisitos de outras, ou seja, o aluno tem que obter aprovação nestas disciplinas antes de cursar as outras. Por isso torna-se difícil para o aluno reservar as disciplinas que se encaixem no horário de maneira satisfatória, pois ele tem que passar semestre por semestre, disciplina por disciplina, para verificar se alguma disciplina se encaixa no horário que ele tem disponível. Na grande maioria das vezes ele acaba não fazendo isso. Neste contexto, surge a necessidade de um sistema automatizado que elabore sugestões de horário na reserva de vaga. Isto envolve selecionar as disciplinas que o aluno está apto a cursar, verificar a disponibilidade de horários do aluno, e, então, elaborar sugestões de horário. Deve-se levar em conta algumas restrições que o próprio aluno pode informar como, por exemplo, dar mais prioridade a uma disciplina do que a outra, ou ainda o fato de que o aluno tem um mínimo de créditos a pagar todo semestre, e muitas vezes não consegue reservar as disciplinas de modo que este mínimo seja atendido. Assim, o sistema poderia beneficiar tanto o aluno, permitindo a ele um melhor aproveitamento de sua grade de horários, quanto à instituição, que teria um maior retorno financeiro, uma vez que o aluno estaria fazendo um maior número de disciplinas e, conseqüentemente, reduzindo o seu tempo de curso. Problemas de arranjo e otimização como o citado acima, recebem a designação genérica de problemas de timetabling, que constituem em construir quadros de horários para uma série de atividades atendendo a um determinado conjunto de restrições. Os problemas de timetabling são, em geral, classificados quanto a sua complexidade como problemas pertencentes à classe NP-Difícil, ou seja, nem sempre possuem algoritmos eficientes para sua execução em tempos de processamento polinomiais. Em outras palavras, a computação do algoritmo, para um determinado problema, cresce exponencialmente em função do tamanho da instância (Braz, 2000). Para resolver problemas como estes, surgiram os métodos heurísticos ou aproximativos, definidos, segundo Goldbarg (2000), como algoritmos de busca de soluções em que não existe qualquer garantia de sucesso. Muitos métodos heurísticos já foram aplicados para problemas de timetabling, dentre os quais pode-se citar: Algoritmos Genéticos (Braz, 2000) e (Lucas, 2000), Tabu Search (Hertz, 1992), Simulated Anneling (Thompson, 1996) e Teoria dos Grafos (Schwarz, 1990). Neste trabalho foi utilizado um modelo da Teoria dos Grafos, que utiliza o conceito de conjuntos independentes maximais, baseado no trabalho de Schwarz (1990), que aplicou o método para a elaboração de grade de horários em instituições de ensino. Para a implementação desta aplicação foram utilizadas as tecnologias definidas pela plataforma Java 2 Enterprise Edition (J2EE) que segundo Sun (2002b), define um padrão para o desenvolvimento de aplicações multicamadas. Nesta arquitetura multicamadas, a camada que contém as regras de negócio, implementada utilizando Enterprise JavaBeans, pode ficar concentrada no servidor de aplicações, sendo compartilhada com diversas aplicações clientes. As aplicações clientes não contêm a lógica do negócio, atendo-se somente à camada de apresentação. Na camada de apresentação foram utilizadas as tecnologias de Servlets e JavaServer Pages. Segundo Marinescu (2002), sem um conjunto de boas práticas de modelagem, o desenvolvimento utilizando a arquitetura multicamadas J2EE, pode se tornar muito difícil. Os desenvolvedores acabam reinventando a roda, ou simplesmente, cometendo custosos erros de projeto. Segundo Alur (2002), uma boa maneira de adquirir experiência em projeto é pela utilização de padrões de projeto. Os padrões de projetos constituem um novo mecanismo para expressar experiências na elaboração de projetos orientados a objetos. Marinescu (2002) caracteriza um padrão de projeto como uma solução utilizando boas práticas para um problema comum recorrente. Os padrões de projeto descrevem um problema e a sua solução formando assim, uma linguagem comum, que permite a troca de experiências. Sendo assim, neste trabalho é apresentado um sistema de auxílio à matrícula de alunos, desenvolvido utilizando-se uma arquitetura multicamadas baseado no J2EE e seguindo alguns padrões de projeto específicos para esta arquitetura. |
|
|