Mudanças entre as edições de "Grupo1-PJI2-2019-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(21 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 +
==Cronograma==
 +
 +
https://trello.com/b/7zcbJcDL/projeto-integrador-ii-grupo-i
 +
https://github.com/AlissonBoeing/ProjetoIntegradorII
 +
 +
[[Arquivo:Selecao_008.png]]
 +
 
==Responsáveis pelo projeto==
 
==Responsáveis pelo projeto==
  
Linha 12: Linha 19:
  
 
==Descrição dos casos de uso SR==
 
==Descrição dos casos de uso SR==
'''Caso de uso''': Iniciar robô  <br\>
+
 
 +
'''Caso de uso''': Pausar/Reiniciar<br\>
 
'''Ator Primário''': SS <br\>
 
'''Ator Primário''': SS <br\>
'''Identificador''': INC-RB <br\>
+
'''Identificador''': PAU/REI <br\>
'''Sumário''': SS informa ao SR seu ID, sua Cor, Modo de jogo e Posição inicial <br\>
+
'''Sumário''': SS envia mensagem de pausa ou reinicio de jogo <br\>
'''Pré condições''': Conexão já estabelecida entre SS e SR<br\>
+
'''Pré condições''': O robô deve estar em cima do quadrado verde para executar o comando de parar/reiniciar <br\>
 
'''Fluxo Principal''':  <br\>
 
'''Fluxo Principal''':  <br\>
[1] SS informa ao SR seu ID <br\>
+
[1] SS recebe comando para pausar/reiniciar <br\>
[2] SS informa ao SR sua Cor <br\>
+
[2] SR armazena em sua fila interna de comandos a receber. SR pode receber o comando <br\>  
[3] SS informa ao SR Modo de jogo <br\>
+
a qualquer momento, mas só vai executa-lo quando estiver em cima do quadrado verde. <br\>
[4] SS informa ao SR sua Posição inicial <br\>
+
[3] SR executa o comando <br\>
 
 
  
 
'''Caso de uso''': Receber movimento <br\>
 
'''Caso de uso''': Receber movimento <br\>
Linha 31: Linha 38:
 
'''Fluxo Principal''':  <br\>
 
'''Fluxo Principal''':  <br\>
 
[1] SS envia os comandos de movimento para SR <br\>
 
[1] SS envia os comandos de movimento para SR <br\>
 
+
[2] SR armazena-os em uma fila de comandos <br\>
  
 
'''Caso de uso''': Mover manual <br\>
 
'''Caso de uso''': Mover manual <br\>
Linha 37: Linha 44:
 
'''Identificador''': MVR-MN <br\>
 
'''Identificador''': MVR-MN <br\>
 
'''Sumário''': Executar o movimento recebido <br\>
 
'''Sumário''': Executar o movimento recebido <br\>
'''Pré condições''': Já ter executado RCB-MV <br\>
+
'''Pré condições''': Já ter recebido movimento e armazenado na fila <br\>
 
'''Fluxo Principal''':  <br\>
 
'''Fluxo Principal''':  <br\>
[1] SS envia os comandos para SR <br\>
+
[1] SR executa os movimentos recebidos em ordem de chegada (FIFO) <br\>
[2] SA permite o movimento <br\>
+
[2] SR informa a SS sua coordenada <br\>
[3] SR executa os movimentos recebidos <br\>
+
[3] Executa o próximo comando da lista, se houver. <\br>
[4] SR informa a SA sua coordenada <br\>
 
  
'''Caso de uso''': Receber coordenada das caças <br\>
+
'''Caso de uso''': Receber local <br\>
 
'''Ator Primário''': SA <br\>
 
'''Ator Primário''': SA <br\>
 
'''Identificador''': RCC <br\>
 
'''Identificador''': RCC <br\>
Linha 64: Linha 70:
 
[3] Ao chegar em uma caça ele informa ao SS que achou uma caça <br\>
 
[3] Ao chegar em uma caça ele informa ao SS que achou uma caça <br\>
  
'''Caso de uso''': Mover autônomo <br\>
+
'''Caso de uso''': Mover automático <br\>
 
'''Ator Primário''': SR <br\>
 
'''Ator Primário''': SR <br\>
 
'''Identificador''': MV-AUTO <br\>
 
'''Identificador''': MV-AUTO <br\>
Linha 73: Linha 79:
 
[2] SR se movimenta com base em seu algoritmo <br\>
 
[2] SR se movimenta com base em seu algoritmo <br\>
 
[3] Se SR achar a caça, ele informa ao SS <br\>
 
[3] Se SR achar a caça, ele informa ao SS <br\>
 +
 +
'''Caso de uso''': Ver obstáculos <br\>
 +
'''Ator Primário''': SR <br\>
 +
'''Identificador''': VO <br\>
 +
'''Sumário''': No SR há um sensor ultrassônico que detecta obstáculos/objetos a frente <br\>
 +
'''Pré condições''': Sensor deve estar funcionando <br\>
 +
'''Fluxo Principal''':  <br\>
 +
[1] A todo momento o sensor está a detectar obstáculos <br\>
 +
[2] Caso o sensor não detecte nada, ele não avisa nada ao SR <br\>
 +
[3] Caso o sensor detecte algo, ele informa ao SR <br\>
 +
 +
'''Caso de uso''': Pausa de emergência <br\>
 +
'''Ator Primário''': SR <br\>
 +
'''Identificador''':Pau-Emer <br\>
 +
'''Sumário''': Ao detectar um obstáculo o SR parará <br\>
 +
'''Pré condições''': Detectar um obstáculo com o sensor  <br\>
 +
