next up previous contents
Next: Edição de conteúdos em Up: Situações teste sob a Previous: O sistema CALM   Sumário

Subsections


Sistema de anotações

O mecanismo de anotação foi proposto com o objetivo de atender aos seguintes requisitos: possibilitar a realização de anotação in-situ; ser passível de integração com um ambiente educacional; oferecer suporte ao conceito de lugares-de-anotação; ter facilidade de integração com outros componentes; utilizar uma arquitetura baseada em componentes; e oferecer comunicação cliente-servidor através do mecanismo de invocação remota de métodos.

Os requisitos acima foram satisfeitos em duas aplicações. Uma delas, o AnnotTool, é uma ferramenta de anotação autônoma, pois funciona em qualquer navegador compatível com a API (Application Programming Interface) JDK 1.1 da Sun Microsystems. A segunda aplicação está integrada a um ambiente educacional, o CALM (Seção 2.2.1). Este ambiente, além de possuir um navegador próprio, é uma plataforma para integração de outras ferramentas educacionais, entre elas um mecanismo de anotações sobre páginas HTML.

As duas ferramentas permitem realizar anotações em qualquer documento HTML. Há duas opções de documento passível de anotação, o documento preparado para receber anotações em locais pré-estabelecidos e documentos sem locais pré-estabelecidos. Os documentos com locais pré-estabelecidos devem ser preparados para receber anotações. A preparação pode atender a algum cenário de aprendizado no qual seja esperado que os leitores anotem em determinados pontos do texto. A preparação de um documento HTML para anotação é feita utilizando o tag (marcador) de comentário,

  (<!--#Annot#Discussion-->)

Este marcador possui a palavra reservada Annot e, após um separador (#), pode informar o tipo de lugar-de-anotação que se deseja associar àquele ponto do documento.

Para o caso de documentos não preparados para receber anotações, há alguns marcadores que definem a localização de possíveis anotações. Três marcadores estão configurados inicialmente como locais possíveis de receber anotações, <p>, <li> e <dt>. Este conjunto de marcadores pode ser facilmente reconfigurado. A definição do lugar-de-anotação a partir de marcadores HTML limita a presença de anotação a alguns locais pré-estabelecidos, os quais podem ser insatisfatórios para a anotação que se deseja realizar. Apesar dessa limitação, esse mapeamento permite associar lugares-de-anotação a um texto que não fora preparado para ser anotado, expandindo consideravelmente a aplicabilidade da ferramenta desenvolvida.

Interfaces de Anotação

O AnnotTool é uma interface baseada em menus (Figura 2.5), com as seguintes opções: recuperar arquivo para realizar anotações; configurar informações do usuário (nome, grupo, e-mail, endereço Web local); configurar o navegador; configurar os tags que localizam lugares-de-anotação; buscar anotações pelas correspondentes palavras-chave; e gerar uma página Web, chamada de notesBook, com as anotações do usuário.

Figura: Telas do AnnotTool para abrir arquivo e configurar dados do usuário.
\includegraphics[width=.65\textwidth]{anotool.eps}

O acesso às anotações é feito por uma tela de edição, a qual permite alterar o conteúdo da anotação, inserir palavras-chave e definir se anotação é visível no texto ou não. Esta tela de edição é obtida a partir de uma figura de anotação presente em alguns pontos do texto-base. Os referidos pontos são identificados por um ícone de anotação. Pressionando-se o mouse sobre este ícone é fornecida tela de edição, a qual contém o texto da anotação correspondente àquele ponto do documento. Esta forma de acesso às anotações corresponde a um tipo de lugar-de-anotação, definido como do tipo ``hiperligação'', pois fornece somente uma ``ponte'' entre o texto e a anotação.

O mecanismo integrado ao ambiente CALM aparece como um botão (Figura 2.6) que permite ao usuário requisitar a inserção de lugares-de-anotação na página que está lendo. Este botão está localizado na barra de navegação do ambiente. O objetivo de integrar esse mecanismo ao ambiente permite ao aprendiz realizar anotações sobre os textos estudados, as quais cumprem os seguintes objetivos: facilitar a apropriação do conteúdo pela personalização do material, realimentar o material com críticas, fornecer um veículo de interação com outros colegas e de execução de tarefas colaborativas.

Figura: Realização de uma anotação dentro do ambiente CALM.
\includegraphics[width=.75\textwidth]{anotcalm.eps}

Arquitetura do AnnotTool

A arquitetura dos mecanismos compartilha dos seguintes elementos básicos: servidor de anotações (DBServer), compositor de documentos (DocTComp) e interface de anotação (navegador e applets). A organização destes na aplicação autônoma AnnotTool e a ordem de eventos para a obtenção e de um documento com anotações são mostradas na Figura 2.7. O servidor de anotações atende a requisições do compositor de documentos e da interface de anotação. As requisições podem ser por conteúdo de uma anotação em determinada posição de um documento, a lista de tags de um documento, gravar e remover anotações do repositório, etc. A comunicação entre o servidor e os clientes é feita via sockets.

O compositor de documentos é responsável por inserir os lugares-de-anotação no documento desejado. O compositor de documentos utiliza uma API, chamada DocT, que permite dividir um documento hipertexto em três perspectivas (Conteúdo, Marcadores e MetaInformação). O uso da API DocT se resume em alterar a perspectiva Marcadores de modo a obter um novo documento com um conjunto de tags que viabiliza a realização de anotações. Este novo documento possui tags applet que correspondem aos lugares-de-anotação inexistentes no documento original. Após obtido o novo documento, este é gravado em uma área pública do usuário (por exemplo o diretório public_html) e que tenha cesso via protocolo HTTP. Tal escolha permite que se recupere a página com os lugares-de-anotação por meio do servidor Web da rede local.

Figura 2.7: Arquitetura do AnnotTool.
\includegraphics[width=.7\textwidth]{arqanot.eps}

A interface de anotação é um applet disparado na própria página anotada. Esta interface é responsável por recuperar e editar o conteúdo de uma anotação. O conteúdo da anotação é obtido por meio de comunicação com o servidor de anotações.

Com o objetivo de integrar o mecanismo de anotações ao ambiente CALM, algumas modificações foram feitas em sua arquitetura. O servidor de anotações foi encapsulado em um componente JavaBean e a comunicação com este é feita via RMI. Também foi eliminada a restrição imposta pelo modelo padrão de segurança de Java de executar a aplicação no servidor Web. Para contornar esta restrição foi implementado um esquema de repetição de requisições. O applet da interface de anotação continua se conectando a um aplicativo no servidor Web, mas este aplicativo repete a requisição para o servidor de anotações rodando na máquina do usuário.

A integração do mecanismo de anotação ao ambiente CALM é resultado da abordagem de compor recursos mais sofisticados a partir de outros recursos já existentes. A integração do mesmo mecanismo autônomo ao ambiente impôs a adoção de um framework para componentes de software, os JavaBeans. Seguindo a especificação deste framework, foi criado o componente NoteBean, que encapsula a arquitetura básica do mecanismo de anotação. O resultado do condicionamento da arquitetura original ao framework de JavaBeans está na Figura 2.8.

Figura 2.8: Arquitetura com o componente NoteBean.
\includegraphics[width=.7\textwidth]{arqcomp.eps}

A especificação de JavaBeans define como construir e conectar componentes de modo a criar uma aplicação. Um JavaBean, ou um bean, é um componente de software formado por propriedades, métodos e eventos associados. A propriedade é um atributo com eventos associados e emitidos em decorrência de sua modificação.

O mecanismo de emissão de eventos é baseado no design pattern Observer descrito em Gamma et al. (1994). Este design pattern fornece uma solução para registrar outros componentes interessados em receber um determinado evento. A solução consiste basicamente em definir interfaces (classes abstratas), chamadas ``Listener'', que recebem notificações sobre a ocorrência de um determinado evento. Para cada interface Listener há uma lista com referências para todos os componentes interessados em escutar o evento.

Modelo de Objetos

O modelo de objetos do mecanismo de anotações é resultado da estratégia de obtenção de um modelo que atenda aos seguintes requisitos: indexação robusta das anotações nos documentos, persistência autônoma das anotações, tipos de anotação e várias mídias diferentes.

Como primeiro empenho para atingir tal modelo abstrato, foi desenvolvido um modelo de objetos (Figura 2.9), o qual está presente nas duas versões do mecanismo de anotação (AnnotTool e NoteBean). Este modelo define três classes: U_Html, U_Annotation e U_Tag.

Classe U_Html:
representa o documento anotado. Cada instância desta classe contém uma lista de anotações relacionadas a outra lista de tags. Esta classe contém métodos para gerenciar estas estruturas, como remover e adicionar novas anotações e realizar buscas por palavras-chave das anotações.

Classe U_Annotation:
representa uma anotação. Uma instância desta classe atribui valores para o nome do autor da anotação, um texto correspondente ao conteúdo da anotação e uma ou mais palavras-chave para a anotação.

Classe doct.Tag:
representa a posição e o nome de um elemento HTML.

Classe U_Tag:
representa uma relação dois objetos, o primeiro do tipo doct.Tag e o segundo do tipo U_Annotation. A classe U_Tag define o lugar de anotação automático associado a três tipos de elementos HTML (<P>,<LI>,<DT>). Uma instância dessa classe mantém sempre uma referência para um objeto doct.Tag. Se houver alguma anotação associada a esse elemento HTML, então também haverá uma refêrencia a um objeto U_Annotation. A classe U_Tag possui métodos para recuperar um objeto U_Annotation dada a sua posição no documento HTML, para obter o nome do rótulo associado ao elemento e informar se esse elemento é um lugar de anotação padrão. a um dos tipos default.

Figura: Diagrama de objetos das anotações persistentes.
\includegraphics[width=.85\textwidth]{modobjanot.eps}

Os objetos dessas classes são persistentes. Foram utilizados dois mecanismos de persistência baseados em repositórios de objetos. Na ferramenta AnnotTool utilizou-se o mecanismo PSE (Persistent Storage Engine) da ObjectStore, que é um repositório de objetos com suporte a transações. No componente NoteBean foi utilizado o recurso de serialização de objetos, fornecido pela API de Java desde sua versão JDK 1.1.

No mecanismo de persistência PSE, adotado em AnnotTool, a manipulação de objetos persistentes é realizada por meio de transações e pela recuperação de um handler, que é uma palavra-chave associada a um objeto persistente. Este objeto persistente é normalmente uma estrutura de dados definida pelo programa. A palavra-chave utilizada para recuperar esta estrutura de dados é o nome do usuário. A estrutura de dados, que é baseada na classe java.util.Hashtable, é utilizada para mapear nomes de URL (Uniform Resource Locator) para objetos U_Html. Logo, a partir de uma instância desta classe, se tem acesso a todos os outros objetos persistentes.

No mecanismo de serialização, usado pelo componente NoteBean, é necessário que as classes, cujos objetos são candidatos a serem persistentes, implementem a interface java.lang.Serializable. Esta interface é apenas uma marcação para a API Java. Os objetos são recuperados e armazenados via uso de métodos readObject e writeObject de classes para manipulação de arquivos. Não há suporte a transações e a recuperação de um objeto de um arquivo é feita pelo de sua classe. Este mecanismo menos sofisticado foi adotado no NoteBean principalmente para ampliar sua portabilidade, pois usuários interessados em instalar o ambiente CALM em outras redes não necessitariam adquirir o pacote PSE, que é proprietário.

Em função dessa atividade foram publicados os artigos Adriano et al. (1999b), Adriano et al. (2000b) e Adriano et al. (2000a).


next up previous contents
Next: Edição de conteúdos em Up: Situações teste sob a Previous: O sistema CALM   Sumário
Ivan Luiz Marques Ricarte 2001-03-16