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
Download

Document