Mudanças entre as edições de "Guilherme Anderson-PJI2-2020-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 3: Linha 3:
 
* Anderson Gaspar, e-mail: andersongasparm@gmail.com
 
* Anderson Gaspar, e-mail: andersongasparm@gmail.com
 
* Guilherme Lopes Roque, email: guilherme.lroque@gmail.com
 
* Guilherme Lopes Roque, email: guilherme.lroque@gmail.com
 
==Definições dos sujeitos==
 
 
* Sistema: Implementado pela estação meteorológica num dispositvo Raspberry e pelo servidor de fila de mensagens (Broker) num sistema linux. Este atende as requisições dos usuários primários (atua como sistema na linguagem UML) e exclusivamente no caso de uso Notificação atua como ator primário, sendo o iniciador da interação entre os sujeitos.
 
* Administrador: Ator primário representado por uma pessoa física no ambiente local do sistema de estação meteorológica, este interage diretamente com a estação meteorológica na Raspberry através do protocolo HTTP.
 
* Usuário: Ator primário representado por uma pessoa física em ambiente externo do sistema de estação meteorológica, este interage com a estação meteorológica por intermédio do Broker através do protocolo AMQP.
 
* Sensor: Ator secundário que apenas executa rotinas solicitadas inicialmente pelos atores primários através do Sistema.
 
  
 
==Levantamento de Requisitos==
 
==Levantamento de Requisitos==
Linha 23: Linha 16:
 
* RNF.01 - O usuário deve possuir um um sistema Linux com interpretador python3 conectado à Internet  para receber interagir com o sistema.
 
* RNF.01 - O usuário deve possuir um um sistema Linux com interpretador python3 conectado à Internet  para receber interagir com o sistema.
 
* RNF.02 - O software desenvolvido para a estação Raspberry deve ser modular, prevendo futuras melhorias incrementais, como a compatibilidade com outros sensores;
 
* RNF.02 - O software desenvolvido para a estação Raspberry deve ser modular, prevendo futuras melhorias incrementais, como a compatibilidade com outros sensores;
 +
 +
 +
==Definições dos sujeitos==
 +
 +
* Sistema: Implementado pela estação meteorológica num dispositvo Raspberry e pelo servidor de fila de mensagens (Broker) num sistema linux. Este atende as requisições dos usuários primários (atua como sistema na linguagem UML) e exclusivamente no caso de uso Notificação atua como ator primário, sendo o iniciador da interação entre os sujeitos.
 +
* Administrador: Ator primário representado por uma pessoa física no ambiente local do sistema de estação meteorológica, este interage diretamente com a estação meteorológica na Raspberry através do protocolo HTTP.
 +
* Usuário: Ator primário representado por uma pessoa física em ambiente externo do sistema de estação meteorológica, este interage com a estação meteorológica por intermédio do Broker através do protocolo AMQP.
 +
* Sensor: Ator secundário que apenas executa rotinas solicitadas inicialmente pelos atores primários através do Sistema.
  
 
==Casos de uso==
 
==Casos de uso==

Edição das 13h35min de 27 de setembro de 2020

Responsaveis

  • Anderson Gaspar, e-mail: andersongasparm@gmail.com
  • Guilherme Lopes Roque, email: guilherme.lroque@gmail.com

Levantamento de Requisitos

Funcionais:

  • RF.01 O sistema deve possuir uma estação Raspberry que servirá como gerenciador de sensores.
  • RF.02 O sistema deve permitir a instalação e remoção física de sensores da estação;
  • RF.03 O sistema deve possuir um servidor WEB (WSGI) para servir de interface com o administrador com o sistema;
  • RF.04 O sistema deve possuir um servidor de fila de mensagens (Broker) para as notificações, leitura e configuração dos limiares dos sensores através de redes externas.
  • RF.05 O sistema deve permitir a configuração valores limites de leitura dos sensores para gatilho das notificações da estação.
  • RF.06 O sistema suportar inicialmente os seguintes sensores:
  1. DHT11

Não funcionais:

  • RNF.01 - O usuário deve possuir um um sistema Linux com interpretador python3 conectado à Internet para receber interagir com o sistema.
  • RNF.02 - O software desenvolvido para a estação Raspberry deve ser modular, prevendo futuras melhorias incrementais, como a compatibilidade com outros sensores;


Definições dos sujeitos

  • Sistema: Implementado pela estação meteorológica num dispositvo Raspberry e pelo servidor de fila de mensagens (Broker) num sistema linux. Este atende as requisições dos usuários primários (atua como sistema na linguagem UML) e exclusivamente no caso de uso Notificação atua como ator primário, sendo o iniciador da interação entre os sujeitos.
  • Administrador: Ator primário representado por uma pessoa física no ambiente local do sistema de estação meteorológica, este interage diretamente com a estação meteorológica na Raspberry através do protocolo HTTP.
  • Usuário: Ator primário representado por uma pessoa física em ambiente externo do sistema de estação meteorológica, este interage com a estação meteorológica por intermédio do Broker através do protocolo AMQP.
  • Sensor: Ator secundário que apenas executa rotinas solicitadas inicialmente pelos atores primários através do Sistema.

Casos de uso

Caso de uso: Registrar sensor