'''Fluxo Principal''':  <br\>
 +
[1] O sensor detecta um obstáculo <br\>
 +
[2] O sensor informa ao SR que achou algum obstáculo <br\>
 +
[3] SR realiza uma pausa de emergência <br\>
  
 
'''Caso de uso''': Obter caça <br\>
 
'''Caso de uso''': Obter caça <br\>
Linha 93: Linha 119:
 
[3] SA repassa o mapa para SS <br\>
 
[3] SA repassa o mapa para SS <br\>
 
[4] SA repassa o mapa para SR <br\>
 
[4] SA repassa o mapa para SR <br\>
 +
 +
'''Caso de uso''': Fim <br\>
 +
'''Ator Primário''': SS <br\>
 +
'''Identificador''': Fim <br\>
 +
'''Sumário''': Ao SR atualizar o mapa e não houver mais nenhuma caça a ser encontrada, SR finaliza o jogo <br\>
 +
'''Pré condições''': Não haver nenhuma caça no tabuleiro <br\>
 +
'''Fluxo Principal''':  <br\>
 +
[1] A última caça é encontrada <br\>
 +
[2] SR atualiza o mapa <br\>
 +
[3] SR finaliza o jogo <br\>
 +
 +
 +
'''Caso de uso''': Iniciar robô  <br\>
 +
'''Ator Primário''': SS <br\>
 +
'''Identificador''': INC-RB <br\>
 +
'''Sumário''': SS informa ao SR seu ID, sua Cor, Modo de jogo e Posição inicial <br\>
 +
'''Pré condições''': Conexão já estabelecida entre SS e SR<br\>
 +
'''Fluxo Principal''':  <br\>
 +
[1] SS informa ao SR seu ID <br\>
 +
[2] SS informa ao SR sua Cor <br\>
 +
[3] SS informa ao SR Modo de jogo <br\>
 +
[4] SS informa ao SR sua Posição inicial <br\>
 +
 +
'''Caso de uso''': Identificar <br\>
 +
'''Ator Primário''': SR <br\>
 +
'''Identificador''': ID <br\>
 +
'''Sumário''': SR identifica o robô <br\>
 +
'''Pré condições''': Nenhuma <br\>
 +
'''Fluxo Principal''':  <br\>
 +
[1] SR envia mensagem com seu endereço <br\>
  
 
{{Collapse bottom}}
 
{{Collapse bottom}}
Linha 227: Linha 283:
 
{{Collapse top |SA}}
 
{{Collapse top |SA}}
  
==Diagrama dos casos de uso SA==
+
{{Collapse top |Evolução dos diagramas SA}}
  
 
[[Arquivo:DiagramaSA789.png]]
 
[[Arquivo:DiagramaSA789.png]]
Linha 236: Linha 292:
  
 
[[Arquivo:DiagramaSA159.png]]
 
[[Arquivo:DiagramaSA159.png]]
 +
 +
{{Collapse bottom}}
 +
 +
==Diagrama dos casos de uso SA==
 +
 +
[[Arquivo:DiagramaSAfinal.png]]
  
 
==Descrição dos casos de uso SA==
 
==Descrição dos casos de uso SA==
Linha 426: Linha 488:
 
{{Collapse top |Diagrama de classes}}
 
{{Collapse top |Diagrama de classes}}
  
==Diagrama de classes==
+
==Diagrama de classes SR==
 +
 
 +
[[Arquivo:DiagramaDeClasses1447.png]]
 +
 
 +
 
 +
==Diagrama de classes SS==
 +
 
 +
 
 +
[[Arquivo:DiagramaClasseSSFinal.png]]
 +
 
 +
 
 +
==Diagrama de classes SA==
 +
 
 +
[[Arquivo:DiagramaSaCompletoFinal.png]]
  
[[Arquivo:diagramaDeClasses789.png]]
 
  
 
{{Collapse bottom}}
 
{{Collapse bottom}}
Linha 481: Linha 555:
 
{{collapse bottom}}
 
{{collapse bottom}}
 
{{collapse top | Mensagens - Sistema Arbitrário}}
 
