DEL 3 • ARBEID, VELFERD OG MILJØ
9.6 Norges alternativer
Numa definição mais genérica, um grupo pode ser visto como "um conjunto de enti- dades que é considerado como uma unidade" [Bar04].
Para a organização da aplicação, deve ser dada resposta a três importantes ques- tões:
1. como é formado um grupo, ou seja como se constitui/surge;
2. como funciona a entidade grupo, ou seja qual o seu comportamento enquanto entidade (comunicação com o exterior);
3. como se definem as interacções dentro do grupo (comunicação interna).
Assim, enquanto elemento computacional do modelo, um grupo deve dar resposta a essas questões, devendo especificar:
1. mecanismos que permitem a sua criação e a entrada/saída de membros;
2. mecanismos para gerir o estado do grupo, enquanto entidade dependente do estado dos seus membros;
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
3. mecanismos que permitem a comunicação entre os membros do grupo;
4. Interface de comunicação através da qual o grupo é visto pelo exterior e que permite a interacção entre o grupo e o meio onde este se encontra.
A primeira e a última características especificam a forma como o grupo é visto pelo exterior enquanto entidade, enquanto as restantes definem a forma como este é gerido internamente.
Ao agregarem-se em grupos, as entidades elementares passam a ter acesso às fun- cionalidades particulares dessa organização, passando a ter acesso a um conjunto de mecanismos que permitem a interacção com os restantes membros do grupo. Uma entidade, ao aderir a um grupo, não perde a sua individualidade, ou seja continua a ser vista como um elemento autónomo, que passa a ter acesso às funcionalidades pró- prias do(s) grupo(s) a que pertence. No entanto, enquanto membro de um grupo, deve utilizar os mecanismos de interacção deste, devendo especificar qual o grupo a que se refere, dado que cada entidade pode ser membro de vários grupos.
Tendo por base a definição de entidades elementares e as especificações referidas, um grupo é caracterizado pelos seguintes atributos:
• Nome: identificador único e global, que permite reconhecer o grupo de forma inequívoca;
• Interface: conjunto de métodos definidos que permitem a interacção entre o grupo e o meio;
• Atributos Próprios: conjunto de propriedades, características do grupo;
• Estado: o estado depende das computações desencadeadas pelos membros do grupo, do estado partilhado interno ao grupo, da sua interacção com o meio e ainda do estado dos seus membros;
• Conjunto de Membros: conjunto de entidades que formam o grupo e que se agre- gam como uma entidade composta.
Nome Cada grupo possui um identificador único e global gerido pela implementa-
ção do modelo (tal como as entidades elementares) e também se pode definir um nome simbólico que melhor caracterize e defina o grupo enquanto elemento da aplicação.
Interface O grupo, como entidade do sistema, possui um conjunto de métodos de
interface que lhe permite interagir com as restantes entidades e que são associados ao grupo aquando da sua criação. Estes métodos possuem diferentes políticas de aten- dimento de pedidos e de divulgação para o grupo, que podem ser configurados e/ou redefinidos pelo programador da aplicação. Os mecanismos de comunicação dispo- níveis são idênticos aos definidos para as entidades elementares, isto do ponto vista
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
do interlocutor externo, que comunica com o grupo ou com entidades elementares do mesmo modo6. No grupo, a gestão das comunicações e de configurações é tratada por uma entidade denominada "Representante do grupo", que tem a seu cargo toda a ges- tão e tratamento das comunicações entre o grupo e o meio e também dentro do próprio grupo, assim como a gestão dos seus membros.
Atributos Próprios Os atributos de um grupo permitem definir as características e
propriedades do grupo. A definição dos atributos de um grupo é idêntica à dada para as entidades elementares e também dependente da aplicação que se pretende modelar. O formato dos atributos de um grupo pode ser configurado de acordo com a aplicação.
Estado O estado de um grupo é definido pela sua constituição interna (ou seja pelos
membros que dele fazem parte em cada estado global da computação), pelo estado das suas estruturas de comunicação e pelo estado partilhado do grupo. O estado par- tilhado do grupo é suportado por uma estrutura de dados global do grupo (baseada no conceito de espaço de tuplos), sendo esta estrutura acessível a todos os membros do grupo.
Conjunto de membros Conjunto de entidades que pertencem ao grupo, ou seja
que constituem o grupo. Ao juntar-se a um grupo, uma entidade mantém a sua individualidade e visibilidade, podendo interagir com outros elementos do sistema externos ao grupos e tendo a possibilidade de participar em múltiplos grupos. O facto de uma entidade manter a sua visibilidade, distingue-se do modelo GroupLog no qual uma entidade ao juntar-se a um grupo deixa de ser visível a partir do exterior e só pode ser acedida, de forma indirecta, através da interface do grupo.
Deve salientar-se que, no modelo, certas características do grupo, tais como: Atri-
butos, Estado e Conjunto de Membros podem variar dinamicamente em tempo de
execução, o mesmo não se passando com o Nome e Interface, que se mantêm inaltera- dos após a criação do grupo.
Representante de Grupo
Como já foi referido, os grupos possuem, tal como as entidades elementares, uma in- terface através da qual interagem com o exterior. A "gestão" dessa interacção é da responsabilidade da entidade "representante de grupo", sendo esta uma entidade que surge devido às necessidades operacionais do modelo, visto que existe a necessidade
6Do ponto de vista do exterior, a forma de comunicação com um grupo ou uma entidade elemen-
tar é semelhante, sendo da responsabilidade do grupo (internamente) o tratamento da divulgação de informação pelos seus membros.
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
de definir uma entidade que se responsabiliza por gerir o estado e o comportamento do grupo.
A criação de um novo grupo envolve a "criação" implícita de um representante desse grupo, que passa a "interpretar" o comportamento do grupo. O representante surge como o elemento de ligação entre o exterior e o grupo, centralizando parte das funcionalidades de comunicações e actuando também como elemento gestor de confi- gurações e políticas específicas do grupo.
Figura 4.4: Elementos que constituem um grupo
Ao efectuar uma chamada ao grupo, é esta a entidade que é invocada, ou seja um grupo está intimamente ligado ao seu representante, sendo este que permite a comu- nicação com o grupo como se este se tratasse de uma entidade elementar. Torna-se assim possível, por exemplo, encapsular todo o processamento necessário à difusão das mensagens para os membros do grupo, assim como gerir os mecanismos inter- nos de comunicação. Esta entidade é também responsável pela gestão da admissão de novos membros e pela manutenção da lista de membros filiados.
Em resumo, o representante do grupo é responsável pela gestão dos seguintes as- pectos:
• a recepção de mensagens dirigidas ao grupo e a sua difusão pelos seus mem- bros, de acordo com políticas configuradas, quando da criação, para o grupo e conforme a semântica do mecanismo invocado;
• a política de admissão de novos membros (estabelecida quando da criação do grupo) e a promoção dos mecanismos de votação, quando necessário.
Esta entidade é criada automaticamente quando da criação do grupo, que repre- senta e de acordo com as propriedades e características especificadas para este.
O representante de grupo não é uma entidade visível ao nível do programa da apli- cação. As suas características determinam os possíveis comportamentos do grupo, na
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
sua interacção com o exterior, e são implicitamente definidas através dos argumentos passados na invocação da primitiva de criação de um grupo.
Grupos explícitos e implícitos
Em contraste com o modelo GroupLog e com a generalidade de outros modelos an- teriores, existem dois tipos básicos de grupos no modelo MAGO: grupos explícitos e grupos implícitos.
Nos grupos explícitos, tanto a sua criação como a entrada/saída de novos membros exigem a invocação explícita, por parte dos candidatos a membros, de primitivas do modelo, sendo a sua filiação validada de acordo com a política de admissão especifi- cada quando da criação do grupo.
Nos grupos implícitos, a sua constituição depende da satisfação de um conjunto de características que devem ser observadas pelos membros registados no sistema. Na de- finição de um grupo implícito, é inicialmente explicitado o conjunto de características que todos os seus potenciais membros devem possuir. O processo de filiação é depois desencadeado automaticamente e de forma dinâmica pela implementação, para todos os membros que verifiquem o conjunto de características especificado para esse grupo. Nos grupos implícitos, distinguem-se duas fases no processo de criação:
a) definição do conjunto de características que os seus potenciais membros devem
possuir; esta constitui a fase de configuração do grupo implícito, ou seja, a defi- nição do seu conjunto de propriedades;
b) momento de filiação dos membros, que pode ser desencadeado em diferentes situ-
ações, tais como:
• quando se define e configura um novo grupo, sendo inspeccionadas, de en- tre as entidades correntemente presentes, quais as que satisfazem as carac- terísticas do grupo;
• quando uma nova entidade se regista no sistema e a sua compatibilidade com as características dos grupos implícitos definidos é verificada;
• quando se efectua uma alteração dos atributos próprios de uma entidade. Na última situação referida, o facto de alterar os atributos próprios de uma entidade pode desencadear, não só o processo automático de filiação, como o da sua saída de grupos, dado que as condições que validavam a sua filiação nos grupos implícito podem ter sido modificadas.
Como já foi referido, os grupos implícitos possuem características que os distin- guem dos grupos explícitos, em particular a forma como é desencadeado o seu pro- cesso de criação e a gestão de filiação. Contrariamente aos grupos explícitos, definidos
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
de forma explicitamente programada pelos seus membros, os grupos implícitos são gerados consoante as configurações projectadas para cada aplicação, sem intervenção directa por parte do programa da entidade (utilizador). A filiação num grupo implí- cito emerge naturalmente das características individuais do utilizador, que o levam a ser inserido num grupo de entidades com quem eventualmente não tem qualquer tipo prévio de contacto ou que nem mesmo conhece. Utilizações possíveis para os serviços de grupos implícitos podem situar-se por exemplo numa perspectiva de difusão de um possuidor de informação para potenciais interessados, ou seja para um conjunto de elementos que, dado o seu conjunto de atributos próprios, podem ser elegidos como membros de um dado grupo.
A necessidade de existência de um sistema de informação associado à gestão de grupos implícitos, surge pelo facto destes estarem directamente relacionados com os dados próprios de cada entidade, dados estes que são dependentes do tipo de caracte- rísticas definidos pelas aplicações. O processo de filiação está intimamente relacionado com a consulta dos atributos próprios7das entidades.
Os grupos implícitos são criados ao nível da "administração" do sistema como uma entidade composta (grupo), o que lhes permite comunicar com um conjunto de utili- zadores e partilhar com eles informação em distintos suportes audiovisuais, texto ou interagir através de mensagens (tal como para os grupos explícitos).
Um grupo implícito tem um "dono" que, por exemplo, no contexto real de um cam- pusou de um aeroporto, pode ser uma qualquer entidade comercial ou institucional que pretende comunicar directamente com um determinado "tipo" de utilizadores do sistema. O acto de criação de um grupo implícito é explicitamente desencadeado pelo seu "dono", que gera automaticamente um grupo (com as respectivas filiações) das en- tidades elementares que evoluem no sistema e possuem um determinado conjunto de características que as definem enquanto grupo, não existindo controlo directo na sua filiação, por parte dos membros.
O processo de filiação é desencadeado automaticamente pelas entidades que satis- fazem as condições para admissão, especificadas quando da criação do grupo (pelo seu "dono"), sendo posteriormente notificados da sua inserção no grupo. Se uma entidade não pode interferir directamente/explicitamente nos critérios que levaram à sua even- tual inclusão num grupo implícito, pode no entanto expressar a sua indisponibilidade para participar nesse grupo, modificando o seu estado enquanto membro do grupo8.
As principais diferenças, ao nível das funcionalidades, entre os dois tipos de gru- pos, situam-se no processo de criação e de filiação. Não existe, no caso dos grupos implícitos, uma acção de filiação explícita, sendo a junção de membros ao grupo efectu- ada durante o acto de criação do grupo. Novas entidades, que surjam posteriormente à criação do grupo e que verifiquem as condições, são também automaticamente filiadas.
7Estes atributos próprios são dependentes das necessidades e objectivos das aplicações.
UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS
As condições definidas para os grupos implícitos estabelecem um conjunto de re- gras para o grupo9, o qual deve ser satisfeito por todos os membros admitidos no grupo.
Como se percebe, pela sua própria definição, a gestão de grupos implícitos é em grande parte uma tarefa em que existe uma forte interacção da aplicação com o sis- tema de informação de suporte, utilizando os dados armazenados sobre as diferentes entidades, para criar de uma forma dinâmica tais grupos.
O conceito de grupo implícito contribui para aumentar o carácter declarativo do modelo MAGO, na medida em que permite desenvolver aplicações interactivas distri- buídas sem exigir ao programador que explicitamente invoque as acções de entrada/- saída de grupos por parte das entidades. O conceito apenas exige que o programador caracterize qual o perfil (conjunto de atributos próprios) que as entidades devem pos- suir para pertencer ao grupo, sendo delegada no sistema subjacente a responsabilidade dessas acções. A realização do conceito pode ser vista como associada a um mecanismo de detecção de eventos relevantes que desencadeia a procura de correspondências en- tre os perfis das entidades e dos grupos e as acções subsequentes. Deste modo, pode ser capturada a natureza dinâmica e não determinística das aplicações.