MAC0499 - Trabalho de Formatura Supervisionado

MatrUSP

  • Membros:
  • Bruno de Oliveira Endo
  • José Ernesto Young Rodrigues
  • Rafael Marinaro Verona
  • Instituto de Matemática e Estatística - Universidade de São Paulo
  • Supervisores:
  • José Coelho de Pina
  • Instituto de Matemática e Estatística - Universidade de São Paulo
  • Pedro Paulo Vezzá Campos
  • Microsoft Corporation

Resumo

O planejamento e organização das atividades a serem realizadas, em um próximo semestre, pelos discentes é uma parte importante na vida acadêmica e pessoal dos estudantes. O sistema JupiterWeb não supre essa necessidade, uma vez que as informações sobre disciplinas a serem oferecidas estão dispersas, não exibe graficamente as possíveis grades horárias antes do período de matrícula e não calcula as diversas possibilidades de grades de acordo com a variação das turmas para um determinado conjunto de disciplinas. O MatrUSP surgiu para resolver esses problemas e melhorar a experiência do usuário na matrícula e no seu gerenciamento de horários pessoais. Através dele é possível verificar o horário de todas as matérias disponibilizadas pela Universidade de São Paulo, verificar conflitos de horários de uma forma clara e, ainda, verificar todas as possíveis combinações de uma determinada seleção de matérias para um rápido planejamento de rotina. Os principais objetivos deste projeto são modernizar e incrementar o sistema MatrUSP, utilizando tecnologías web a fim de melhorar a usabilidade, reformular e adicionar ferramentas que facilitem ainda mais o gerenciamento do tempo, aproveitando-se também de plataformas externas amplamente utilizadas como Google Calendar e Facebook para visualizar e compartilhar esse tipo de informação.


Introdução

O que é o MatrUSP

O MatrUSP é um sistema para auxiliar os alunos da USP a planejarem sua matrícula. Dentro do sistema, o usuário pode escolher as disciplinas, e respectivas turmas, que pretende cursar no próximo semestre, e colocá-las em uma ordem de prioridade. Então, o software calcula todas as possibilidades de combinações das turmas selecionadas para que todos os eventos não conflitem e exibe graficamente ao usuário, permitindo que ele escolha, de forma prática, a combinação que mais lhe agrada.

Motivação

O sistema da universidade, JúpiterWeb, provê a funcionalidade de seleção de disciplinas e realização da matrícula, porém não fornece ao aluno uma forma prática de visualizar sua grade horária antes de confirmar a matrícula ou sequer qualquer tipo de visualização antes do período de matrícula, o que dificulta seu planejamento e realização, pois só é possível verificar conflitos entre as disciplinas ao se tentar salvar uma grade. O MatrUSP surgiu para melhorar essa experiência além de trazer uma série de outras funcionalidades que serão descritas mais adiante. Além disso, durante a graduação, mesmo criando uma quantidade grande de softwares na forma de exercícios programas, não tivemos a oportunidade acadêmica de criar algo que terá grande impacto na vida de outras pessoas. Desenvolver o MatrUSP foi uma oportunidade única para deixarmos como legado um produto que atinge e melhora a vida de grande parte dos alunos da comunidade uspiana. O que torna o desenvolvimento deste software ainda mais recompensador é o fato de sermos, nós três, usuários ativos do sistema. Desde quando começamos a incluir disciplinas eletivas nas nossas grades semestrais, utilizar o MatrUSP foi muito gratificante por ele já resolver diversos problemas existentes no fluxo de matrícula. Ainda assim, sempre nos pareceu que havia espaço para aumentar o número de funcionalidades, incluir ferramentas que se mostravam úteis para nossos colegas mais próximos e para nós mesmos, e melhorar como tudo era exibido ao usuário, melhorando a interface gráfica.

Proposta inicial

Nossa proposta de trabalho é criar uma nova versão do MatrUSP que seja melhor em diversas frentes. Pretendemos reformular o design da página melhorando a interação dos usuários, nos apoiando em conceitos de interação humano-computador (IHC). Também pretendemos refatorar o código, melhorando consideravelmente a sua manutenção. Tornar o sistema flexível a ponto de ser acessível por outras universidades é mais um dos objetivos, tentando diminuir ao máximo o número de adaptações necessárias para atender às particularidades de cada universidade.

Além disso, buscamos construir versões específicas do MatrUSP para plataformas móveis (Android, iOS e Windows Phone) caso haja tempo, pretendemos pesquisar e implementar uma forma de recomendação de disciplinas aos usuários. Existem muitos cenários onde o aluno tem pouca liberdade para escolher o que cursar no semestre e, com isso em mente, achamos interessante tentar pré-popular a grade horária com as disciplinas obrigatórias do semestre.


Cronograma

Atividades Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro
Análise de requisitos X X X X
Pesquisa e leitura da bibliografia X X X
Desenvolvimento X X X X X X X
Testes com usuários X X X
Monografia X X X X X
Pôster X
Apresentação X

Resultados

Comparação: MatrUSP antigo (Jul/2013 - Out/2016) e MatrUSP novo (Nov/2016 - presente)

Optamos por reescrever totalmente o código e apoiar a estrutura do novo MatrUSP no conceito de árvore de estado. A árvore de estados é um objeto que representa todos os elementos conceituais do sistema tais como: grades horárias, disciplinas, turmas e aulas. Além disso, a árvore também mantém referências a objetos HTML. Ela representa completamente o estado do sistema em um determinado instante, isto é, armazena todas as informações relevantes para reproduzi-lo. Essa estrutura tornou muito mais fácil a manutenção e alterações no novo MatrUSP.

Além de todo o modelo estrutural e documentação do código, implementamos algumas funcionalidades novas, comparando o novo software com o antigo. Agora é possível fazer download da grade horária no formato .ics e exportar para calendários virtuais tais como Thunderbird, iCalendar e Outlook. Desenvolvemos uma integração ainda mais profunda com o Google Calendar e Facebook, sendo possível exportar dados do MatrUSP para estas plataformas com apenas dois cliques, além de incluirmos a possibilidade de compartilhar uma grade horária com outras pessoas através de uma URL única.

Outro aspecto levado em consideração foi tornar a interface gráfica mais moderna e agradável, afim de tornar o sistema mais claro e fácil de interagir. O MatrUSP antigo já possuía a funcionalidade de calcular diferentes combinações de horários de aulas, para um mesmo conjunto de disciplinas. Entretanto, ela era pouco visível e, por isso, construímos uma nova forma de visualizá-la.