{{collapse top | Mensagens - Sistema Arbitrário}}
'''Caso de uso'''           - Origem - Destino - '''mensagem''' <br\>
+
''''Iniciar partida''''         SA SS Modo de uso,numero de caças, numero de competidores + cor do Robô, Localização das caças<br\>
'''Pausar/continuar'''      - A1    - SA     - mensagem de pausa ou continua <br\>
+
''''Pausar/continuar'''' SA SS mensagem de pausa ou continua<br\>
'''Pausar/continuar'''     - SA     - SS     - mensagem de pausa ou continua <br\>
+
''''Declarar Vencedor'''' SA SS Vencedor<br\>
'''Cadastrar'''             - A1    - SA     - mensagem add + MAC do robô  <br\>
+
''''Terminar partida'''' SA SS mensagem de fim de jogo<br\>
'''Cadastrar'''            - SA    - DB      - mensagem add + MAC do robô  <br\>
+
''''Enviar atualização'''' SA SS numero de caça + localização das caça, numero de competidores + localização de competidores<br\>
'''Deletar'''              - A1    - SA     - mensagem deletar<br\>
+
''''Validar caça''''         SA SS Caça OK ou NOK<br\>
'''Deletar'''              - SA    - DB      - requisição da lista de robô  <br\>
+
''''Validar caça''''         SS SA mensagem que encontrou caça + Cor Robô + Localização (linha, coluna) (autônomo)<br\>
'''Deletar'''              - DB    - SA     - numero de Robôs cadastrados + lista de Robô <br\>
+
''''Conectar Robô''''         SS SA MAC do Robô<br\>
'''Deletar'''              - SA    - A1      - numero de Robôs cadastrados + lista de Robô <br\>
+
''''Receber atualização'''' SS SA Cor Robô + Localização (linha, coluna) .<br\>
'''Deletar'''               - A1    - SA     - id do robô a ser deletado<br\>
+
''''Enviar atualização'''' SR SS Localização (linha, coluna) .<br\>
'''Deletar'''               - SA    - DB      - id do robô a ser deletado <br\>
+
''''Validar caça''''         SR SS mensagem que encontrou caça + Localização (linha, coluna)<br\>
'''Consultar Robô'''        - A1    - SA     - mensagem consultar robô<br\>
+
''''Autentiticar ao Robô'''' SR SS MAC do Robô<br\>
'''Consultar Robô'''       - SA    - DB      - requisição da lista de robô  <br\>
+
''''Autentiticar''''         SS SR Identificação do SS + "|" + mensagem "autenticado"<br\>
'''Consultar Robô'''        - DB    - SA     - numero de Robôs cadastrados + lista de Robô <br\>
+
''''Receber atualização'''' SS SR numero de caça + localização das caça, numero de competidores + localização de competidores<br\>
'''Consultar Robô'''       - SA    - A1      - numero de Robôs cadastrados + lista de Robô <br\>
+
''''Movimentar manual'''' SS SR Direção .<br\>
'''Consultar histórico'''  - A1    - SA     - mensagem consultar Histórico<br\>
+
''''Iniciar partida''''         SS SR Modo de uso,numero de caças, numero de competidores + cor do Robô, numero de caças, Localização das caças<br\>
'''Consultar histórico'''   - SA    - DB      - requisição da lista de partidas  <br\>
+
''''Pausar/continuar'''' SS SR mensagem de pausa ou continua<br\>
'''Consultar histórico'''  - DB    - SA      - numero de partidas + lista de partida(id partida, data, numero de participantes, participantes, vencedor) <br\>
+
''''Terminar partida'''' SS SR mensagem de fim de jogo<br\>
'''Consultar histórico'''   - SA    - A1      - numero de partidas + lista de partida(id partida, data, numero de participantes, participantes, vencedor) <br\>
+
''''Declarar Vencedor'''' SS SR Vencedor<br\>
'''Iniciar partida'''       - A1    - SA      - mensagem iniciar partida <br\>
 
'''Iniciar partida'''      - SA    - A1      - questiona quantos jogadores <br\>
 
'''Iniciar partida'''       - A1    - SA      - numero de jogadores da partida <br\>
 
'''Iniciar partida'''      - SA    - A1      - questiona modo de jogo <br\>
 
'''Iniciar partida'''      - A1    - SA      - modo de jogo <br\>
 
'''Iniciar partida'''      - SA    - A1      - questiona numero de caça <br\>
 
'''Iniciar partida'''       - A1    - SA      - numero de caça <br\>
 
'''Iniciar partida'''      - SS     - SA      - informa Localização do Robô <br\>
 
'''Iniciar partida'''       - SA    - SS     - Modo de uso,numero de caças, numero de competidores + cor do Robô <br\>
 
'''Iniciar partida'''      - SA    - SS      - numero de caças, Localização das caças <br\>
 
'''Terminar partida'''     - A1    - SA      - mensagem de fim de jogo  <br\>
 
'''Terminar partida'''     - SA    - SS     - mensagem de fim de jogo <br\>
 
'''Conectar Robô'''        - SS    - SA      - MAC do Robô  <br\>
 
'''Conectar Robô'''        - SA    - DB      - consultar MAC do Robô  <br\>
 
'''Conectar Robô'''        - DB    - SA      - confirma que o Robô está cadastro  <br\>
 
'''Conectar Robô'''        - SA    - SS      - Confirma autentificação  <br\>
 
'''Validar caça '''        - SS    - SA      - mensagem que encontrou caça + Cor Robô + Localização (linha, coluna) (autônomo)<br\>
 
'''Validar caça '''        - SS    - SA      - mensagem que encontrou caça + numero da caça + Cor Robô (manual)<br\>
 
'''Receber atualização'''  - SS    - SA      - Cor Robô + Localização (linha, coluna) .<br\>
 
'''Enviar atualização'''    - SA    - SS      - numero de caça + localização das caça, numero de competidores + localização de competidores <br\>
 
'''Declarar Vencedor'''     - SA    - SS     - Vencedor + Cor do Robô vencedor  <br\>
 
'''Salvar histórico'''      - SA    - DB      - id partida, data, numero de participantes, participantes, vencedor  <br\>
 
 
{{collapse bottom}}
 
{{collapse bottom}}

Edição atual tal como às 15h16min de 8 de julho de 2019

Cronograma

https://trello.com/b/7zcbJcDL/projeto-integrador-ii-grupo-i https://github.com/AlissonBoeing/ProjetoIntegradorII

Selecao 008.png

Responsáveis pelo projeto

  • Alisson Boeing, e-mail: alisson.b11@aluno.ifsc.edu.br
  • Rafael Teles E, e-mail: rafatespindola@gmail.com
SR

Diagrama dos casos de uso SR

DiagramSR.png

Descrição dos casos de uso SR

