• Nenhum resultado encontrado

4.3 Entidades do modelo

4.3.1 Entidades elementares

As entidades elementares são as componentes do sistema que representam entidades computacionais activas, isto é com um comportamento definido por um programa pró- prio que determina as acções da entidade e as suas interacções com outras entidades. Assume-se que a definição do programa de cada entidade elementar que estabelece o seu comportamento e da interface que a entidade disponibiliza ao exterior, é efectuada no contexto do ambiente de desenvolvimento no qual o modelo MAGO se enquadra. Em particular, no caso deste trabalho, tais definições e instanciações das entidades ele- mentares são feitas no contexto de uma linguagem orientada a objectos (Java).

Cada entidade elementar pode ser caracterizada como um elemento activo, que possui os seguintes atributos (ver figura 4.3):

• Nome: um identificador único e global no sistema;

• Interface: um conjunto não vazio de métodos, oferecidos pelo modelo e ainda os definidos pelo programador, que permitem a comunicação (interacção) com as restantes entidades componentes do sistema;

• Atributos próprios: um conjunto de propriedades, características da entidade ele- mentar;

• Estado: o estado das computações desencadeadas pelo programa da entidade. Em particular, o estado da sua memória e da sua interacção com o meio (ou seja, outras entidades presentes no sistema).

UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS

Figura 4.3:Entidade elementar

São seguidamente apresentados, em maior detalhe, os atributos mencionados ante- riormente.

Nome Cada entidade presente no sistema possui um identificador, obrigatoriamente

único e global, gerido pela implementação do modelo, ao nível da arquitectura que o suporta.

Interface As entidades são independentes entre si e possuem comportamentos pró-

prios. Para a interacção com os restantes elementos do sistema, recorrem aos diferentes mecanismos de comunicação disponibilizados pelo modelo. A interface de comunica- ção comporta três mecanismos distintos, que podem ser utilizados e combinados de acordo com as diferentes necessidades das aplicações3:

• um mecanismo que permite a comunicação directa entre entidades; este meca- nismo pode tomar duas formas: a chamada explícita de um método da interface da entidade com a qual pretende estabelecer o contacto; ou a entrega de mensa- gens, que são posteriormente e explicitamente "tratadas" pela entidade receptora, através de um método definido pelo modelo;

• um mecanismo de comunicação baseado em eventos, disseminados no contexto de cada grupo, que permite à entidade subscrever um serviço de eventos e ser notificada, quando da ocorrência de um evento;

• um mecanismo que permite a partilha de informação entre os membros de um mesmo grupo, através do acesso a um espaço partilhado, interno ao grupo.

3Estes mecanismos são abordados em maior detalhe na secção 4.5, referente às forma de comunicação

UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS

Ao nível da transmissão, a entidade emissora pode desencadear uma interacção com outra entidade, através da primitiva de envio directo de mensagens (send()) ou através de um mecanismo de eventos (publish()/subscribe()). A primeira pressupõe uma comunicação directa com o interlocutor enquanto que o mecanismo de eventos permite a comunicação (difusão) para todos os membros de um grupo.

Os diversos mecanismos de comunicação existentes permitem às aplicações adop- tarem o tipo de interacção mais adequado às suas necessidades. Múltiplos mecanismos de comunicação podem ser combinados e coexistir ao nível de uma mesma aplicação

Atributos próprios Os atributos de uma entidade permitem definir as sua caracterís-

ticas próprias. Uma entidade, ao entrar no sistema, define e instancia os seus atributos próprios. Os atributos estão directamente relacionados com a aplicação, dependendo o seu tipo, formato e número, da aplicação que se pretende modelar. O conjunto de atributos de uma entidade é especificado quando da sua criação segundo uma lista de valores, tendo cada instância de cada atributo o seguinte formato:

< tipo, atributo, [valores] >

Cada campo possui o seguinte significado:

• tipo - categoria do atributo; cada aplicação pode definir um conjunto de catego- rias, que permitem atribuir uma maior expressividade aos atributos e efectuar uma gestão mais eficiente;

• atributo - nome do atributo, que o caracteriza de forma inequívoca; • [valores] - lista não vazia de valores que o atributo pode assumir. Exemplos de definição de atributos, para uma aplicação podem ser: • < PESSOAL, NACIONALIDADE, PORTU GU ESA >

• < PROF ISSIONAL, LINGUAS, [PORTU GU ES, INGLES] >

A definição e instanciação dos diferentes tipos de atributos e dos seus valores estão directamente relacionadas com as aplicações, sendo a sua definição, configuração e gestão, da responsabilidade destas.

Estado O estado computacional de uma entidade refere-se ao estado das computa-

ções determinadas pelo programa da entidade. Cada entidade prossegue um fluxo de execução que caracteriza a evolução da sua máquina de estados. A transição de esta- dos depende, não só do ponto de execução corrente, como também do estado das suas variáveis (locais e públicas) e do estado das suas comunicações4.

4No estado das comunicações, são consideradas não só as mensagens trocadas, mas também as men-

UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS

O comportamento interno de cada entidade pode resultar de um ou mais fluxos de execução:

• T0: o fluxo principal, que é activado quando da criação da entidade e é o respon- sável pela execução do programa principal da entidade; este termina quando o programa da entidade acabar a sua execução;

• Ti (com i: 1 ..n): pode ser criado um conjunto de fluxos de execução concorrentes que são activados de acordo com as interacções, sendo cada Ti activado quando um método a ele associado (Mi) for invocado, por exemplo, em resposta a um evento.

O estado computacional de cada fluxo de execução é definido como o conjunto de valores das suas variáveis locais, no seu ponto de execução actual5. Cada fluxo de execução passa por uma sucessão de estados lógicos (activo; em espera), conforme se distingue mais à frente (secção 4.4) onde é descrito o comportamento da entidade enquanto membro de um grupo.

Pode então definir-se o estado de computação de uma entidade pelo conjunto dos estados de computação dos seus fluxos de execução (T0, Ti, ...Tn) e pelos valores das suas variáveis globais. Nestas variáveis globais estão também incluídas as estruturas de filas de mensagens pendentes, que caracterizam o estado das interacções entre a entidade e o meio onde esta se encontra.