Disciplina: Sistemas Distribuídos CoWS: Uma Abordagem de Escrita Colaborativa Multi-Síncrona usando Espaços de Tuplas para Ambientes Móveis Berthonio Lucena ([email protected]) Flávio Rocha ([email protected]) Vaninha Vieira ([email protected]) Recife – PE – Brasil Fevereiro - 2005 Introdução Introdução Avanços tecnológicos proporcionam ferramentas que modificam o modo como as pessoas trabalham em equipe ou colaborativamente. Intensas pesquisas em CSCW (Computer Supported Cooperative Work) O processo mais estudado de autoria colaborativa é o de produção de textos. Escrever em equipe ou colaborativamente nunca é fácil ! Aréa de pesquisa chamada Escrita Colaborativa Mediada por Computador (Computer Supported Collaborative Writing) Muitas teorias e ferramentas de escrita colaborativa foram criadas para auxiliar a escrita colaborativa. Introdução Problema: O desenvolvimento de ferramentas colaborativas voltadas para ambientes distribuídos e/ou móveis é bastante complexo! Sistemas Distribuídos apresentam forte acoplamento Sistemas móveis apresentam mudanças constantes na disponibilidade de recursos (dados e elementos computacionais). Uma Possível Solução: Pode-se usar ferramentas (middlewares) baseadas em Espaços de Tuplas ! Processos distintos usam o espaço como meio de comunicação, coordenação e sincronização. Introdução Espaço de tuplas compartilhado possibilita desenvolvimento de serviços necessários à escrita colaborativa Coordenação das tarefas, percepção , Suporte à comunicação, Memória do Grupo Programador concentra-se na aplicação em vez dos detalhes de comunicação do ambiente (Diminui a complexidade) Baixo acoplamento (Desacoplamento Espacial e Temporal) e modelo de programação simples (escrita e leitura). Linda foi o primeiro espaço de tuplas implementado e foi baseado no modelo de espaço de tuplas original. Problema: Linda não foi projetado para suportar ambientes móveis e sim ambientes distribuídos ! Introdução Solução: Adaptar Linda para ambientes móveis! Surgiu o Lime (Linda in a Mobile Environment) Lime é um middleware projetado para possibilitar o desenvolvimento rápido de aplicações para ambientes móveis. Em ambiente móveis, mudanças na conectividade são normais. O engajamento ou desengajamento pode ser realizado de duas formas: sinalização ou distância segura. O Lime possibitou o desenvolvimento do CoWS (Collaborative Writing through Shared Spaces), ferramenta de edição de texto colaborativa. Introdução Modelo de Coordenação do Lime Engloba mobilidade física (hosts) e mobilidade lógica (agentes). Coordenação através de um espaço de tuplas transiente • A mobilidade impede a existência de um espaço de tuplas persistente e global Host Móvel Agentes Móveis Migra Espaço de Tuplas do Host Espaço de Tuplas do Agente Espaço de Tuplas Federado CoWS CoWS CoWS é um editor de texto colaborativo multi-síncrono voltado para ambientes móveis. Possibilita trabalho simultâneo/online (síncrono) ou desconectado/offline (assíncrono). Características Gerais: O CoWS foi implementado em Java. O documento compartilhado em CoWS é um texto composto por parágrafos (granularidade escolhida). Cada parágrafo é representado e armazenado como uma tupla em um espaço de tuplas compartilhado temporariamente. CoWS Arquitetura totalmente descentralizada. O texto global está armazenado em diversos hosts e agentes. Cada agente detém seu espaço de tuplas local, onde suas tuplas são armazenadas. Todos os parágrafos (tuplas) do espaço de tuplas federado são exibidos. Perspectiva fracamente consistente com o estado global do texto. Percepção (Reação). Lime estende o espaço de tuplas de Linda com a noção de reação. Em ambientes móveis reagir a mudanças é fundamental. Reação é a execução de um método quando uma tupla correspondente a um template é encontrada no espaço. CoWS Controle de Concorrência: Quando um parágrafo é criado ele é inserido no espaço de tuplas local do agente que o criou. • Agente passa a ser o dono do parágrafo e detém o controle do mesmo. • Quando é feita uma conexão ao espaço de tuplas federado os espaços de tuplas dos demais agentes passam a enxergar esse parágrafo, sem no entanto, poder modificá-lo. • Caso um outro usuário deseje modificar ou remover o parágrafo bloqueado, ele deverá primeiro selecionar o parágrafo. CoWS Consistência. A obtenção de um texto final e global produzido de forma assíncrona por diferentes atores não é fácil (garantia de consistência)? Propagação de alterações realizadas no texto quando a conexão é restabelecida. Manutenção da mesma estrutura do texto nos diversos espaços de trabalho de todos os autores após a reconexão. Solução: Elaboração de um algoritmo de ordenação das tuplas baseado em uma estrutura de dados que denominamos lista não encadeada ! Cada elemento da lista tem a posição do elemento anterior e do próximo. O elementos anterior e próximo não necessariamente são os vizinhos imediatos do elemento na lista. Demonstração Conclusões Conclusões Desenvolvimento de Ferramentas de edição de texto colaborativa não é trivial. Middleware baseado no modelo de Espaço de Tuplas pode ser utilizado para reduzir a complexidade de desenvolvimento dessas ferramentas. O modelo de coordenação do Linda é interessante mas não suporta ambientes móveis. Lime adaptou o Linda para ambientes móveis. Desenvolvimento do CoWS como forma de provar que o modelo de coordenação do Lime é ideal para o desenvolvimento de Ferramentas de Edição de Texto Colaborativas que suportem ambientes móveis. CoWS (http://www.cin.ufpe.br/~vvs/cows) Equipe de Desenvolvimento: Berthonio Lucena ([email protected]) Flávio Rocha ([email protected]) Vaninha Vieira ([email protected])