Caso de uso: Pausar/Reiniciar<br\> Ator Primário: SS <br\> Identificador: PAU/REI <br\> Sumário: SS envia mensagem de pausa ou reinicio de jogo <br\> Pré condições: O robô deve estar em cima do quadrado verde para executar o comando de parar/reiniciar <br\> Fluxo Principal: <br\> [1] SS recebe comando para pausar/reiniciar <br\> [2] SR armazena em sua fila interna de comandos a receber. SR pode receber o comando <br\> a qualquer momento, mas só vai executa-lo quando estiver em cima do quadrado verde. <br\> [3] SR executa o comando <br\>

Caso de uso: Receber movimento <br\> Ator Primário: SS <br\> Identificador: RCB-MV <br\> Sumário: SR recebe os comandos de movimentos de SS <br\> Pré condições: Estar no modo manual e já ter executado INC-RB <br\> Fluxo Principal: <br\> [1] SS envia os comandos de movimento para SR <br\> [2] SR armazena-os em uma fila de comandos <br\>

Caso de uso: Mover manual <br\> Ator Primário: SS <br\> Identificador: MVR-MN <br\> Sumário: Executar o movimento recebido <br\> Pré condições: Já ter recebido movimento e armazenado na fila <br\> Fluxo Principal: <br\> [1] SR executa os movimentos recebidos em ordem de chegada (FIFO) <br\> [2] SR informa a SS sua coordenada <br\> [3] Executa o próximo comando da lista, se houver. <\br>

Caso de uso: Receber local <br\> Ator Primário: SA <br\> Identificador: RCC <br\> Sumário: SA envia as coordenadas das caças ao SR <br\> Pré condições: SR estar em modo autônomo <br\> Fluxo Principal: <br\> [1] SS escolhe o modo autônomo <br\> [2] SA gera as coordenadas das caças <br\> [3] SA distribui essas coordenadas para o SR <br\>

Caso de uso: Procurar caça <br\> Ator Primário: SR <br\> Identificador: PCR-CC <br\> Sumário: SR verifica se está em cima da caça ou ainda não. <br\> Pré condições: Estar no modo autônomo <br\> Fluxo Principal: <br\> [1] SR é selecionado para o modo autônomo <br\> [2] SR usa seu algoritmo de busca para chegar a caça <br\> [3] Ao chegar em uma caça ele informa ao SS que achou uma caça <br\>

Caso de uso: Mover automático <br\> Ator Primário: SR <br\> Identificador: MV-AUTO <br\> Sumário: SR usa de seu algoritmo para achar o caminho mais rápido até a caça <br\> Pré condições: Estar em modo autônomo <br\> Fluxo Principal: <br\> [1] SR é selecionado em modo autônomo <br\> [2] SR se movimenta com base em seu algoritmo <br\> [3] Se SR achar a caça, ele informa ao SS <br\>

Caso de uso: Ver obstáculos <br\> Ator Primário: SR <br\> Identificador: VO <br\> Sumário: No SR há um sensor ultrassônico que detecta obstáculos/objetos a frente <br\> Pré condições: Sensor deve estar funcionando <br\> Fluxo Principal: <br\> [1] A todo momento o sensor está a detectar obstáculos <br\> [2] Caso o sensor não detecte nada, ele não avisa nada ao SR <br\> [3] Caso o sensor detecte algo, ele informa ao SR <br\>

Caso de uso: Pausa de emergência <br\> Ator Primário: SR <br\> Identificador:Pau-Emer <br\> Sumário: Ao detectar um obstáculo o SR parará <br\> Pré condições: Detectar um obstáculo com o sensor <br\> Fluxo Principal: <br\> [1] O sensor detecta um obstáculo <br\> [2] O sensor informa ao SR que achou algum obstáculo <br\> [3] SR realiza uma pausa de emergência <br\>

Caso de uso: Obter caça <br\> Ator Primário: SR <br\> Identificador: OBT-C <br\> Sumário: Quando SR achar uma caça ele informa ao SS. SS informa ao SA para validar ou não a caça. Quando validada, contabiliza um ponto para quem a achou<br\> Pré condições: Achar a caça <br\> Fluxo Principal: <br\> [1] SR se movimenta para cima da caça <br\> [2] SR informa que achou a caça para SS <br\>

Caso de uso: Atualizar mapa <br\> Ator Primário: SR <br\> Identificador: ATLZ-MP <br\> Sumário: A cada evento importante e/ou um tempo definido o SA atualiza o mapa e repassa para o SS e SR <br\> Pré condições: Conexões estabelecidas <br\> Fluxo Principal: <br\> [1] SR achou uma caça ou algum outro evento aconteceu <br\> [2] SA atualiza seu mapa <br\> [3] SA repassa o mapa para SS <br\> [4] SA repassa o mapa para SR <br\>

Caso de uso: Fim <br\> Ator Primário: SS <br\> Identificador: Fim <br\> Sumário: Ao SR atualizar o mapa e não houver mais nenhuma caça a ser encontrada, SR finaliza o jogo <br\> Pré condições: Não haver nenhuma caça no tabuleiro <br\> Fluxo Principal: <br\> [1] A última caça é encontrada <br\> [2] SR atualiza o mapa <br\> [3] SR finaliza o jogo <br\>


Caso de uso: Iniciar robô <br\> Ator Primário: SS <br\> Identificador: INC-RB <br\> Sumário: SS informa ao SR seu ID, sua Cor, Modo de jogo e Posição inicial <br\> Pré condições: Conexão já estabelecida entre SS e SR<br\> Fluxo Principal: <br\> [1] SS informa ao SR seu ID <br\> [2] SS informa ao SR sua Cor <br\> [3] SS informa ao SR Modo de jogo <br\> [4] SS informa ao SR sua Posição inicial <br\>

