MAC0499 - Trabalho de Conclusão de Curso

Desenvolvimento de Interface em Python/Django para o NEHiLP

Aluno: Fabio Brzostek Muller

Orientador: Prof. Dr. Marco Dimas Gubitoso


Proposta de Trabalho

Contextualização
O Núcleo de Apoio à Pesquisa em Etimologia e História da Língua Portuguesa (NEHiLP) visa à divulgação das pesquisas acadêmicas brasileiras sobre Linguística Histórica, Filologia e Etimologia. Um dos principais projetos do NEHiLP é o de Retrodatação (estabelecimento das primeiras ocorrências das palavras do português), cuja pesquisa possibilitará a criação do DELPo (um Dicionário Etimológico da Língua Portuguesa).

Nos últimos anos, um sistema foi desenvolvido para auxiliar os pesquisadores nesse projeto: por meio da interface web em http://www.nehilp.org, os pesquisadores inserem textos e informações sobre eles e as palavras que os compõem. Além disso, ferramentas permitem a consulta e modificação dessas informações, que são armazenadas num banco de dados. O banco guarda informações sobre obras cujo texto foi inserido, palavras (e variações delas) inseridas, classificações dessas palavras e variações e relações entre elas, etc. Para acessar e modificar essas informações, a interface utiliza consultas complexas ao banco. As funcionalidades presentes nessa interface estão implementadas em diversos programas em PHP e Perl, que foram desenvolvidos por várias pessoas e em diferentes períodos, o que resulta em uma estrutura um pouco confusa.

O projeto está em uma fase estável, com as funcionalidades principais implementadas e funcionando; assim, o trabalho feito no momento é principalmente de correção de bugs ou adição de funcionalidades mais simples. No entanto, para auxiliar o desenvolvimento futuro, e considerando também o fato de que os desenvolvedores mudam de tempos em tempos, seria bem interessante que a estrutura do sistema fosse melhorada de modo a ficar mais simples e mais robusta.

Objetivos
O objetivo principal do trabalho é reescrever o código em Python, usando o framework Django, fazendo ao mesmo tempo uma refatoração que, combinada com os benefícios da linguagem/framework, deixará o sistema mais organizado e moderno. O objetivo não inclui necessariamente a conversão do sistema inteiro. A ideia é implementar primeiro as funcionalidades mais básicas, principalmente acesso ao banco de dados já existente, e depois prosseguir com o máximo que for possível, com o entendimento de que, mesmo incompleto, o trabalho será de bastante ajuda ao projeto.

Etapas
Para atingir esse objetivo, o trabalho será dividido em três etapas principais:

A primeira etapa será de estudo do sistema já existente. Isso será feito por meio da leitura do código fonte e do manual e também conversando e possivelmente programando com os desenvolvedores atuais. Com isso, será possível entender a fundo as funcionalidades que deverão ser reescritas e ter uma visão melhor da relação entre os diferentes programas e arquivos, o que é essencial para o desenvolvimento de uma estrutura melhor. Essa primeira etapa também incluirá o estudo de Django, para descobrir a melhor maneira de usar o framework dadas as particularidades do projeto.

A segunda etapa terá como foco a modelagem da estrutura do banco de dados já existente para o esquema de classes utilizado pelo Django e a implementação de uma interface mínima que consiga inserir e acessar dados no banco. Esse passo é muito importante, pois é a base da implementação; para prosseguir é necessário que essa parte esteja pronta e funcionando corretamente.

A terceira etapa tratará do resto da implementação e pode ser dividida em três pedaços menores. Em primeiro lugar, serão implementadas as funcionalidades presentes na versão atual do sistema (não necessariamente todas, mas o máximo possível), sem preocupação com a parte estética. Em seguida, as páginas correspondentes às funcionalidades implementadas serão adaptadas, reproduzindo o design da versão atual. Por fim, serão desenvolvidos testes para confirmar o funcionamento correto do sistema; para isso é possível usar a funcionalidade de testes já existente no Django e também o Selenium para testes nas páginas web.

Cronograma
Uma estimativa (sujeita a mudanças) da duração das etapas é a seguinte:

Primeira Etapa - 1 mês ou 1 mês e meio
Segunda Etapa - 2 meses
Terceira Etapa - 3 meses e meio ou 4 meses

Assim, um cronograma aproximado seria:

Maio Junho Julho Agosto Setembro Outubro Novembro
Primeira Etapa X X
Segunda Etapa X X X
Terceira Etapa X X X X

Em relação à monografia em si, a ideia é constantemente fazer registros escritos das atividades feitas. Em períodos de mais tempo livre, esses registros serão integrados para formar partes da monografia e, nos últimos 2 ou 3 meses, ela será revisada e completada.