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 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 DataAccess • Padrão UnitOfWork • Permite mudar o repositório de dados sem comprometer a implementação dos outros módulos 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