Grupo3-PJI2-2019-1

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Alunos:

Suyan M. V. Moura. (suyan.m@aluno.ifsc.edu.br)

Yara Karoline Garcia. (yara.k@aluno.ifsc.edu.br)

Link repositório Git:

https://github.com/SuyKingsleigh/PJI-2


Atualizações:

Casos de Uso:

Caso de uso S.A

Nome: Verifica tabuleiro

Identificador: CSU.SA 01

Sumário: Inicia a conexão entre S.A S.S

Ator primário: S.S

Fluxo principal:

S.S envia ao S.A uma mensagem contendo o nome do robô, cor e senha.

S.A válida os dados ou não.

Fluxo de exceções:

Senha errada o Login errado:

Simplesmente envia uma mensagem ao S.S informando-o que não foi possível conectar devido a login e/ou senha errado(s)

Nome: Acessa histórico

Identificador: CSU.SA 02

Sumário: Envia histórico de partidas ao cliente.

Ator primário: S.A.

Précondições:

CSU.SA 01

Fluxo principal:

S.S. solicita histórico de partidas ao S.A.

S.A procura em seu banco de dados o histórico daquele cliente

Caso tenha algo, envia o histórico, caso contrário informa que não há histórico.


Nome: Inicia partida.

Identificador: CSU.SA 03

Sumário: Inicia a partida, sorteando as caças e informando aos robôs suas posições

Ator primário: S.A

Fluxo principal:

Gera as posições das caças

Informa a todos

Espera ack de todos para iniciar de fato.

Fluxo de exeção

Não recebeu ack de todos os robôs

Envia novamente.


Nome: Valida caça.

Identificador: CSU.SA 04

Sumário: Válida ou não a caça de um robô

Ator primário: SA.

A partida ter começado (CSU.SA 03)

Fluxo principal:

Recebe mensagem de caça obtida de algum determinado S.S

S.A verifica se realmente aquela caça é válida ou não

Caso seja validada, incrementa o placar e atualiza as caças, informado aos outros S.S.

Nome: Recebe informações dos robôs.

Identificador: CSU.SA 05

Sumário: Recebe dados de movimentação dos robôs.

Précondições: CSU.SA 03

Ator primário: S.A.

Fluxo principal:

S.S informa a posição de seu respectivo robô ao S.A

S.A processa a informação

S.A informa ao S.S a posição de outros robôs para evitar colisões.


Nome: Declara vencedor

Identificador: CSU.SA 06

Sumário: Finaliza uma partida declarando o vencedor.

Ator primário: S.A.

Précondições: CSU.SA 03

Fluxo principal:

Calcula a pontuação

Informa a pontuação aos jogadores.

Salva histórico de partida.




Nome: Pausa

Identificador: CSU.SA 07

Sumário: Pausa a partida caso o árbitro decida.

Ator primário: S.A.

Précondições: CSU.SA 03

Fluxo principal:

Envia mensagem de pause para os S.S.

Espera ACK

Uma vez todos os ACKs recebido, aguarda o recomeço da partida.

Recomeça a partida de onde fora pausada.




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\>

  • Árbitro clica na opção "Pausar/Continuar".<br\>
  • SA informa ao SS 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 o registro do Robô.<br\> Pré condições: O Árbitro deverá saber as informações do Robô.<br\> Fluxo Principal:<br\>

  • Árbitro seleciona "Cadastrar Robô"<br\>
  • Árbitro envia as informações do Robô para o SA.<br\>
  • SA solicita ao Banco de dados para que seja registrado o Robô.<br\>
  • 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 Robô cadastrado.<br\> Pré condições: O Robô deve estar cadastrado.<br\> Fluxo Principal:<br\>

  • Árbitro clica na opção "Deletar Robôs".<br\>
  • SA solicita ao Banco de dados os Robôs cadastrados.<br\>
  • Banco de dados envia uma lista de robôs ao SS.<br\>
  • SA Exibe a lista de Robôs.<br\>
  • Árbitro informa o ID do robô a ser deletado.<br\>
  • SA solicita ao Banco de dados que remova o Robô com ID informado.<br\>
  • Banco de dados confirma que o robô foi deletado.<br\>
  • SA Exibe que o Robô foi deletado.<br\>

<br\> Caso de uso: Consultar robô <br\> Ator primário: Árbitro <br\> Identificador: UCA04<br\> Sumário: Árbitro consulta todos os Robô cadastrado.<br\> Pré condições: Existir pelo menos um Robô cadastrado.<br\> Fluxo Principal:<br\>

  • Árbitro clica na opção "Consultar Robôs".<br\>
  • SA solicita ao Banco de dados todos os Robôs cadastrados.<br\>
  • Banco de dados envia uma lista de robôs ao SS.<br\>
  • SA 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 partida.<br\> Pré condições: Já ter acontecido pelo menos uma partida.<br\> Fluxo Principal:<br\>

  • Árbitro clica na opção "Consultar histórico".<br\>
  • SA solicita ao Banco de dados todos os resultados de jogos armazenados.<br\>
  • Banco de dados envia uma lista das partidas com o vencedor para o SS.<br\>
  • SA 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: <br\> Fluxo Principal:<br\>

  • Árbitro seleciona "Iniciar partida".<br\>
  • SA questiona quantos jogadores realizarão a partida.<br\>
  • Árbitro informa o número de jogadores.<br\>
  • SA questiona sobre o modo operação.<br\>
  • Árbitro escolhe o modo de operação desejado.<br\>
  • SA questiona quantas caças terá no jogo.<br\>
  • Árbitro informa o número de caças.<br\>
  • SA sorteia as caças pelo mapa.<br\>
  • SA aguarda a conexão dos SS.<br\>
  • SS informa a localização do Robô ao SA.<br\>
  • SA informa o modo de jogo, quantas caças e quantos jogadores terão na partida para o SS .<br\>
  • A partida é criada.<br\>
  • SA informa a localização das caças para o SS.<br\>

