DEL 3 • ARBEID, VELFERD OG MILJØ
2.7 Nasjonal fornyelse og europeisk samarbeid
Como já foi referido no capítulo anterior, associados aos modelos de grupos apare- ceram, nas últimas décadas, diversas plataformas de programação suportando abs- tracções para gerir a constituição dinâmica de grupos de processos, a consistência das visões observadas pelos membros de um grupo e diversas ordenações de mensagens, preservando a causalidade, atomicidade ou ordenação total.
O trabalho que se desenvolveu nesta dissertação enquadra-se numa direcção de investigação que procura explorar os conceitos dos grupos como paradigmas de or- ganização e cooperação, mas situando-se a um nível de abstracção superior. Diversas plataformas como o Isis, Horus, Ensemble ou mais mais recentemente o JavaGroups e o JGroups, entre outras, disponibilizam já funcionalidades suficientemente genéricas
1Esta consistência é garantida pela plataforma de suporte utilizada (JGroupspace) e é mantida pelo
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
a um nível intermédio (middleware). Estas plataformas assentam em implementações suficientemente robustas para poderem servir de base à realização da abstracções de grupo que sejam disponibilizadas, quer ao nível de linguagens de programação de alto nível (como o GroupLog [Bar04]), quer ao nível de modelos como o MAGO, que é apresentado nesta dissertação.
Nesta secção, discutem-se, numa perspectiva mais global, as duas principais di- mensões subjacentes a esta abordagem: (1) uma metodologia para a especificação de grupos; e (2) identificação e descoberta dinâmica de grupos.
1) Uma metodologia para a especificação de grupos
No sentido de definir um modelo genérico e abstracto, foram seguidos os princípios fundamentais:
• são consideradas duas categorias de entidades, as entidades elementares e as entidades compostas ou grupos, por forma a capturar, de forma separada, os aspectos da computação e os aspectos da cooperação, respectivamente;
• uma entidade elementar representa o aspecto computacional básico, tal como é encapsulado numa entidade autónoma de programação. Deve apresentar uma interface pública bem definida, que esconda o seu comportamento interno. Num modelo genérico, devem ser possíveis diferentes interpretações para uma enti- dade elementar, dependendo do seu enquadramento a nível do ambiente de pro- gramação. Por exemplo, como um processo, um objecto, um agente ou um ser- viço;
• o modelo computacional interno a uma entidade elementar deve ser "escon- dido" ao exterior, podendo admitir diferentes interpretações, desde um compor- tamento reactivo, em resposta à invocações dos pontos de entrada declarados na sua interface, até um comportamento pró-activo, suportado por fluxos de execu- ção autónomos;
• uma entidade elementar composta (grupo), deve igualmente disponibilizar uma interface bem definida, para a interacção com o exterior. Em princípio, do ponto de vista da organização global de um sistema, grupos e entidades elementares de- veriam ser, idealmente, semelhantes para um observador externo. A separação da definição da interface de um grupo da especificação do seu comportamento interno, obtido este à custa da cooperação entre os membros de um grupo, per- mitem realizar estratégias locais ao grupo, de forma transparente aos seus "utili- zadores";
• tanto as entidades elementares como os grupos devem admitir múltiplas instân- cias, criadas e destruídas dinamicamente, por forma a responder à natureza di- nâmica das aplicações interactivas, bem como dos ambientes de computação que
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
as suportam. No caso dos grupos, a sua constituição deve poder mudar tam- bém dinamicamente, à medida que novos membros entram e saem dos grupos. Deste modo, a agregação de entidades em grupos permite explorar formas de cooperação dinamicamente estabelecidas, entre os membros do grupo;
• um grupo encapsula um espaço de interacção confinado aos seus membros cor- rentes. A estruturação de uma aplicação em termos de múltiplos grupos permite, do ponto de vista da arquitectura de um sistema, explorar, por exemplo os bene- fícios das relações de proximidade entre os seus membros. Por outro lado, a flexibilidade de um modelo de grupos, do ponto de vista do desenvolvimento de aplicações, depende muito da expressividade dos modelos de comunicação que são suportados entre os seus membros. Na generalidade das plataformas de comunicação em grupo de nível intermédio, são suportadas formas de difusão de mensagens internamente ao grupo. No entanto do ponto de vista das aplica- ções, para além de suportarem a cooperação entre os seus membros, os grupos podem suportar contextos de partilha de informação a qual pode ser consulta- da/actualizada pelos seus membros. No sentido de suportar as diversas formas de interacção necessárias para o desenvolvimento de aplicações, a abordagem se- guida neste trabalho foi a de integrar, no contexto de um modelo de grupos, as seguintes formas de comunicação entre os seus membros: comunicação ponto- a-ponto, por difusão e por acesso a um espaço partilhado interno ao grupo. As formas de comunicação ponto-a-ponto e por difusão adoptam uma semântica de transmissão de mensagens, ou na sua variante de notificação assíncrona, associ- ada ao modelo de eventos publicação/subscrição. A forma de acesso a um espaço partilhado assume uma semântica de espaço de memória, admitindo operações de leitura e escrita, sendo interpretado como um repositório de informação par- tilhado e global aos membros do grupo, ao qual se podem associar por exemplo, propriedades de persistência, com garantias de acesso consistente, já que é base- ado no modelo Linda;
• para garantir que num modelo de grupos, os seus membros possam tomar deci- sões consistentes, o modelo de sincronia virtual [BJ87], garante que os eventos de modificação da constituição de um grupo e os eventos relativos à entrega de men- sagens aos membros do grupo, são apresentados a todos os membros, segundo uma ordem total. Uma vez que cada membro do grupo pode construir local- mente uma história da evolução dos estados do grupo através das mensagens que recebe, com informação sobre os eventos que ocorrem no grupo, este modelo de sincronia virtual, permite facilitar a programação de aplicações distribuídas baseadas em grupos. O conceito de sincronia virtual permite que os membros do grupo assumam que os eventos, como os acima mencionados, ainda que ocor- rendo de forma concorrente num sistema assíncrono, surjam como virtualmente
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
sincronizados. Por forma a realizar este conceito, a implementação deve garantir a sincronização entre a instalação de uma nova constituição do grupo e a entrega de mensagens difundidas para o grupo.
No modelo MAGO aqui proposto segue-se, como já foi referido, a abordagem do modelo GroupLog, no que se refere à integração no contexto de um grupo, de formas de comunicação por mensagens e acesso a um espaço partilhado de tuplos. Como consequência, o modelo garante a consistência das visões relativamente aos eventos de entradas e saídas, à difusão de mensagens e ao acesso a espaço partilhado.
2) Identificação e descoberta dinâmica de grupos
Neste trabalho, considerou-se uma segunda dimensão que, do ponto de vista con- ceptual, explora formas de identificação dos padrões de atributos de entidades num ambiente distribuído, com base na qual se gere de forma automática, a integração das entidades em grupos de interesses.
Em particular, nos cenários de aplicação considerados neste trabalho, tais grupos são definidos através de um registo inicial de uma lista dos seus atributos distintivos, os quais são utilizados por um mecanismo de descoberta, que detecta os potenciais membros e os filia automaticamente nos grupos de interesses de acordo com os seus perfis.
Este conceito, que se designou de grupos implícitos, acrescenta expressividade ao modelo MAGO, quando comparado com outros modelos de grupos, na medida em que lhe confere uma capacidade de adaptação dinâmica da configuração dos grupos que integram uma aplicação.