Examination Timetabling Application. Sumário Enquadramento Objectivos Arquitectura Implementação...

Post on 18-Apr-2015

106 views 1 download

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