<br\> Caso de uso: Conectar Robô <br\> Ator primário: SS <br\> Identificador: UCA07<br\> Sumário: SS envia solicitação de autenticação para SA.<br\> Pré condições: O Robô deve estar autenticado no SS, o Robô já deve estar cadastrado, partida deve ter sido criada.<br\> Fluxo Principal:<br\>

  • SS se conecta no SA.<br\>
  • SS envia informações do Robô para o SA.<br\>
  • SA verifica se o Robô já foi cadastrado no banco de Dados.<br\>
  • SA informa para SS que o SR esta autenticado.<br\>

Exceção: Caso o SR não tenha sido cadastrado um cadastro deverá que ser efetuado.<br\> <br\> Caso de uso: Validar caça<br\> Ator primário: SS <br\> Identificador: UCA08<br\> Sumário: SS 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\>

  • SS informa ao SA que o Robô encontrou uma caça.<br\>
  • SA informa ao Árbitro que o SS encontrou uma caça.<br\>
  • Árbitro valida a caça.<br\>
  • SA incrementa o contador de Robô que localizou a caça.<br\>
  • SA decrementa o contador de caça.<br\>
  • SA informa a todos os SS 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: SS <br\> Identificador: UCA09<br\> Sumário: SS informa a localização do SR.<br\> Pré condições: Iniciar Partida.<br\> Fluxo Principal:<br\>

  • SS envia a localização do SR ao SA

<br\> Caso de uso: Enviar atualização<br\> Ator primário: SS <br\> Identificador: UCA10<br\> Sumário: .<br\> Pré condições: Iniciar Partida.<br\> Fluxo Principal:<br\> <br\> Caso de uso: Atualizar mapa<br\> Ator primário: SS <br\> Identificador: UCA11<br\> Sumário: <br\> Pré condições: Enviar atualização, Receber atualização, Validar caça.<br\> Fluxo Principal:<br\> <br\> Caso de uso: Declarar Vencedor<br\> Ator primário: SS <br\> Identificador: UCA12<br\> Sumário: O sistema declara o vencedor da partida após a ultima caça ser localizada.<br\> Pré condições: Validar caça.<br\> Fluxo Principal:<br\>

  • SA informa a todos os SS que um dos Robôs encontrou a ultima caça.<br\>
  • SA informa ao Árbitro qual Robô é o vencedor.<br\>

<br\> Caso de uso: Terminar Partida<br\> Ator primário: SS <br\> Identificador: UCA13<br\> Sumário: O fim da partida é informado aos SS.<br\> Pré condições: Declarar Vencedor.<br\> Fluxo Principal:<br\>

  • SA informa a todos os SS que um dos Robôs encontrou a ultima caça.<br\>
  • SA informa a todos os SS que a partida acabou.<br\>

Exceção: Árbitro Termina a partida selecionando clicando na opção "Terminar partida".<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 declaro os dados da partida são armazenados.<br\> Pré condições: Declarar Vencedor.<br\> Fluxo Principal:<br\>

  • SA informa os dados da partida ao Banco de Dados.<br\>
  • Banco de dados confirma que o jogo foi salvo.<br\>
  • SA 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\>

  • SA informa os dados da partida ao Projetor.<br\>
  • 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: SS <br\> Identificador: UCA<br\> Sumário: O sistema declara o vencedor da partida após a ultima caça ser localizada.<br\> Pré condições: Validar caça.<br\> Fluxo Principal:<br\>

  • SA informa a todos os SS que um dos Robôs encontrou a ultima caça.<br\>
  • SA informa ao Árbitro qual Robô é o vencedor.<br\>
  • O jogo acaba.<br\>
  • SA informa os dados da partida para o Banco de Dados<br\>
  • Banco de Dados confirma o armazenamento.<br\>

<br\> 2 - Diferença entre Enviar atualização e Atualizar mapa.<br\>

Diagramas:

Diagrama de Caso de Uso S.A.

Sa-diagrama-caso-de-uso.png

Requisitos funcionais S.R.

Requisitos funcionais

RF01 O sistema deve permitir criação e gerência de cadastro de um robô.

ID, Senha, Cor do robô.

RF02 O sistema de deve manter um histórico das partidas realizadas.

Participantes, Vencedor, duração, pontuação.

RF03 O sistema deve ser capaz de fazer a autenticação dos robôs cadastrados.

