O que se pretende neste projecto é desenvolver um Arquivo Digital de Trabalhos Práticos de Alunos, que doravante designaremos por ADTPs.
O Arquivo deverá ser desenvolvido de acordo com o modelo de referência (norma internacional) para a implementação de reopositórios digitais: OAIS (Open Archive Information System).
Basicamente, o sistema recebe um pacote de submissão (SIP) com vários ficheiros de tipos diversos (por exemplo, TeX, BibTeX, imagens, PDFs, código-fonte, programas executáveis). Juntamente com os ficheiros do Trabalho Prático a arquivar segue um manifesto num dialecto XML standard (METS) que define o conteúdo do pacote e permite ao sistema fazer o seu arquivo.
Além disso, esse manifesto também conterá a classificação (hierárquica ou não), descrita segundo um padrão a escolher de entre os seguintes: Dublin Core Metadata, Encoded Archival Description (EAD) e Dublin Core + Conjunto de Elementos definido pela equipe de projecto, e alguns documentos XML contendo metainformação técnica e/ou descritiva sobre cada um dos ficheiros.
O sistema procede à ingestão do SIP, convertendo o conjunto de ficheiros em formatos própios para armazenamento constituindo um novo pacote designado por pacote de arquivo (AIP).
Esse AIP é depois transformado, segundo regras de difusão próprias do sistema, num conjunto de novos pacotes prontos para serem difundidos/distribuídos, designados por pacotes de disseminação (DIP).
O ADTPs realiza sobre o AIP um vasto conjunto de operações de gestão do arquivo, destinadas a pequisar e a manter os ficheiros.
Resumindo o modelo OAIS comporta 3 actores (o produtor que é o autor ou a entidade ou pessoa que detem os direitos sobre o material a arquivar, o administrador do arquivo que terá o controlo das tarefas de transformação e gestão, e o consumidor que será o futuro utilizador do sistema e que irá realizar operações de pesquisa, consulta e download), 3 megaprocessos (ingestão que corresponde à entrada de materiais no arquivo, gestão/administração que corresponde às acções de transformação e gestão dos objectos digitais armazenados, e disseminação que corresponde à difusão/distribuição de objectos digitais), e 3 pacotes (SIP - "Submission Information Package", AIP - "Archival Information Package" e DIP - "Dissemination Information Package").
Um Arquivo Digital não é mais do que um repositório de Objectos Digitais (OD) e é estes que é preciso definir em cada contexto de aplicação. No nosso caso, o OD é um trabalho prático e a sua estrutura e composição deverá ser pensada e especificada.
O grau de liberdade é grande no entanto sugere-se o seguinte esqueleto estrutural como ponto de partida:
Para concretizar o trabalho será necessário realizar as seguintes tarefas, algumas das quais podem prossegiur em paralelo:
Para uma avaliação contínua, e uma evolução constante no desenvolvimento do projecto integrado, serão realizadas as seguintes avaliações:
Em relação ao trabalho desenvolvido, é necessário completar o ciclo de vida de um arquivo com a disseminação de pacotes. Assim, após a pesquisa de um trabalho prático (e de o utilizador ter encontrado o trabalho em causa), deve ser possível:
Implementar um sistema de pesquisa textual sobre os ficheiros do relatório (em alternativa ou complemento, sugere-se a indexação de código fonte para pesquisa por nomes de funções, ou mesmo pesquisa textual sobre código C);
A criação de documentos a partir dos TP arquivados: por exemplo, uma lista de documentos citados pelos vários relatórios; um portfólio dos trabalhos realizados por um aluno, ou pela turma de um professor, etc.
Implementar uma API de pesquisa sobre o arquivo através de WebServices? , de modo a que os vários arquivos possam consultar a base de trabalhos práticos dos outros arquivos. (Este trabalho levará a uma discussão prévia nas aulas de PI sobre a API a definir).
API
Além dos 4 pontos anteriores, resolva ainda uma das questões abaixo à sua escolha.
Permitir que os TPs sejam classificados por uma árvore classificativa genérica (ontologia, com diferentes tipos de relação) e não apenas por uma taxonomia fixa (ACM);
Desenvolver uma API sobre o repositório de forma a que se possa programar sobre ele, ou seja criar operações que trabalhem sobre os TPs arquivados, p.ex. para retirar e compor meta-informação, fazer resumos de relatórios, extrair comentários de programas, traduzir os comentários ou mesmo os relatórios, etc.;