Ator primário: Administrador.

Ator secundário: Sensor.


Fluxo principal:

  • O Administrador faz a instalação física do sensor na placa da Raspberry Pi.
  • O Administrador envia uma requisição HTTP contendo os dados do sensor a ser registrado diretamente para a estação meteorológica;
  • O sistema configura e ativa o sensor e responde ao Administrador uma mensagem HTTP de sucesso;

Caso de uso: Remover sensor

Ator primário: Administrador

Ator secundário: Sensor.


Fluxo principal:

  • O Administrador envia uma requisição HTTP contendo o identificador do sensor a ser removido diretamente para a estação meteorológica.
  • A estação meteorológica remove o sensor de seus registros e rotinas e responde o Administrador uma mensagem HTTP de sucesso.
  • O Administrador faz desconexão física do sensor na placa da Raspberry Pi

Caso de uso: Alterar registro (externamente)

Ator primário: Usuário

Atores secundários: Sensor

Fluxo principal:

  • O usuário envia uma requisição via AMQP contendo os dados do sensor a ser atualizado para o Broker;
  • O Broker executa suas rotinas internas de enfileiramento e roteamento e repassa a requisição para a estação meteorológica.
  • A estação meteorológica altera os registros do sensor e responde o usuário uma com mensagem de sucesso através do Broker;

Caso de uso: Alterar registro (localmente)

Ator primário: Administrador

Atores secundários: Sensor

Fluxo principal:

  • O Administrador envia uma requisição HTTP contendo os dados do sensor a ser atualizado diretamente para a estação meteorológica;
  • A estação meteorológica altera os registros do sensor e responde o administrador uma mensagem HTTP de sucesso;

Caso de uso: Requisitar dados (externamente)

Ator primário: Usuário

Atores secundários: Sensor.

Fluxo principal:

  • O usuário envia uma requisição via AMQP contendo os dados do sensor a ser lido para o Broker;
  • O Broker executa suas rotinas internas de enfileiramento e roteamento e repassa a requisição para a estação meteorológica.
  • A estação meteorológica lê o sensor e responde o usuário com os dados através do Broker;

Caso de uso: Requisitar dados (localmente)

Ator primário: Administrador

Atore secundários: Sensor.

Fluxo principal:

  • O administrador envia uma requisição HTTP contendo os dados do sensor a ser lido para a estação meteorológica;
  • A estação meteorológica lê o sensor e responde o usuário uma mensagem HTTP de sucesso com os dados lidos;

Caso de uso: Notificação

Ator primário: Estação Meteorológica

Atores secundários:Sensor e Usuário.

Fluxo principal:

  • O sistema identifica um valor fora dos limites configurados para o sensor através de sua rotina interna de leitura.
  • O sistema envia para todos os usuários a notificação através do Broker.

Diagrama de casos de uso

Diagrama de casos de uso

Diagrama de Implementação

Diagrama de Implementação

Diagrama de classes

Diagrama de casos de uso

Modelagem de interações

Notificação

Notificação

Sequência:

  • O usuário se inscreve no Broker para receber notificações através do comando 'amqp-listen'.
  • A instancia da classe AMQPListen invocada pelo comando 'amqp-listen' realiza alguns procedimentos com o Broker, estes representados pela macro 'subscribe', e fica à espera de notificações.
  • A estação meteorológica implementada pela classe 'Station' realiza uma leitura do sensor que está fora dos limites máximo e mínimo configurados e então publica a notificação no Broker, através do método 'basic_publish()'.
  • O Broker disponibiliza (macro 'queue') a publicação da estação meteorológica para todos usuários que se inscreveram.
  • A classe AMQPListen consome (macro 'consume') a publicação disponibilizada pelo Broker e notifica o Usuário através da impressão da mensagem no terminal de execução do comando.

Leitura externa

Diagrama de Leitura externa


Sequência:

  • O usuário faz uma requisição de leitura de sensor ao Broker através do comando 'amqp-request -r'.
  • A instancia AMQPRequest invocada através do comando 'amqp-request' publica no Broker a requisição do Usuário através do método 'basic_publish()'.
  • O Broker disponibiliza (macro 'queue') a publicação do Usuário para a estação meteorológica.
  • A estação meteorológica consome (macro 'consume') a publicação disponibilizada pelo Broker e lê o sensor através do método 'read()'.
  • A estação meteorológica retorna o valor lido para o Broker.
  • O Broker retorna o valor recebido para o Usuário.

Atualização Externa

Configuração Externa

Sequência:

  • O usuário faz uma requisição de configuração do sensor ao Broker através do comando 'amqp-request -c'.
  • A instancia AMQPRequest invocada através do comando 'amqp-request' publica no Broker a requisição do Usuário através do método 'basic_publish()'.
  • O Broker disponibiliza (macro 'queue') a publicação do Usuário para a estação meteorológica.
  • A estação meteorológica consome (macro 'consume') a publicação disponibilizada pelo Broker e atualiza os registros do sensor.
  • A estação meteorológica retorna uma mensagem de sucesso ao Broker.
  • O Broker retorna a mensagem recebida para o Usuário.

Atualização Local

Configuração Local

Configuração|Leitura Local

Leitura Local