Busca num banco de dados ID, se a ID estiver lá, verifica se a senha bate com a do banco.

RF04 os robôs devem ser capazes de operar nos modos manual e autônomo.

Troca seria realizada na mesma interface onde faz o cadastro.

RF05 O sistema deve validar e contabilizar as caças já encontradas pelo robô.

RF06 O sistema deve dar início a partida, sortear os locais das caças e informá-los aos robôs.

Quantas caças deverão ter?

RF07 O sistema deve prover uma interface de monitoramento para o robô em modo autônomo.

Um mapa mostrando as caças e a posição de cada robô?

RF08 O sistema deve prover uma interface de controle e monitoramento para os robôs em modo manual.

Estender a interface do modo autônomo.

RF09 O sistema deve permitir que, quando em modo autônomo, o robô execute os movimentos programados a partir do algoritmo implementado.

Como assim?

RF010 O sistema deve permitir pausa e reset da partida.

Por onde será feito isso?

RF011 O sistema deve permitir que os resultados do jogo sejam vistos pelos espectadores em tempo real.

Será exibido na interface de controle/monitoramento

RF012 O sistema não deve permitir que os robôs se choquem.

RF013 O sistema deve declarar um vencedor assim que todas as caças forem encontradas.

RF014 O sistema pode ter N competidores *

RF015 O sistema deve projetar informações no tabuleiro (Caças ativas, Caças encontradas, e placar)

Requisitos não funcionais

RNF01 A interface do sistema de comunicação com o usuário deve ser intuitiva.

RNF02 O tabuleiro será composto por linhas pretas e todos com cor.

Todos o que?

RNF03 O tabuleiro terá as dimensões definidas (2m x 2m).

Pode ser ajustável?

RNF04 O tabuleiro será composto por 100 quadrados de dimensões: 20cm x 20cm.

Pode ser ajustável?²

RNF05 O tabuleiro será limitado por uma borda vermelha.

RNF06 O placar mostrado aos usuários deve ser de fácil identificação.

RNF07 O robô deve ter uma cor para identificação.


Diagrama de Caso de Uso S.R

Sr-diagrama-caso-de-uso2.png

Diagrama de Caso de Uso S.S

Ss-diagrama-caso-de-uso-f.png

Diagrama de Classe: Mover

Diagrama-classe-mover.png


Requisitos funcionais S.S

Nome: Verifica Log in

Identificador: CSU01;

Sumário: SA autentica o log in do robô ;

Ator primário: SA;

Precondições:

Fluxo principal:

SA solicita a SS sua identificação;

SS responde com a identificação;

Fluxo de exceção:

Identificação não cadastrada, cadastrar identificação.


Nome: Verifica posição no tabuleiro

Identificador: CSU02;

Sumário: SA tem conhecimento da posição do robô no tabuleiro, assim como ele mesmo ;

Ator primário: SA e SR;

Precondições:

Robô já ter sido cadastrado;

O robô já ter se autenticado;

Fluxo principal:

SA recebe os dados de onde o robô está no tabuleiro;

SR toma conhecimento de sua posição;

Nome: Recebe dados

Identificador: CSU03;

Sumário: SR recebe dados da partida através do SA de início, pausa e fim da partida, validação de caças .

Ator primário: SR e SA;

Precondições:

Robô já ter sido cadastrado;

O robô já ter se autenticado;

Fluxo principal:

SA envia dados de início, pausa e fim da partida (quando um jogador ganha) e valida as caças que o robõ pegou;

SR processa os dados e define sua posição inicial e mapeia as caças do jogo.


Nome: Inicia a partida, sorteia as caças

Identificador: CSU04;

Sumário: SA inicia a partida e sorteia as caças.

Atores primários: SA;

Precondições:


Robô já ter sido cadastrado;

O robô já ter se autenticado;

Fluxo principal:

SA recebe a informação do cliente externo de que deve iniciar a partida, então sorteia as caças.;



Nome: Declara vencedor

Identificador: CSU06;

Sumário: SA faz a contagem de caças válidas e declara vencedor.

Ator primário: SA;;


Precondições:

Robô já ter sido cadastrado;

O robô já ter se autenticado;

Fluxo principal:

SA envia dados do robô que obteve o maior número de caças válidas, portanto do o vencedor.;

SA finaliza a partida..

Nome: Pause/Start

Identificador: CSU07;

Sumário: SA pausa, para ou inicia a partida de acordo com a vontade do cliente externo ou caso algum robô tenha ganhado.;

Ator primário: SA;

Precondições:

Robô já ter sido cadastrado;

O robô já ter se autenticado;

Fluxo principal:

SA verifica se cliente externo deseja iniciar a partida ou pausar a partida;

SA verifica se as caças válidas do robô;

SA verifica ganhador;

SA finaliza a partida.;

Requisitos:

Relatório de testes:

Conteúdo das Aulas:

25/02/2019 - Apresentação de seminário

Links úteis:

Página da disciplina: https://wiki.sj.ifsc.edu.br/index.php/PJI2-EngTel_(p%C3%A1gina)

  • Colocar documentação das APIs usadas*