• Aucun résultat trouvé

d'etablir la relation entre la loi binomiale et la loi nonnale ;

La loi normale ou loi de Gauss

4. d'etablir la relation entre la loi binomiale et la loi nonnale ;

Composta por 7 pacotes (Figura 4.2), a arquitetura do FAct foi projetada como forma de implementar os pricipais módulos descritos na seção anterior, atentendo assim aos requistos identificados no Capítulo 2. Nas próximas seções, serão abordadas as funções de cada um dos pacotes presentes na versão atual do FAct relacionando-os aos módulos que eles pertencem.

Figura 4.2 – Pacotes do FAct e suas dependências.

O pacote Actor

Contendo o modelo genérico de ator sintético, bem como o modelo genérico de mensagem para a comunicação dos atores, o pacote Actor atende ao [RQ01] e ao [RQ04] presentes no Capítulo 2 compondo assim, a implementação do componente denominado Classes de Simulação.

A Figura 4.3 mostra as entidades básicas deste pacote. A classe

ACLMessage representa o modelo genérico de mensagem, baseado nos

atributos propostos pela FIPA [FIPA 2008]. Já a interface MessageReceiver deve ser implementada pelas entidades que capazes de receber mensagens durante a simulação. Um exemplo deste tipo de entidade é definido pela classe abstrata SyntheticActor que é a implementação do modelo genérico de ator presente do FAct. Atributos de um ator são representados por um objeto do tipo ActorAttribute que se comporta uma árvore de atributos capaz de suportar modelos de personalidade e emoções.

Figura 4.3 – Entidades básicas do pacote Actor.

Funcionando como um relógio da simulação, a classe TimeTicker controla o número de ciclos de interações entre as entidades dando a

possibilidade ao desenvolvedor de medir o tempo de duração da simulação em ciclos de interação.

Figura 4.4 – Classes de suporte a simulação do pacote Actor.

O pacote Actor também possui um conjunto de entidades que dá suporte a simulação em um nível mais alto de abstração, como pode ser visto na Figura 4.4. Nela há o CommunicationManager, uma interface responsável por controlar o processo de comunicação dos atores e que é parte das Classes de Simulação, compondo assim o [RQ04] do Capítulo 4. Este pacote também contém as entidades responsáveis por controlar o ciclo de vida dos at ores,

[RQ03] do Capítulo 2, além de participar do módulo Simulador.

Visão Geral do Modelo Genérico de Ator Sintético Adotado

Tendo como principal objetivo atender às principais características dos atores sintéticos, ou seja, prover mecanismos para a implementação de modelos de personalidade e emoções, o modelo de ator adotado é composto basicamente por uma árvore de atributos, uma lista dos serviços que ele provê além de um mecanismo para a recepção de mensagens, como pode ser visto na Figura 4.5.

Figura 4.5 – Visão Geral do Modelo Genérico de Ator

A árvore de atributos presente no ator é reponsável por permirtir a estruturação dos modelos de personalidade e emoções, já que estes normalmente são baseados em dimenções. Assim, um modelo pode ser implementado definindo um atributo composto como ponto de partida e cada uma das suas dimenções pode ser modelada como um subatributo do modelo. Como veremos no capítulo seguinte quando os simuladores implementados com FAct forem descritos.

Já os serviçoes que os atores fornecem são armazenados em uma lista e permitem aos demais atores conhecerem o que um deterninado ator é capaz de prover. Esta lista foi adicionada ao modelo genérico de ator, tendo em vista a experiência adiquirida no desenvolvimento do projeto SmartSim, onde ela se mostrou muito útil para a implementação da simulação. Além disso, como poderemos ver posteriormente, esta funcionalidade do framework também foi muito útil na construção dos simuladores baseados no FAct.

Como forma de viabilizar o comportamento social dos atores, foi implementado um mecanismo de recebimento de mensagens . Desta forma, quando uma nova mensagem chega a um ator, ela é recebida através do método Receive permitindo assim que o ator dê o devido tratamento à mesma.

