I. | Introdução |
|
1. | Apresentação | |
O projeto escolhido como trabalho de formatura é um sub-projeto que integra o Projeto de Informatização da Biblioteca IME, que está sendo realizado por alunos do IME juntamente com professores do Instituto.
|
||
2. | Grupo do Projeto | |
O grupo está subdividido em equipes, cada uma encarregada de uma parte do sistema. Alunos: Professores: |
II. | Relatório Técnico |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. | Objetivo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Definição de um modelo XML para a base de dados que está sendo criada para a Biblioteca IME. Este modelo deverá ser usado para fazer a carga da nova base de dados, a partir da importação de dados de bases já existentes. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. | Contexto |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.1. | Modularidade do Sistema de Informatização | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Este trabalho é um sub-projeto que integra o Projeto de Informatização da Biblioteca do IME. O sistema está dividido em módulos, minimizando a dependência entre os grupos de desenvolvimento do projeto.
A definição do modelo XML encaixa-se no Módulo Acervo. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.2. | Bases de Dados | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Os dados do Acervo da Biblioteca encontram-se, no momento, em duas bases de dados: Urge sistematizar o processo de importação de dados das bases existentes para a nova base que está sendo criada.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. | XML: eXtensible Markup Language | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.1 | Introdução | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
XML é uma linguagem de marcação, assim como HTML. Basicamente, o que diferencia estas duas linguagens é que a primeira foi criada para descrever dados, enquanto que a segunda foi criada para exibir dados. XML permite que o desenvolvedor crie seus próprios marcadores (estruturas rotuladas tag), daí sua flexibilidade. Há apenas uma primeira linha [ver fig. exemplo 1] que é obrigatória para que o documento seja validado: uma declaração XML que define a versão XML do documento em questão.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.2 | Estrutura Básica dos Marcadores | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4. | O PROJETO |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.1 | Uma proposta | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Importação de dados de uma base para outra não é trivial quando lidamos com bases totalmente distintas em sua estruturação.
Nossa solução propõe o uso de analisadores (parsers) e um arquivos XML.
Nosso documento XML descreve um ITEM DE ACERVO da Biblioteca do IME: de que forma as informações sobre um item do Acervo estão estruturadas? Não se trata, aqui, de saber quais as relações da base de dados. Antes, é a descrição de um ITEM DE ACERVO a partir de seus elementos (autores, assuntos relacionados, eventos associados, edições, etc), respeitando a hierarquia de registros. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.2 | Etapas do processo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Definido o documento XML modelo, o processo todo envolve, basicamente, duas etapas:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5. | Desenvolvimento | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.1 | Modelo XML | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nosso documento XML é um arquivo.xml, contendo a estrutura de um ITEM DE ACERVO da Biblioteca do IME, juntamente com a Definição do Tipo de Documento (DTD - Document Type Definition). O DTD é descrição estrutural do documento e inclui regras de interpretação para cada uma das informações contidas no mesmo. Ele contém a definição dos elementos e listas de atributos, a cardinalidade dos elementos, a hierarquia dos registros. Por exemplo: ITEM DE ACERVO pode ser PERIÓDICO, NÃO-PERIÓDICO, MULTIMIDIA ou TESE. Cada um deles é um elemento distinto. Determinamos, também pelo DTD, que o item pode ter mais de um ASSUNTO associado, mas apenas uma EDITORA. Suponha que o parser A gere um arquivo itemYYY.xml a partir de dados selecionados numa das bases-origem. Esse arquivo será um documento XML válido apenas se obedecer às definições DTD. A metodologia utilizada foi: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.2 | Parser A | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Para criar o parser A, é necessário ter acesso à base-origem: saber como extrair, das relações dessa base, os dados necessários para gerar arquivos xml válidos. No caso específico do parser A para a base do IDBIME, utilizamos a seguinte metodologia: Esse último script - o parser A para o IDBME - foi desenvolvido em Java e requer driver para acesso ao servidor postgresql (note que a base-origem, neste momento, é uma cópia da base original do IDBME). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.3 | Parser B | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
O desenvolvimento do parser B exige compreensão total da base-destino (a nova base): em que ordem inserir os novos registros?É importante manter a consistência dos dados: ao inserir o livro "Sistemas de Bancos de Dados", preciso associá-lo ao assunto "Bancos de dados". Esse assunto já foi inserido?
A metodologia utilizada foi: Esta apresentação [.pdf] mostra como foi desenvolvido um leitor de arquivos XML (uma classe em Java) que, após analisar seu (do arquivo) contéudo, faz a carga da nova base de dados com as informações obtidas pelo parser. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6. | Cronograma | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6.1 | Atividades realizadas | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7. | Ferramentas | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8. | Conclusão | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9. | Bibliografia e Links | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ABITEBOUL, S.; BUNEMAN, P.; SUCIU, D. Data on the web: from relations to semistructured data and XML. California: Morgan Kauffman Publishers, 2000. WALL, L.; CHRISTIANSEN, T.; SCHWARTZ, R.L; POTTER, S. Programming Perl. California: O´Reilly & Associates, 1996. HOLZNER, STEVEN.Inside XML. Indiana: New Riders, 2001. http://perl.about.com/ http://www.activestate.com http://www.cpan.org http://search.cpan.org/~arc (Aaron Crane) http://crazyinsomniac.perlmonk.org/perl/ppm PostgreSQL 7.4.3 Documentation http://www.xml.org Papers about XML (by Ronald Bourret) XML Specification Apache XML Project |
1. | Tipo de Trabalho |
O que escolher como trabalho de formatura?
Existem, claro, as características pessoais do aluno: há quem goste de algo mais acadêmico, como Iniciação Científica.
Mas gostaria de discutir outro fator determinante para a escolha de um ou outro tipo de trabalho. Como eu gosto da área de Desenvolvimento web, a idéia do Estágio Supervisionado sempre me pareceu mais interessante, pois é no estágio que temos a oportunidade de lidarmos com problemas que, muitas vezes, não são tratados no curso do BCC: por exemplo, o excesso de requisições de um servidor web. Temos, no entanto, ironicamente, uma limitação: a Internet é uma vitrine gigantesca. E a regra (para o Trabalho de Formatura) que nos obriga a disponibilizar informações sobre o estágio (e, conseqüentemente, sobre o que foi desenvolvido) acaba diminuindo o leque de opções, embora seja compreensível que toda a documentação seja necessária para validar a formatura do aluno.
Finalmente, optei por um Projeto supervisionado porque oferece a possibilidade de se desenvolver algo com embasamento teórico bastante sólido: poder estudar um assunto e aplicá-lo, observando o resultado na prática. Era um desafio trabalhar ao lado de excelentes pesquisadores da área, numa equipe com alunos também da pós-graduação. Neste projeto da Biblioteca, tive contato com ferramentas que não são usadas comumente nas disciplinas da graduação: quando são, não há o intuito de se estudar a ferramenta em si ( o que, de certa forma, é aceitável, já que o dinamismo da área torna uma ferramenta obsoleta em muito pouco tempo). | |
2. | Proposta |
No início, tive dificuldade em entender por que era preciso criar um modelo XML: não seria mais rápido simplesmente fazer a carga do sistema usando apenas um parser?
Com o tempo, no entanto, analisando a complexidade do projeto do banco de dados, e tendo em vista que havia mais de uma base-origem, comecei a acreditar que a proposta do uso do XML era eficiente, mas talvez não interessante: os scripts dos parsers seriam executados apenas uma vez, já que, após a importação dos dados, os novos registros são feitos pelo novo sistema. Não era uma relação custo/benefíco atraente. Até então, eu não sabia que já existem muito parsers XML integrados ao java. Isso facilitou muito o desenvolvimento. Além disso, conexão com bancos de dados, ainda que o script esteja sendo executado localmente, trazem um custo adicional de tempo e eficiência. Numa base com quase 100 tabelas e mais de 100 mil registros, a execução de um script que se conecte à base-origem E à base-destino é bastante custosa. Separar o processo de importação em etapas e utilizar um modelo XML, enfim, mostrou-se uma solução bastante eficiente. Não há necessidade de alteração no parser B (salvo possíveis alterações no modelo da base de dados nova). Surgindo uma outra base-origem, a importação dos dados resume-se a criar o parser A seguindo o modelo do arquivo XML definido, deixando de lado a complexidade do modelo da base nova. Há, também, a facilidade de se escolher a linguagem mais adequada para conexão cada base: no desenvolvimento deste projeto, por exemplo, a opção do Perl para acessar a base-origem em Clipper foi feita pois era inviável desennvolver o script em Java. E, como os arquivos XML são, na prática, textos puros, é muito fácil manipulá-los, seja qual for a linguagem de programação. | |
3. | Desenvolvimento |
No início do projeto, optou-se por criar um script em Perl para copiar os dados da base em Clipper para a base PostgreSQL. No entanto, encontrar um módulo (perl) para a conexão com o banco PostgreSQL acabou muito mais tempo do que eu esperava. Não posso deixar de citar que tive a ajuda de muitas pessoas que não faziam parte do grupo de trabalho. Em especial, desenvolvedores de Software Livre do mundo todo. A partir de listas de discussões e fóruns na Internet, tive a oportunidade de entrar em contato com muitas pessoas. No mundo corporativo das grandes empresas, é muito raro encontramos tantas pessoas dispostas a ajudar. O fato de ser um trabalho voltado para a Universidade facilitou o contato e a colaboração. | |
4. | Disciplinas |
Das discplinas cursadas durante a graduação, as que considerei mais importantes para minha formação foram: Obrigatórias Proporcionam um primeiro contato com projetos envolvendo várias fases. Como não há, de antemão, uma especificação clara do que é o projeto como um todo, ao longo do desenvolvimento foram necessárias várias alterações nas várias fases já entregues. Mas foi importante participar da discussão, em sala, do que seria o projeto: como desenvolver uma parte de forma a ser utilizada por outro bloco do projeto, que estruturas de dados são mais adequadas, etc. É matéria essencial para entender como armazenar dados de forma sistemática. No uso do XML, claramente podemos perceber uma estrutura de árvore. A importância dessa disciplina é muito clara: basta pensar nos obstáculos citados para Laboratórios de Programação Optativas Eletivas Procurei as disciplinas que envolvessem as seguintes áreas: Engenharia de Dados, Bancos de Dados e Desenvolvimento de Sistemas para Web. Eram disciplinas que envolviam desenvolvimento de projetos, o que colaborou na assimilação de vários conceitos teóricos. | |
5. | O BCC |
Por envolver alunos e professores do IME, não houve muita diferença no desenvolvimento deste projeto no que diz respeito a ambiente de trabalho.
A única diferença foi não poder discutir o trabalho com colegas que estivessem desenvolvendo um mesmo projeto. Na grande maioria das disciplinas, há sempre um fórum ou uma lista de discussão, no qual os alunos enviam dúvidas, discutem soluções para resolver determinados problemas. Acho uma discussão saudável: aprendemos muito com as várias soluções apresentadas pelos colegas. Durante o tempo de gradução, vi alterações no currículo do BCC: a meu ver, algumas boas, outras ruins. Mas acho que há uma real preocupação de se manter a qualidade do curso: as reuniões entre corpos docente e discente do Departamento de Ciência de Computação procuram soluções para a manunteção da excelência do curso. No geral, aproveitei também o fato de que, na USP, temos um leque variado de cursos livres e atividades extra-curriculares para os graduandos, pois acredito que participar de atividades não restritas à própria área de atuação colaborem para uma formação mais completa. O Departamento de Ciência da Computação do IME também oferece Leitura Dramática, uma disciplina que, embora pareça estar mais ligada à ECA-USP, é voltada para os alunos de Exatas e fornece ferramentas para lidar com o lado não-lógico dos seres humanos. Embora, em algumas disciplinas usuais (da área), sejam feitos trabalhos em grupo, a preocupação é o produto final: entregar o trabalho. Em Leitura Dramática, exercitamos a comunicação (verbal e não-verbal) com os colegas: numa área em que o raciocínio lógico é tão apurado, lidar com o lado menos racional não é tarefa simples. E, muitas vezes, o sucesso de um projeto depende da eficácia na comunicação dos integrantes da equipe que desenvolve esse projeto. O fato do departamento se preocupar em oferecer essa disciplina, ainda que seja optativa, mostra a preocupação na ampla formação de seus alunos. | |
6. | O Futuro |
Pretendo continuar na área de desenvolvimento de sistemas para web - agora com um cuidado ainda maior na modelagem do banco de dados. |