Implementação de uma Ferramenta de Edição de

Propaganda
Implementação de uma Ferramenta de Edição
de Texto Colaborativa
Paulo Roberto Gonçalves, Thereza Patrícia P. Padilha
Curso de Sistemas de Informação
Centro Universitário Luterano de Palmas (CEULP) Palmas, TO, Brasil
{prg,thereza}@ulbra-to.br
Abstract. In general, the collaborative environments provide a set of tools that
offer the communication among members. The purpose of these tools is to
allow the members have a better interaction in teach-learning process. This
paper presents the implementation of a collaborative text editor, using the
resources of the programming language Java.
Resumo. De modo geral, os ambientes colaborativos agregam um conjunto de
ferramentas que propiciam a comunicação entre os membros de um grupo. O
propósito dessas ferramentas é permitir que os membros possam ter uma
maior interação no processo de ensino-aprendizado, devido às características
contidas nessas ferramentas. Diante disso, este artigo apresenta a
implementação de uma ferramenta de edição colaborativa de texto, utilizando
os recursos da linguagem de programação Java.
1 Introdução
A partir do momento em que as novas tecnologias de comunicação começaram a fazer
parte da Educação a Distância (EaD), foram projetados modelos de ensino e de
aprendizado cada vez mais interativos. Com isso, o surgimento de ambientes
colaborativos para a EaD suportados pela Internet que oferecem recursos para a
construção do conhecimento de modos síncrona e assíncrona entre os membros (alunoaluno ou aluno-professor) independentemente de tempo e local tem sido bastante
aceitos na comunidade de Informática na Educação.
As ferramentas síncronas permitem membros de um grupo trabalharem ao
mesmo tempo. Já as ferramentas assíncronas não possibilitam essa comunicação ao
mesmo tempo. Chat, whiteboard, editor de texto colaborativo, votação, listas de
discussão, e-mail e videoconferência são as ferramentas mais comuns para suportar a
colaboração via computador.
Cada vez mais surgem pesquisas que destacam o aprendizado em grupo.
Portanto, é de vital importância para o advento da EaD desenvolver ferramentas de
comunicação textual que propiciem o aprendizado em grupo, preocupando-se com a
colaboração entre os membros, interface e segurança das informações compartilhadas.
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
Vale a pena ressaltar que a personalização/adequação dessas ferramentas num ambiente
colaborativo tem uma grande relevância para o sucesso do ensino-aprendizado.
Dentro desse contexto, o presente artigo visa apresentar a implementação de
uma ferramenta de edição de texto colaborativa, utilizando os recursos da linguagem
Java, para ser utilizada em ambientes colaborativos.
Este artigo está organizado da seguinte forma: na seção 2 é apresentada uma
visão geral sobre a edição colaborativa suportada por computador; na seção 3 são
descritos alguns aspectos básicos para o suporte do desenvolvimento de ferramentas de
edição colaborativa; na seção 4 são apresentadas a interface e a implementação da
ferramenta de edição de texto proposta; na seção 5 são apresentadas as considerações
finais do trabalho.
2 Edição Colaborativa Suportada por Computador
A facilidade de comunicação introduzida pelo avanço das áreas de telecomunicações e
redes de computadores tem viabilizado o surgimento de várias ferramentas de trabalho
cooperativo/colaborativo suportado por computador (Computer Supported Cooperative
Work – CSCW). CSCW é uma área de pesquisa que envolve estudos de computação e
tecnologias de comunicação para suportar atividades em grupo [Weiss 2001]. Quando
esse tipo de aplicação está inserido num contexto de aprendizagem, torna-se mais
conhecido como Aprendizado Cooperativo Suportado por Computador (Computer
Supported Cooperative Learning), na qual pessoas têm um espaço compartilhado para o
aprendizado [Macedo et al. 1999 ].
A estratégia das ferramentas de edição que suportam a colaboração via
computador é incentivar os participantes a trabalharem em grupo num documento
comum, respeitando as características individuais. Todos participantes interagem entre
si visando a formulação de um artigo ou relatório. A edição colaborativa pode ser
definida como um processo, no qual autores (editores, usuários ou revisores) com
diferentes habilidades e responsabilidades interagem durante a elaboração ou a revisão
de um documento. Muitas ferramentas já suportam a edição colaborativa para diferentes
tipos de mídia, como por exemplo, textos, gráficos e documentos estruturados.
3 Suporte de Desenvolvimento de Ferramentas de Edição Colaborativa
Na última década têm surgido muitas soluções técnicas para o suporte de ferramentas de
edição colaborativa, mas poucas estão, na realidade, em uso. Em geral, essas
ferramentas envolvem várias áreas da ciência da computação, tais como: redes de
computadores e comunicação, sistemas operacionais, multimídia e hipermídia. Alguns
aspectos considerados importantes para esse suporte são descritos a seguir:
3.1 Compartilhamento
O compartilhamento de tempo é um caso especial da multiprogramação em que vários
usuários compartilham um determinado computador (servidor) por terminais. O
servidor executa uma parte do trabalho de um usuário e então passa a servir o próximo
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
usuário. O servidor faz isso, tão rapidamente, que pode fornecer um serviço para cada
usuário várias vezes por segundo, de modo tão transparente, que parecem que os
programas dos usuários estejam executando simultaneamente. Por isso, o
compartilhamento de tempo possui a vantagem que o usuário recebe respostas quase
imediatas às suas solicitações em vez de esperar um longo tempo por resultados [Deitel
e Deitel 2001].
A incorporação das funcionalidades de controle de acesso e versão numa
ferramenta de edição colaborativa agregará segurança aos documentos compartilhados,
pois, neste tipo de aplicação, tem-se uma certa probabilidade de conflitos gerados pelo
fato dos usuários realizarem operações simultâneas em documentos compartilhados. Na
edição colaborativa, evitar que os usuários trabalhem com versões de textos
ultrapassadas é fundamental. Para isto, é necessário implantar o:
•
Controle de Concorrência – quando vários usuários estão conectados ao
servidor, os mesmos estão concorrendo entre si para as realizações das suas
ações. As políticas de controle de concorrência definem uma área exclusiva para
a interação do texto sem a interferência de outro usuário, podendo ser seções,
parágrafos ou letras. Portanto, quanto menor o nível de granularidade definido,
maior controle será necessário.
•
Controle de Versão – O controle de versões em editores colaborativos é um
aspecto fundamental para evitar conflitos e inconsistências entre as versões de
textos elaboradas pelo grupo. Em geral, o controle de versões implementado nos
editores gerencia as diferentes cópias do mesmo objeto (texto). Por exemplo,
usuários desejam conhecer quem foi o último membro que alterou o documento
e em que parte do documento foi realizada a alteração. Uma breve descrição e
comparação de sistemas de controle de versão existentes, tais como: RCS
(Revision Control System), MICROCOSM, COOP, PREP e Timewarp, e
questões sobre conflitos, tipos de acesso, gerenciamento de versões e tipos de
arquitetura de editores colaborativos podem ser encontrados em [Lee et al. 1998
]. Uma alternativa viável e bastante utilizada é a criação de um histórico de
alterações, indicando o local das alterações, nome do usuário, data e horário.
3.2 Visualização
Uma das formas de visualização do espaço compartilhado é o estilo What You See is
What I See (WYSWIS). O WYSWIS strict é rigoroso e mais problemático para um
número de membros muito grande, porque qualquer ação de um membro é influenciada
para todos os outros membros. E, nem sempre, todos os membros desejam trabalhar
deste modo. Um exemplo de WYSWIS strict é o NetMeeting da Microsoft. O WYSWIS
relaxed é um estilo mais aceitável pelos membros, pois a sua visualização é individual,
ou seja, cada membro trabalha do seu modo sem perturbar os outros. Um exemplo de
WYSWIS relaxed é o ambiente de aprendizado TeamWave Workplace
(www.teamwave.com).
3.3 Percepção (Awareness)
A maioria das ferramentas síncronas fornece a percepção de usuários através de
um beep ou cor de fonte diferente. Já nas ferramentas assíncronas, a percepção é obtida
após algum tempo, pois os usuários podem fazer a sua contribuição e, posteriormente,
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
enviar para os demais usuários. Um histórico das ações dos usuários nos objetos
compartilhados evita trabalhos redundantes, e também possibilita, verificar a
participação dos usuários. Geralmente, um histórico possui informações de data, hora e
usuário que realizou a última alteração num documento.
3.4 Arquitetura
A arquitetura distribuída é caracterizada pelo armazenamento dos documentos em
diversos hosts. Tipicamente, o servidor armazena o modelo do documento e os clientes
possuem uma cópia (do documento) e o controlador de versão, que verifica as
atualizações existentes. Desta forma, apenas os eventos dos modelos, situados no
servidor, são atualizados nos hosts clientes. Uma vantagem desta arquitetura é que os
clientes podem trabalhar independente do funcionamento da rede.
A arquitetura centralizada mantém apenas uma aplicação e envia mensagens do
evento a todos os clientes. Quando um arquivo é atualizado, todas as alterações são
enviadas para o servidor, que por sua vez, enviará para os demais usuários, caso estejam
conectados. Assim, o servidor mantém arquivos compartilhados de forma consistente.
Um problema encontrado nessa arquitetura é que se o servidor não estiver funcionando,
todos os usuários não podem trabalhar. Pode-se verificar que a arquitetura distribuída
possui uma implementação mais fácil que a centralizada.
4 Editor de Texto Colaborativo Proposto
Uma ferramenta de edição deve reunir um conjunto de elementos básicos, de forma a
facilitar o desenvolvimento de textos entre autores colaboradores. Por isso a ferramenta
de edição colaborativa proposta disponibiliza os principais recursos que compõem um
editor de texto tradicional (salvar arquivo, abrir arquivo, negrito, itálico, etc).
O editor proposto suporta a comunicação em grupo, ou seja, existem vários
grupos, sendo que cada grupo trabalha com um documento diferente. A linguagem de
programação escolhida para a implementação foi Java devido, principalmente, o suporte
da execução em várias plataformas, a disponibilidade de recursos avançados de
computação distribuída e por possuir recursos que permitem aplicativos multithreaded,
isto é, aplicativos que podem especificar que múltiplas atividades deverão ocorrer em
paralelo [Deitel e Deitel 2001].
Na figura 1 pode ser visualizada a interface do editor de texto colaborativo
proposto.
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
Figura 1. Interface do editor de texto colaborativo
4.1 Aspectos de Implementação
Na literatura, existem vários tipos de políticas de controle de acesso, que variam de
acordo com a granularidade, que são: blocos de texto, parágrafos ou palavras. Quanto
menor o nível de granularidade definida no editor maior controle será necessário sobre
o texto e, conseqüentemente consumo da largura de banda. Essas políticas de controle,
conhecidas também como regras de comportamento, são difíceis de serem
implementadas remotamente porque é necessário um gerenciamento das informações
que estão sendo enviadas/recebidas simultaneamente pelos membros [Padilha 2003]. A
política de controle de acesso a ser implementada neste editor foi definida por blocos de
textos, assim um membro poderá fazer as suas alterações num certo bloco, não
disponibilizando para os demais membros até que o finalize. Pode-se verificar a
interface com os blocos de texto na figura 1.
Para a inserção de blocos de texto há uma opção no menu na qual o membro cria
o bloco. Quando um bloco é inserido, ao lado do mesmo há uma estrutura dos blocos
contendo o nome de cada bloco criado. Ao inserir um bloco de texto o membro estará
apto a utilizá-lo, os outros blocos estarão bloqueados caso os outros membros estiverem
editando. Assim, um bloco só estará liberado quando um membro finalizar. Para
verificar se um bloco está sendo editado ou está liberado, o membro precisa selecionar o
nome do bloco na estrutura de blocos, retornando assim uma mensagem quando estiver
sendo utilizado ou selecionando a área de texto do bloco deixando editá-la quando não
estiver sendo utilizada. Por isso a estrutura de blocos localizada à esquerda é
apresentada para uma melhor organização dos blocos que estarão sendo utilizados e
para que um usuário possa escolher um outro bloco para visualizá-lo ou mesmo editá-lo,
caso esteja livre.
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
Para a implementação dos blocos de texto foi definido que cada bloco seria uma
área de texto a qual é destinada a apenas um usuário. Para a criação dessas áreas de
texto utilizou-se da classe da API Java JTextPane, pois suporta todas as formatações
requeridas para os textos. Cada JTextPane pode ter ou não um usuário responsável por
ele, sendo assim quando um usuário cria um bloco de texto, uma mensagem é enviada
ao servidor, sendo ela um vetor unidimensional, da classe vector da API Java, contendo
duas posições, um boolean indicando false e uma string contendo o nome do
JTextPane. Depois o servidor repassa essa mensagem aos demais membros, onde será
invocado o método setEnabled false para o respectivo JTextPane. Quando o usuário de
alguma forma libera uma área de texto, o procedimento de liberação do JTextPane é
feita da mesma forma que foi descrito anteriormente mudando apenas o valor booleano
para true. Quando uma área de texto é inserida, simultaneamente um nó é criado na
estrutura de blocos com o nome definido pelo usuário. A estrutura de blocos é
representada em forma de uma árvore, utilizando-se da classe JTree da API Java.
Para o funcionamento do editor o usuário deve informar o seu login e senha.
Quando um usuário se conecta ele pertence a um certo grupo. Na
Figura
2
é
apresentada a arquitetura genérica do editor colaborativo, destacando como é realizada a
comunicação entre os membros do grupo e o servidor. Como pode ser observada, essa
arquitetura suporta a comunicação em grupo, ou seja, quando um cliente solicita a
conexão, envia o login e o nome do grupo, o servidor guarda suas informações e
disponibiliza ao demais membros do grupo. É importante ressaltar que um cliente pode
ser membro de apenas um grupo.
Figura 2. Arquitetura genérica do editor de texto colaborativo
Para a implementação desses grupos foi estabelecido um vetor unidimensional,
da classe vector do Java, para armazenar as informações dos clientes no servidor. O
servidor possui um vetor S que, em cada posição, armazena um outro vetor C. Cada
vetor C possui as informações de um cliente conectado, que são: o login, o grupo, o
documento que esse cliente está editando e o fluxo do aplicativo (que verifica se o
usuário fechou o aplicativo ou quer enviar uma mensagem aos membros do grupo).
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
O compartilhamento do documento é feito de forma transparente para os
clientes. Cada cliente possui uma cópia do documento podendo realizar alterações nesse
arquivo, o qual é repassado para o servidor que, em seguida, repassará novamente para
os clientes conectados.
Quando um cliente se conecta ao servidor, é repassado apenas uma cópia do
documento original. Em termos de implementação, cada cliente conectado ao servidor
se tornará um thread, que são processos executando concorrentemente (controle de
concorrência). Deste modo, o arquivo original (documento) fica armazenado no
servidor, mais precisamente, em um repositório.
O servidor possui um repositório que armazenará os documentos
compartilhados, sendo possível verificar a última versão de cada documento editado do
grupo (controle de versões). Para cada documento salvo é criado um arquivo .log
contendo no nome do mesmo, o nome do respectivo do documento salvo, a data e a hora
em que foi salvo. O arquivo .log conterá as alterações mais recentes feitas no arquivo
texto, com o nome de quem fez a alteração e a data e hora da modificação. Os arquivos
são salvos em um repositório visando evitar a redundância. Senão cada usuário poderia
salvar sua versão, podendo alterá-la e não disponibilizá-la aos demais integrantes do
grupo, contrariando os conceitos de edição colaborativa.
5 Considerações Finais
O editor de texto proposto possui várias funcionalidades de um editor comum,
diferenciando-se pelo fato de suportar a edição colaborativa de vários grupos
simultaneamente. Possibilita a sua execução em várias plataformas e os modos de
interação assíncrona e síncrona, na qual é muito importante para motivar os membros,
tornando assim uma comunicação mais próxima do ensino presencial.
Uma das dificuldades encontradas foi com relação ao modo de envio do texto
para o servidor com algumas restrições estabelecidas. Pois se têm várias áreas de texto
que precisam ser atualizadas quase que simultaneamente, para que um membro possa
ver o que cada um do grupo está fazendo.
Pode-se concluir a eficiência da linguagem Java para aplicações voltadas à
confecção de ferramentas colaborativas, por fornecer recursos que permitam a
implementação de técnicas de colaboração. Outro aspecto positivo de uma aplicação
construída em Java é o fato da mesma ser orientada a objetos, que proporciona
benefícios como: a extensibilidade, reusabilidade, manutenção, entre outros.
Além disso, pode-se verificar o poder da linguagem Java para os recursos de
sockets (cliente/servidor), construção de múltiplas linhas de execução – concorrência
(threads) e acesso à banco de dados [Horstman e Cornell 2001], devido já existirem
várias classes e construtores implementados, o que acelera e facilita a implementação.
Além do alto grau de recursos oferecidos, a linguagem de programação Java é
multiplataforma, permitindo que um mesmo programa possa ser utilizado em máquinas
com sistemas operacionais diferentes, garantindo a portabilidade de qualquer aplicação
implementada nessa linguagem. Além disso, o Java disponibiliza primitivas de
concorrência. Estas foram relevâncias que nos levaram a escolher a linguagem Java.
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
Acredita-se que com as funcionalidades de controle de acesso e de versão numa
ferramenta de edição de texto colaborativa agregará mais segurança aos documentos
compartilhados, principalmente porque existe uma grande probabilidade de conflitos.
Referências Bibliográficas
Deitel, H. M. e Deitel, P. J. (2001) “Java como programar”, Tradução: Edson
Furnankiewicz, Porto Alegre: Bookman.
Horstman C. S. e Cornell, G. (2001) “CoreJava 2 – Recursos Avançados”. Tradução:
João Eduardo N. Tortello Revisão Técnica: Álvaro R. Antunes. São Paulo:
MAKRON Books, Vol. II.
Lee, B. G. e Chang, K. H. e Narayanan, N. H. (1998) “An integrated approach to
version control management in computer supported collaborative writing”, In:
Proceedings of the 36th Annual ACM Southeast Conference.
Macedo, A. A. e Pimentel, M. G. C. e Fontes, R. P. M. (1999) “Studyconf: infraestrutura de Suporte ao Aprendizado Cooperativo na WWW”, In: Revista Brasileira
de Informática na Educação.
Weiss, G. (2001) “Multiagent systems: a modern approach to distributed artificial
intelligence”, MIT Press.
Padilha, T. P. P. (2003) “Um ambiente de aprendizado colaborativo para resolução de
problemas”. Exame de Qualificação de Doutorado, Universidade Federal de Santa
Catarina.
Anais do V Encontro de Estudantes de Informática do Tocantins. Palmas, TO. outubro, 2003. pp. 353-360
Download