Caso de uso: Identificar <br\> Ator Primário: SR <br\> Identificador: ID <br\> Sumário: SR identifica o robô <br\> Pré condições: Nenhuma <br\> Fluxo Principal: <br\> [1] SR envia mensagem com seu endereço <br\>

SS

Diagrama dos casos de uso SS

DiagramSS4.png

Descrição dos casos de uso SS

Caso de uso: Pausar/Reiniciar <br\> Ator Primário: SA <br\> Identificador: PS/RNC <br\> Sumário: SA envia uma mensagem para SS pausar ou reiniciar a movimentação dos robôs <br\> Pré condições: O jogo deve estar em andamento para pausar ou deve estar em pausa para reiniciar <br\> Fluxo Principal: <br\> [1] O jogo está em pausa ou andamento <br\> [2] SA envia um comando de pausa/reiniciar para SS <br\> [3] SS envia o comando para SR <br\> [4] SR executa o comando <br\>


Caso de uso: Iniciar Partida <br\> Ator Primário: SA <br\> Identificador: INC-PTD <br\> Sumário: SS inicia a partida enviando o modo de jogo e ID para SR <br\> Pré condições: Ainda não ter inciado a partida <br\> Fluxo Principal: <br\> [1] ID e modo de jogo são enviados ao SR <br\> [2] A partida começa imediatamente <br\>


Caso de uso: Terminar partida <br\> Ator Primário: SA <br\> Identificador: TRM-PTD <br\> Sumário: Todas as caças foram encontradas <br\> Pré condições: Não pode haver nenhuma caça no tabuleiro <br\> Fluxo Principal: <br\> [1] A última caça é obtida e validada <br\> [2] SA envia comando a SR que a partida chegou ao fim <br\>


Caso de uso: Enviar local das caças <br\> Ator Primário: SA <br\> Identificador: ELC <br\> Sumário: SA sorteia as posições das caças e as envia para SS. SS, por sua vez, as envia para SR. SR em modo automático irá usar de seu algoritmo interno para traçar a melhor rota para obter o máximo de caças em menor tempo possível <br\> Pré condições: O modo autônomo <br\> Fluxo Principal: <br\> [1] SA sorteia as posições das caças <br\> [2] SA envia as posições das caças ao SS <br\> [3] SS repassa as posições das caças ao SR <br\> [4] SR traça a melhor rota, de acordo com seu algoritmo, para buscar o maior número de caças em menor tempo <br\>


Caso de uso: Atualizar mapa <br\> Ator Primário: SA <br\> Identificador: ATLZ-MP <br\> Sumário: A posição das caças e dos SRs devem ser constantemente atualizadas para obter o melhor desempenho dos sistemas <br\> Pré condições: A partida deve estar havendo <br\> Fluxo Principal: <br\> [1] A cada evento (uma caça encontrada ou movimento de robo) é reenviada as posições das caças e dos SRs no mapa <br\>


Caso de uso: Validar caça manual <br\> Ator Primário: Jogador <br\> Identificador: ATT-CC <br\> Sumário: Na interface o jogador deverá atualizar a lista de caças informando que achou tal caça <br\> Pré condições: O jogador deve realmente estar com o SR em cima da caça e a caça deve ter sido validada <br\> Fluxo Principal: <br\> [1] Jogador acha a caça [2] A caça é validada [3] A lista é atualizada pelo jogador


Caso de uso: Enviar movimento <br\> Ator Primário: Jogador <br\> Identificador: ENV-MOV <br\> Sumário: O jogador envia os movimentos a serem tomados por SR. SR executa-os <br\> Pré condições: Estar no modo manual <br\> Fluxo Principal: <br\> [1] SR é inciado em modo manual <br\> [2] O jogador envia comandos de movimento ao SR <br\> [3] SR executa os comandos recebidos <br\>


Caso de uso: Validar caça <br\> Ator Primário: Jogador <br\> Identificador: VLD-CC <br\> Sumário: SR se posiciona sobre uma caça e envia sua posição ao SS. SS valida a caça juntamente com SA. <br\> Pré condições: SR deve ter encontrado uma caça <br\> Fluxo Principal: <br\> [1] SR chega à caça <br\> [2] SR envia localização ao SS <br\> [3] SS verifica se na posição há uma caça <br\> [4] SS valida a caça se na posição conter a caça. SS não valida a caça se na posição não conter a caça <br\>


Caso de uso: Mover automático <br\> Ator Primário: SR <br\> Identificador: MVR-AUTO <br\> Sumário: O SR utilizará de seu algoritmo interno para obter o maior número de caças em menor tempo possível <br\> Pré condições: Jogo iniciado em modo automático e já ter recebido a localização das caças <br\> Fluxo Principal: <br\> [1] O jogo é iniciado em modo automático <br\> [2] SR recebe as caças <br\> [3] SR usa o algoritmo para obter as caças <br\>


Caso de uso: Receber atualização <br\> Ator Primário: SS <br\> Identificador: RCB-ATT <br\> Sumário: O SS recebe atualização do mapa do SA e repassa para o SR <br\> Pré condições: Estar em modo automático <br\> Fluxo Principal: <br\> [1] Algum evento acontece, por exemplo: um robo se move ou uma caça é encontrada <br\> [2] O mapa é atualizado para todos os sistemas <br\>


Caso de uso: Exibir atualização <br\> Ator Primário: SS <br\> Identificador: EXB-ATT <br\> Sumário: SS exibe na interface a atualização das caças <br\> Pré condições: Estar em modo manual <br\> Fluxo Principal: <br\> [1] SR acha uma caça <br\> [2] A caça é validada <br\> [3] O jogador deve atualizar a lista <br\> [4] Com a lista das caças atualizada, o SA atualiza todos os SSs <br\>


