|
9 | 9 |
|
10 | 10 | *Tabela 1: Identificação dos Autores* |
11 | 11 |
|
| 12 | +## Métricas do *Building Block* |
| 13 | + |
| 14 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 15 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 16 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 17 | + |
| 18 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 19 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 20 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 21 | + |
| 22 | +[](https://sonarcloud.io/summary/new_code?id=tcc-sma-andre-gabriel_simple-voting-structure) |
| 23 | + |
12 | 24 | ## Descrição |
13 | 25 |
|
14 | 26 | O *building block* contido neste repositório tem por objetivo a implementação de uma Estrutura de Votação Simples, onde é proposto que o agente mediador escolha um valor numérico inteiro dado um intervalo pré-definido e que os agentes votantes busquem, dentro deste intervalo, escolher um número. O agente votante cuja escolha numérica mais se aproximar do valor definido pelo mediador é estabelecido como o vencedor. Há também a possibilidade de empate. |
15 | 27 |
|
16 | | -<!-- ### Projeto em Execução |
| 28 | +Inicialmente, o agente *creator* instancia todo o cenário para a execução das atividades do *building block*, criando os agentes votantes e o mediador das possíveis votações, para além de enviar uma mensagem de *start* para um agente votante escolhido randomicamente, a qual desencadeará toda a votação que será realizada. |
| 29 | + |
| 30 | +O agente votante, tendo recebido uma mensagem de *start* por parte do agente *creator*, envia ao mediador uma mensagem solicitando a realização de uma votação, a qual é respondida pelo mesmo com um código identificador da votação a ser realizada e os valores mínimo e máximo para a eventual escolha dos votos. |
| 31 | + |
| 32 | +O agente votante que solicitou a eleição, tendo recebido as informações iniciais da mesma pelo agente mediator, envia aos demais agentes votantes um convite para a mesma. Todos os agentes participantes da votação se registram nas páginas amarelas (i.e., no *DF*) com o código recebido, possibilitando assim a identificação de todos os participantes da mesma. O agente votante também se responsabiliza por informar ao mediador o quórum de agentes votantes convidados para a eleição. |
| 33 | + |
| 34 | +Uma vez que todos os agentes votantes tenham se registrado na votação e informado o mesmo ao agente mediador o mesmo, este então solicita os votos a todos os participantes. |
| 35 | + |
| 36 | +Os agentes votantes então escolhem um número randômico dentre o intervalo inicialmente fornecido e o enviam ao mediador. O agente votante que escolher o número mais próximo ao inicialmente escolhido pelo mediador é declarado o vencedor da votação. Há também a possibilidade de empate. |
| 37 | + |
| 38 | +Por fim, o agente mediador informa os vencedores a todos os agentes votantes participantes e se responsabiliza por apagar todas as informações referentes à votação executada, permitindo assim que outras votações sejam requisitadas. |
| 39 | + |
| 40 | +## Projeto em Execução |
| 41 | + |
| 42 | +Abaixo, na *Figura 1*, são apresentados os agentes participantes da votação através da visualização fornecida pelo *sniffer*. Nela, é possível ver o agente *creator*, nomeado por "simple_voting_structure", o agente mediador e os agentes votantes. |
| 43 | + |
| 44 | +<img src="assets/figura1.png" alt="Visualização dos Agentes pelo *Sniffer*"> |
| 45 | + |
| 46 | +*Figura 1: Visualização dos Agentes pelo *Sniffer** |
| 47 | + |
| 48 | +Já na *Figura 2*, vista abaixo, é possível ver a mensagem de *start* enviada do agente votante escolhido para o agente mediador, solicitando assim o início de uma votação. |
| 49 | + |
| 50 | +<img src="assets/figura2.png" alt="Mensagem de *Start* Solicitando a Realização de uma Votação"> |
| 51 | + |
| 52 | +*Figura 2: Mensagem de *Start* Solicitando a Realização de uma Votação* |
| 53 | + |
| 54 | +Em seguida, na *Figura 3*, é possível ver a mensagem retornada do *mediator* para o agente votante com os dados respectivos à votação a ser realizada (i.e., o código identificador da votação e os limiares inferiores e superiores da votação). |
| 55 | + |
| 56 | +<img src="assets/figura3.png" alt="Mensagem com as Informações da Votação"> |
| 57 | + |
| 58 | +*Figura 3: Mensagem com as Informações da Votação* |
| 59 | + |
| 60 | +Por fim, é apresentado na *Figura 4* a mensagem contendo o voto de um dos agentes participantes da votação, enviado ao agente *mediator*. |
17 | 61 |
|
18 | | -<img src="" alt="Descrição do Print"> |
| 62 | +<img src="assets/figura4.png" alt="Mensagem com o Voto Enviado ao Mediador"> |
19 | 63 |
|
20 | | -*Figura 1: Print do Projeto em Execução* --> |
| 64 | +*Figura 4: Mensagem com o Voto Enviado ao Mediador* |
21 | 65 |
|
22 | 66 | ## Requisitos Técnicos |
23 | 67 |
|
@@ -70,7 +114,7 @@ make build |
70 | 114 | make run |
71 | 115 | ``` |
72 | 116 |
|
73 | | -- É possível alterar a quantidade de agentes participantes ao passar a variável **QUORUM** seguida do número desejado, como pode ser visto abaixo (onde N representa o número desejado de agentes): |
| 117 | +- É possível alterar a quantidade de agentes participantes ao passar a variável **QUORUM** seguida do número desejado, como pode ser visto abaixo (onde N representa o número desejado de agentes): |
74 | 118 |
|
75 | 119 | ```bash |
76 | 120 | make build-and-run QUORUM=N" |
|
0 commit comments