Ayfer Özdemir
TARTIŞMA VE SONUÇLAR
Para finalizar este Capítulo que trata de simulação distribuída, especialmente o padrão HLA, é interessante apresentar algumas funções da interface do HLA, ou seja, os serviços que o RTI oferece para os federados e vice-versa. Os serviços do HLA estão divididos em seis grupos que são definidos por similaridade de interesses [76].
O objetivo do projeto dos serviços do HLA é fazer com que o desenvolvedor dos federados não necessite utilizar os serviços de todos os grupos, ou seja, ele pode escolher de acordo com a sua necessidade. Os serviços em um grupo podem ser usados sem referência alguma a outro serviço, no caso: gerenciamento de tempo, de propriedade, e distribuição de dados. Os únicos serviços que sempre são requeridos para a transferência dos dados são: gerenciamento de declaração, de objetos e da federação.
4.4.6.1. Gerenciamento da Federação
O serviço de gerenciamento da federação gerencia a federação de duas formas: Através da definição da federação a ser executada em termos da existência de
membros e de como fazer parte de uma federação.
Através do fornecimento de várias operações relacionada a federação.
Para definir uma federação, existem alguns serviços para iniciar a execução da mesma e para permitir que um federado se junte a uma federação em execução ou mesmo saia dela. Todos os federados devem se juntar a uma federação em execução, logo nenhum federado pode ignorar completamente esse grupo de serviço.
As operações de uma federação incluem a coordenação do salvamento da federação (checkpoints) e possibilidade de realizar restores. Existem também serviços que permitem que a federação defina e encontre o ponto de sincronização da federação. 4.4.6.2. Gerenciamento de declaração
O HLA é caracterizado pelo estilo invocação implícita de transferência de dados. Os federados não enviam dados diretamente para outros federados, eles o deixam disponíveis para a federação, e o RTI assegura que tais dados serão entregues somente para as partes interessadas. Esse serviço é a forma como os federados declaram o seu interesse por produzir (publish) e por consumir (subscribe to) dados. O RTI também utiliza tais declarações para roteamento de dados, transformação de dados e gerenciamento de interesses.
A respeito do roteamento, o RTI utiliza a assinatura para decidir qual federado deve ser informado sobre criação ou atualização das entidades.
Declarações são utilizadas para transformar os dados recebidos pelos federados. Os dados recebidos sofrem uma seleção e avaliação de acordo com a assinatura dos federados antes de serem entregues. Isso é um dos vários mecanismos para proteger os federados de extensões no FOM e encorajar o reuso dos federados.
Finalmente, o RTI utiliza declarações para indicar interesse para publicar os federados. O RTI pode dizer ao federado se algum outro federado assinou os dados que ele pretende produzir. Dessa forma é possível cessar a produção quando nenhum outro federado precisa de tal informação.
4.4.6.3. Gerenciamento de Objetos
É um serviço que lida com os dados correntes que estão sendo enviados e recebidos. O federado utiliza os serviços desse grupo para enviar e receber interações. Esses serviços também são utilizados para registrar novas instâncias de classes de objetos e atualizar seus atributos. Outros federados irão ter serviços invocados desse grupo para receber as interações, descobrir novas instâncias, e receber atualizações de instâncias de atributos.
Outros serviços desse grupo são utilizados para controlar como os dados são transportados, para solicitar atualização de valores dos atributos e para informar ao federado se ele deve ficar esperando dados ou não.
4.4.6.4. Gestão de propriedade
Em termos de HLA, simular uma entidade significa fornecer valores para os atributos de instâncias da mesma. O serviço de gerenciamento de propriedade no RTI implementa a noção de responsabilidade do HLA para simular entidades. Esses serviços também permitem que a responsabilidade seja dividida ou transferida entre os federados.
Como citado anteriormente, as regras 5 e 8 do HLA requerem que o federado seja dono do atributo de instância antes que ele possa atualizar o seu valor. O RTI assegura que no máximo um federado por tempo seja o dono para um dado atributo de instância. O federado responsável é responsável pela atualização dos valores. A responsabilidade por simular uma entidade pode ser compartilhada entre os federados de duas formas.
A primeira, a modelagem completa de uma entidade deve ser dividida entre os federados. Se a entidade é representada por uma instância com vários atributos, então federados distintos podem ser donos de vários atributos dessa instância e então ser responsável pela atualização dos atributos no qual ele ficou responsável. Os serviços de gerência de propriedade possibilita a aquisição da propriedade para permitir todo esse processo.
A segunda forma acontece quando a modelagem de entidade passa de um federado para outro durante o curso de uma federação em execução. A propriedade de um atributo de instância pode ser transferida de um federado para outro. A transferência da propriedade pode ser iniciada pelo dono atual ou o dono futuro.
Esse serviço pode ser ignorado se a federação não necessitá-lo. 4.4.6.5. Gerenciamento do tempo
Com os federados executando em suas próprias threads de controle, a ordenação correta de eventos entre os federados é um problema significativo que precisa ser resolvido. No HLA, a ordenação de eventos é expressa em “tempo lógico”. Tempo lógico é uma noção abstrata. Não é necessariamente ligado a qualquer representação ou unidade de tempo. O serviço de gerenciamento de tempo do RTI faz duas tarefas:
Permite que cada federado avance no seu tempo lógico em coordenação com outros federados.
Controla a entrega de eventos de “timestamp” para que o federado não precise receber nunca eventos de outros federados no tempo passado, ou seja, eventos com tempos lógicos menores que o seu tempo lógico.
O RTI permite que o federado escolha o grau de sua participação no gerenciamento de tempo. O federado pode ser time-constrained (tempo-restrito), no qual o avanço do tempo lógico é restringido por outros federados. Também pode ser
time-regulating (tempo-regulado), em que o avanço do seu tempo lógico regula outros
federados. E ainda pode ser time-constrained e time-regulating, ou um de cada vez, ou nenhum. Os federados farão escolhas diferentes dependendo de seus propósitos e dos requisitos da federação.
4.4.6.6. Gerenciamento de distribuição dos dados
Os serviços desse grupo controlam a relação produtor-consumidor entre os federados. Enquanto o grupo de serviços de gerenciamento de declaração gerencia as relações em termos de interações e classes de objetos, o grupo de serviços de gerenciamento de distribuição de dados gerencia em termos de instâncias de objetos e espaços de roteamento abstrato.
Este grupo de serviço provê ferramentas poderosas para refinar as relações entre produtor e consumidor.