SA
Evolução dos diagramas SA

DiagramaSA789.png

Novo123.png

DiagramaSA456.png

DiagramaSA159.png

Diagrama dos casos de uso SA

DiagramaSAfinal.png

Descrição dos casos de uso SA

Caso de uso: Pausar/Reiniciar <br\> Ator primário: Árbitro <br\> Identificador: UCA01<br\> Sumário: Árbitro deseja pausar ou reiniciar a partida.<br\> Pré condições: Partida deve estar em andamento.<br\> Fluxo Principal:<br\> [1] Árbitro clica na opção "Pausar/Continuar".<br\> [2] Sistema Arbitrário informa ao Sistema Supervisório que o jogo foi pausado ou reiniciado.<br\> <br\> Caso de uso: Cadastrar <br\> Ator primário: Árbitro<br\> Identificador: UCA02<br\> Sumário: Árbitro solicita o registro do Robô.<br\> Pré condições: O Árbitro deverá saber as informações do Robô.<br\> Fluxo Principal:<br\> [1] Árbitro seleciona "Cadastrar Robô"<br\> [2] Árbitro envia as informações do Robô para o Sistema Arbitrário.<br\> [3] Sistema Arbitrário solicita ao Banco de dados para que seja registrado o Robô.<br\> [4] Banco de dados informa que o Robô foi registrado.<br\> <br\> Caso de uso: Deletar Robô <br\> Ator primário: Árbitro <br\> Identificador: UCA03<br\> Sumário: Árbitro deleta um Robô cadastrado.<br\> Pré condições: O Robô a ser deletado deve estar cadastrado.<br\> Fluxo Principal:<br\> [1] Árbitro clica na opção "Deletar Robô".<br\> [2] Sistema Arbitrário solicita ao Banco de dados os Robôs cadastrados.<br\> [3] Banco de dados envia uma lista de robôs ao Sistema Arbitrário.<br\> [4] Sistema Arbitrário Exibe a lista de Robôs.<br\> [5] Árbitro informa o ID do robô a ser deletado.<br\> [6] Sistema Arbitrário solicita ao Banco de dados que remova o Robô com ID informado.<br\> [7] Banco de dados confirma que o robô foi deletado.<br\> [8] Sistema Arbitrário Exibe que o Robô foi deletado.<br\> <br\> Caso de uso: Consultar robôs <br\> Ator primário: Árbitro <br\> Identificador: UCA04<br\> Sumário: Árbitro consulta todos os Robôs cadastrados.<br\> Pré condições: Pelo menos um Robô deve estar cadastrado.<br\> Fluxo Principal:<br\> [1] Árbitro clica na opção "Consultar Robôs".<br\> [2] Sistema Arbitrário solicita ao Banco de dados todos os Robôs cadastrados.<br\> [3] Banco de dados envia uma lista de robôs ao Sistema Arbitrário.<br\> [4] Sistema Arbitrário Exibe a lista de Robôs.<br\> <br\> Caso de uso: Consultar histórico <br\> Ator primário: Árbitro <br\> Identificador: UCA05<br\> Sumário: Árbitro consulta o histórico de partidas.<br\> Pré condições: Ter ocorrido o término de pelo menos uma partida com um vencedor/empate.<br\> Fluxo Principal:<br\> [1] Árbitro clica na opção "Consultar histórico".<br\> [2] Sistema Arbitrário solicita ao Banco de dados todos os resultados de jogos armazenados.<br\> [3] Banco de dados envia uma lista das partidas com o vencedor para o Sistema Supervisório.<br\> [4] Sistema Arbitrário Exibe a lista de partidas.<br\> <br\> Caso de uso: Iniciar partida<br\> Ator primário: Árbitro <br\> Identificador: UCA06<br\> Sumário: Árbitro inicia partida.<br\> Pré condições: Ter no mínimo dois Robôs cadastrados.<br\> Fluxo Principal:<br\> [1] Árbitro seleciona "Iniciar partida".<br\> [2] Sistema Arbitrário questiona quantos jogadores realizarão a partida.<br\> [3] Árbitro informa o número de jogadores.<br\> [4] Sistema Arbitrário questiona sobre o modo operação.<br\> [5] Árbitro escolhe o modo de operação desejado.<br\> [6] Sistema Arbitrário questiona quantas caças terá no jogo.<br\> [7] Árbitro informa o número de caças.<br\> [8] Sistema Arbitrário sorteia as caças pelo mapa.<br\> [9] Sistema Arbitrário aguarda a conexão dos Sistema Supervisório.<br\> [10] Sistema Supervisório informa a localização do Robô ao Sistema Arbitrário.<br\> [11] Sistema Arbitrário informa o modo de jogo, quantas caças, quantos jogadores terão na partida e a cor do Robô para o Sistema Supervisório.<br\> [12] A partida é criada.<br\> [13] Sistema Arbitrário informa a localização das caças para o Sistema Supervisório.<br\> <br\> Caso de uso: Terminar Partida<br\> Ator primário: Árbitro <br\> Identificador: UCA07<br\> Sumário: O fim da partida é informado aos Sistema Supervisório.<br\> Pré condições: Declarar Vencedor.<br\> Fluxo Principal:<br\> [1] Sistema Arbitrário informa ao Árbitro qual Robô é o vencedor.<br\> [2] Arbitro seleciona "Terminar partida" [3] Sistema Arbitrário informa a todos os Sistema Supervisório que a partida acabou.<br\> Exceção: Árbitro Termina a partida selecionado a opção "Terminar partida" antes do robô vencedor ser anunciado.<br\> <br\> Caso de uso: Conectar Robô <br\> Ator primário: Sistema Supervisório <br\> Identificador: UCA08<br\> Sumário: Sistema Supervisório envia solicitação de conexão para Sistema Arbitrário.<br\> Pré condições: O Robô deve estar autenticado no Sistema Supervisório, o Robô já deve estar cadastrado, partida deve ter sido criada.<br\> Fluxo Principal:<br\> [1] Sistema Supervisório se conecta no Sistema Arbitrário.<br\> [2] Sistema Supervisório envia informações do Robô para o Sistema Arbitrário.<br\> [3] Sistema Arbitrário verifica se o Robô já foi cadastrado no banco de Dados.<br\> [4] Sistema Arbitrário informa para Sistema Supervisório que o Robô está autenticado.<br\> Exceção: Caso o Robô não tenha sido cadastrado, um cadastro deverá ser efetuado.<br\> <br\> Caso de uso: Validar caça<br\> Ator primário: Sistema Supervisório <br\> Identificador: UCA09<br\> Sumário: Sistema Supervisório informa que caça foi encontrada.<br\> Pré condições: Partida deve ter iniciado e o Robô deve ter encontrado a caça.<br\> Fluxo Principal:<br\> [1] Sistema Supervisório informa ao Sistema Arbitrário que o Robô encontrou uma caça.<br\> [2] Sistema Arbitrário informa ao Árbitro que o Sistema Supervisório encontrou uma caça.<br\> [3] Árbitro valida a caça.<br\> [4] Sistema Arbitrário incrementa o contador de Robô que localizou a caça.<br\> [5] Sistema Arbitrário decrementa o contador de caça.<br\> [6] Sistema Arbitrário informa a todos os Sistema Supervisório que um dos Robôs encontrou uma caça.<br\> Exceção: Árbitro não valida a caça.<br\> <br\> Caso de uso: Receber atualização<br\> Ator primário: Sistema Supervisório <br\> Identificador: UCA10<br\> Sumário: Sistema Supervisório informa a localização do Robô.<br\> Pré condições: A partida deve ter sido iniciada.<br\> Fluxo Principal:<br\> [1] Sistema Supervisório envia a localização do Robô ao Sistema Arbitrário<br\> <br\> Caso de uso: Enviar atualização<br\> Ator primário: Sistema Supervisório <br\> Identificador: UCA11<br\> Sumário: Sistema Arbitrário atualiza o Sistema Supervisório referente ao andamento do jogo.<br\> Pré condições: Iniciar Partida.<br\> Fluxo Principal:<br\> [1] Sistema Arbitrário envia as informações referentes ao jogo para o Sistema Supervisório (localização dos adversários e informações das caças atuais<br\> <br\> Caso de uso: Atualizar mapa<br\> Ator primário: <br\> Identificador: UCA12<br\> Sumário: Sistema Arbitrário atualiza as informações do jogo após receber e enviar informações.<br\> Pré condições: Enviar atualização, Receber atualização, Validar caça.<br\> Fluxo Principal:<br\> [1]Sistema Arbitrário atualiza as informações referentes à: Localização de jogadores, placar do jogo, número de caças encontradas e disponíveis.<br\> <br\> Caso de uso: Declarar Vencedor<br\> Ator primário: Sistema Supervisório <br\> Identificador: UCA13<br\> Sumário: O sistema declara o vencedor da partida após a última caça ser localizada.<br\> Pré condições: Validar caça.<br\> Fluxo Principal:<br\> [1] Sistema Arbitrário informa a todos os Sistema Supervisório que um dos Robôs encontrou a última caça.<br\> [2] Sistema Arbitrário informa ao Árbitro qual Robô é o vencedor.<br\> <br\> Caso de uso: Salvar histórico<br\> Ator primário: Banco de Dados <br\> Identificador: UCA14<br\> Sumário: Após o vencedor ser declarado, os dados da partida são armazenados.<br\> Pré condições: Declarar Vencedor.<br\> Fluxo Principal:<br\> [1] Sistema Arbitrário informa os dados da partida ao Banco de Dados.<br\> [2] Banco de dados confirma que o jogo foi salvo.<br\> [3] Sistema Arbitrário informa ao Árbitro que os dados da partida foram armazenados<br\> <br\> Caso de uso: Exibir resultados no projetor<br\> Ator primário: Projetor <br\> Identificador: UCA15<br\> Sumário: Será exibido no projetor informações da partida(Caças ativas, Caças encontradas, e placar).<br\> Pré condições: Atualizar Mapa.<br\> Fluxo Principal:<br\> [1]Sistema Arbitrário informa os dados da partida ao Projetor.<br\> [2]Projetor exibe os dados da partida para o público.<br\> <br\> Duvidas: <br\> 1 - Realmente é necessário ter um caso de uso salvar histórico? O salvamento automático do resultado não pode ser feito direto no "Declarar Vencedor"?<br\> Possível caso de uso Declarar Vencedor.<br\> Caso de uso: Declarar Vencedor<br\> Ator primário: Sistema Supervisório <br\> Identificador: UCA<br\> Sumário: O sistema declara o vencedor da partida após a última caça ser localizada.<br\> Pré condições: Validar caça.<br\> Fluxo Principal:<br\> [1] Sistema Arbitrário informa a todos os Sistema Supervisório que um dos Robôs encontrou a ultima caça.<br\> [2] Sistema Arbitrário informa ao Árbitro qual Robô é o vencedor.<br\> [3] O jogo acaba.<br\> [4] Sistema Arbitrário informa os dados da partida para o Banco de Dados<br\> [5] Banco de Dados confirma o armazenamento.<br\> <br\>


Diagrama de classes

Diagrama de classes SR

DiagramaDeClasses1447.png


Diagrama de classes SS

DiagramaClasseSSFinal.png


Diagrama de classes SA

DiagramaSaCompletoFinal.png


Mensagens

https://docs.google.com/spreadsheets/d/1Gb3Q5GwtKTtri1cz2Dbpl61aVBbvVQ61nx5ezhZtapg/edit?usp=sharing


Mensagens - Sistema do Robô

Caso de uso - Origem - Destino - mensagem <br\> Autentiticar - SS - SR - Identificação do SS + "|" + mensagem "autenticado"<br\> Receber atualização - SS - SR - numero de caça + localização das caça, numero de competidores + localização de competidores <br\> Enviar atualização - SR - SS - Cor Robô + Localização (linha, coluna) .<br\> Movimentar manual - SS - SR - Direção .<br\> Validar caça - SR - SS - mensagem que encontrou caça + Cor Robô + Localização (linha, coluna)<br\> Iniciar partida - SS - SR - Solicita Localização <br\> Iniciar partida - SR - SS - informa Localização <br\> Iniciar partida - SS - SR - Modo de uso,numero de caças, numero de competidores + cor do Robô <br\> Iniciar partida - SS - SR - numero de caças, Localização das caças <br\> Pausar/continuar - SS - SR - mensagem de pausa ou continua <br\> Terminar partida - SS - SR - mensagem de fim de jogo <br\>

Mensagens - Sistema Supervisório

Caso de uso - Origem - Destino - mensagem <br\> Autentiticar ao Robô - SS - SR - Identificação do SS + "|" + mensagem "autenticado"<br\> Autentiticar ao Robô - SR - SS - MAC do Robô<br\> Enviar atualização - SR - SS - Cor Robô + Localização (linha, coluna) .<br\> Enviar atualização - SS - SA - Cor Robô + Localização (linha, coluna) .<br\> Validar caça autonoma - SR - SS - mensagem que encontrou caça + Cor Robô + Localização (linha, coluna) <br\> Validar caça autonoma - SS - SA - mensagem que encontrou caça + Cor Robô + Localização (linha, coluna) <br\> Iniciar partida - SS - SR - Solicita Localização <br\> Iniciar partida - SR - SS - informa Localização <br\> Iniciar partida - SS - SA - informa Localização do Robô <br\> Iniciar partida - SA - SS - Modo de uso,numero de caças, numero de competidores + cor do Robô <br\> Iniciar partida - SS - SR - Modo de uso,numero de caças, numero de competidores + cor do Robô <br\> Iniciar partida - SA - SS - numero de caças, Localização das caças <br\> Iniciar partida - SS - SR - numero de caças, Localização das caças <br\> Conectar Robô - SS - SA - MAC do Robô<br\> Receber atualização - SA - SS - numero de caça + localização das caça, numero de competidores + localização de competidores <br\> Receber atualização - SS - SR - numero de caça + localização das caça, numero de competidores + localização de competidores <br\> Pausar/continuar - SA - SS - mensagem de pausa ou continua <br\> Pausar/continuar - SS - SR - mensagem de pausa ou continua <br\> Declarar Vencedor - SA - SS - Vencedor + Cor do Robô vencedor <br\> Terminar partida - SA - SS - mensagem de fim de jogo <br\> Terminar partida - SS - SR - mensagem de fim de jogo <br\> Movimentar manual - J1 - SS - Direção .<br\> Movimentar manual - SS - SR - Direção .<br\> Validar caça autonoma - J1 - SS - mensagem que encontrou caça + numero da caça + Cor Robô <br\> Validar caça autonoma - SS - SA - mensagem que encontrou caça + numero da caça + Cor Robô <br\>

Mensagens - Sistema Arbitrário

'Iniciar partida' SA SS Modo de uso,numero de caças, numero de competidores + cor do Robô, Localização das caças<br\> 'Pausar/continuar' SA SS mensagem de pausa ou continua<br\> 'Declarar Vencedor' SA SS Vencedor<br\> 'Terminar partida' SA SS mensagem de fim de jogo<br\> 'Enviar atualização' SA SS numero de caça + localização das caça, numero de competidores + localização de competidores<br\> 'Validar caça' SA SS Caça OK ou NOK<br\> 'Validar caça' SS SA mensagem que encontrou caça + Cor Robô + Localização (linha, coluna) (autônomo)<br\> 'Conectar Robô' SS SA MAC do Robô<br\> 'Receber atualização' SS SA Cor Robô + Localização (linha, coluna) .<br\> 'Enviar atualização' SR SS Localização (linha, coluna) .<br\> 'Validar caça' SR SS mensagem que encontrou caça + Localização (linha, coluna)<br\> 'Autentiticar ao Robô' SR SS MAC do Robô<br\> 'Autentiticar' SS SR Identificação do SS + "|" + mensagem "autenticado"<br\> 'Receber atualização' SS SR numero de caça + localização das caça, numero de competidores + localização de competidores<br\> 'Movimentar manual' SS SR Direção .<br\> 'Iniciar partida' SS SR Modo de uso,numero de caças, numero de competidores + cor do Robô, numero de caças, Localização das caças<br\> 'Pausar/continuar' SS SR mensagem de pausa ou continua<br\> 'Terminar partida' SS SR mensagem de fim de jogo<br\> 'Declarar Vencedor' SS SR Vencedor<br\>