Examination Timetabling Application. Sumário Enquadramento Objectivos Arquitectura Implementação...
Transcript of Examination Timetabling Application. Sumário Enquadramento Objectivos Arquitectura Implementação...
Examination Timetabling Application
Sumário
• Enquadramento• Objectivos• Arquitectura• Implementação• Conclusões• Desenvolvimentos Futuros
Enquadramento
• Elaboração de um calendários de exames– Processo moroso e complicado;– Resultado dependente de várias variáveis;– Dependendo dessas variáveis, poderá ser
difícil/impossível elaborar um calendário que seja do agrado de todos.
Objectivos
• Aplicação extensível ;• Interface gráfico para criação de calendário de
exames com apresentação dinâmica de conflitos;
• Suportar algoritmos para elaboração de calendários de forma automática.
Arquitectura
Objectos de domínio
• Garantir que é disponibilizada toda a informação relevante.
• Menos dependências nos módulos
DataAccess
• Padrão UnitOfWork• Permite mudar o repositório de dados sem
comprometer a implementação dos outros módulos
UnitOfWork
• Connection• UnitOfWork• ClassDataMappers• IDomainObject• IEntityMapperForUpdates• IEntityMapper
UnitOfWork
• AbstractDataMapper – Implementa métodos de IEntityMapper– Contem métodos abstractos que devem ser implementados
pelos tipo concretos que conhecem as tabelas da base de dados
• DomainObject– Sabe o estado em que se encontra– Contem ID– Disponibiliza métodos que devem ser chamados quando o
objecto sofre alterações– Insere-se num IEntityMapper
Carregamento de Dados (ILoader)
• Carregamento dos dados de uma instituição de ensino;
• Disponibiliza uma API para implementar o módulo
• Carregados na aplicação em tempo de execução
ILoader (Implementação)
• External data types• Metodos get e datasource• Get name
Regras (IRule)
• Regras das instituições de ensino• Compara dois exames• Carregadas em tempo de execução• Pode ser activadas/desactivadas
IRule (Implementaçao)
• Interface IRule– Método EnforceRule
• Interface IConflict– Indica a gravidade do conflito– Descreve o conflito– Alunos Afectados
• Enumerado ConflictWeight
Algoritmo (IAlgorithm)
• Problema estudado desde os anos 60• Elaboração de calendários de forma
automática• Carregados em tempo de execução
IAlgorithm (Implementação)
• Interface Ialgorithm– Metodos Set para parametrizar o algoritmo– Metodo Run retorna exames marcados
IAlgorithm (Implementação)
IOutputGenerator
• Publicação do calendário de exames• Carregado em tempo de execução
IOutputGenerator
• Interface IOutputGenerator– Getname– Setdata– GenerateOutput
Host
• Núcleo da aplicação• Responsável por carregar os módulos• Disponibiliza uma API para elaborar calendários
de exames• Devem ser utilizados os objectos
disponibilizados pela Host• Caminhos dos módulos passiveis de serem
carregados definidos através de ficheiro de configuração
Interacção da UI com a Host
• Marcação de um exame• Problemas:– Pode levar algum tempo até obter resultados– A UI deve estar sempre disponível na marcação de exames
• Solução– Uma thread é responsável por verificar os conflitos na
marcação de um exame– Recurso a BackgroudWorker Thread para chamar o
método de marcação de exames e disponibilizar os resultados na UI
Conclusão
• Disponibilizar informação ao utilizador sobre as consequências da marcação de cada exame
• Adaptação a qualquer instituição de ensino• Suporte de algoritmos para elaboração de
calendários de forma automática
Desenvolvimentos Futuros
• Implementação de assistente de criação de regras
• Completar a implementação do MVC• Integrar internacionalização• Controlo de marcação de salas• Controlar a concorrência a nível do acesso a
dados