O pacote Representation

Enquanto, o pacote Actor possui as classes responsáveis pelos atores sintéticos presentes na simulação, analogamente o pacote Representation tem as entidades que lidam com as representações gráficas dos atores. Como mostrado na Figura 4.6, este pacote possui a classe abstrata

ActorRepresentation que define um modelo genérico e extensível para a

implementação das representações gráficas dos atores. Além disso, este pacote também possui a interface RepresentationContainer responsável pelo controle do ciclo de vida da representações. Desta forma, este pacote esta relacionado às Classes de Simulação e conseqüentemente à implementação do [RQ04].

Figura 4.6 – Membros do pacote Representation.

O pacote WorldData

Compondo as classes de simulação e atendendo ao [RQ01], este pacote foi implementado para permitir a instanciação de objetos do tipo

SyntheticActor através da leitura de arquivos que contenham os modelos da

simulação, como mostrado na Figura 4.7.

A interface DataLoader representa a entidade responsável por ler e criar os objetos. Junto com ela é fornecida uma implementação padrão, o

XMLDataLoader, que realiza a leitura de arquivos XML [Hunter et al. 2007]

que são gerados pela ferramenta de modelagem de atores, que será abordada mais adiante. Como a classe SyntheticActor é abstrata, se faz necessário um mecanismo para instanciação das suas sub-classes. A interface ActorFactory implementa este mecanismo através de seu único método que dado um

identificador de ator retorna a instância de um objeto que é um subtipo de

SyntheticActor.

Figura 4.7 – Entidades do pacote WorldData.

O pacote Log

O módulo Gerador de Logs é implementado através deste pacote, Figura 4.8. Ele fornece classes para a geração de dados nessários à análise da simulação após o seu término, no formato XML. Atualmente, ele é capaz de gerenciar dois arquivos de dados, um com as mensagens trocadas entros os atores e outro com os estados dos mesmos. Assim, é possível saber o estado do ator em um determinado ciclo e observar as mensagens que ele trocou nos ciclos seguintes para a identificação das mudanças no seu estado promovidas pelas interações com os demais atores da simulação.

Figura 4.8 – Membros do pacote Log.

O pacote Util

O pacote Util contém classes auxiliares que podem tanto ser aplicadas pelo próprio framework, quanto pelos simuladores desenvolvidos com o suporte do FAct. A classe UtilFunctions possui apenas funções de conversão entre tipos primitivos da linguagem. Já a classe Thread permite que cada ator da simulação possa ser simulado em um fluxo independe nte de execução, algo fundamental em simulações complexas.

O pacote DesignPattern

Este pacote possui classes auxiliares tanto ao framework quanto aos simuladores desenvolvidos sobre o FAct, assim como pacote Util. Porém, no

DesignPattern as classes são implementações de padrões de projeto [Gamma

et al. 1998]. Desta forma, a classe GenericIterator é útil na implementação padrão Iterator. A classe GenericSingleton é direcionada ao padrão Singleton e a classe GenericFactory é uma implementação genérica do padrão Abstract

Factory. O padrão Singleton pode ser utilizado para evitar múltiplas

instanciações de uma mesma entidade da simulação. Já o AbstractFactory é utilizado dentro do próprio framework como será visto na descrição do pacote

FAct.

Figura 4.10 – Membros do pacote DesignPattern

O pacote FAct

O isolamento dos módulos do FAct é um ponto fundamental para permitir a manutenção do framework, além da sua própria forma de desenvolvimento incremental. Servindo como uma fronteira entre os simuladores e o framework, este pacote contém uma interface chamada

possuem a implementação das funcionalidades que o FAct provê. A implementação desta interface se dá através da classe DefaulFActFacade.

Figura 4.11 – Entidades do pacote FAct.

Documents relatifs