Histórico de revisão

Data Versão Alteração Autor
10/08/2021 0.1 Abertura do documento de Arquitetura Victor Eduardo
21/08/2021 0.2 Definição de tecnologias, e diagrama arquitetural Victor Eduardo, Matheus Raphael
08/09/2021 0.3 Correção de pequenos erros presentes no documento Victor Eduardo
11/09/2021 0.4 Correção de pequenos erros presentes no documento Victor Eduardo
22/09/2021 0.5 Correção do desenho arquitetural e adição do diagrama de casos de uso Victor Eduardo

1. Introdução

1.1 Finalidade

Este documento tem como finalidade apresentar a arquitetura do projeto ChatBot, de forma que fique de fácil entedimento a estrututra arquitetural do projeto, e sejam mostradas todas as decisões relacionadas a ela.

1.2 Escopo

Essa documentação engloba as funções visadas pelo projeto, além das tecnologias usadas, seu diagrama de relações e casos de uso. Engloba também algumas outras informações técnicas como características de desempenho e qualidade. O projeto vem sendo desenvolvido por alunos da UNB-FGA, na disciplina MDS.

1.3 Definições, acrônimos e abreviações

Abreviação Significado
API Application Programming Interface
FGA Faculdade do Gama
MDS Métodos de Desenvolvimento de Software
NLU Natural-language understanding
UNB Universidade de Brasília

1.4 Referências

  • Chat Bot. Disponível em https://github.com/fga-eps-mds/2021.1-AlligaBot. Acesso em 10/08/2021.
  • Como documentar a Arquitetura de Software. Disponível em http://www.linhadecodigo.com.br/artigo/3343/como-documentar-a-arquitetura-de-software.aspx. Acesso em 10/08/2021.
  • Documento de Arquitetua GloriaBot. Disponível em: https://github.com/fga-eps-mds/2019.2-GloriaBot/blob/master/docs/DocumentoDeArquitetura.md. Acesso em 10/08/2021.
  • Documento de Arquitetura Tino. Disponível em: https://github.com/fga-eps-mds/2019.1-Tino/blob/master/docs/documento-de-arquitetura.md. Acesso em 10/08/2021.
  • Documento de Arquitetura Vamos Cuidar. Disponível em: https://fga-eps-mds.github.io/2020.1-VC_Usuario/#/docs/Documento_de_Arquitetura. Acesso em 10/08/2021.

1.5 Visão Geral

Este documento está dividído em 6 grandes tópicos, com subdivisões, com o objetivo final de detalhar as características arquiteturais do projeto, bem como seus requisitos e motivações:

  Tópico Descrição
1 Introdução Fornece ao leitor uma visão geral do conteúdo abordado no documento
2 Representação Arquitetural Detalha a arquitetura utilizada no projeto e como ela está organizada
3 Metas e Restrições da Arquitetura Descreve os objetivos do projeto, bem como suas restrições, do ponto de vista arquitetural
4 Visão dos Casos de Uso Descreve as partes significativas do ponto de vista da arquitetura do modelo de casos de uso
5 Visão Lógica Descreve as partes significativas do ponto de vista da arquitetura do modelo de design
6 Tamanho e Desempenho Descreve as características de desempenho do Software, bem como as restrições estabelecidas e possíveis falhas

2. Representação da Arquitetura

Captura de tela de 2021-09-21 14-29-56

A representação arquitetural do ciclo de funcionamento está explicitada na imagem acima, e explicada por meio do passo a passo abaixo: 1 - O ciclo começa quando o usuário envia uma mensagem para o AlligaBot; 2 - Após isso a mensagem é repassada ao bot onde primeiro a mensagem passa pelo Rasa NLU que processa a mensagem; 3 - Depois, no Rasa Core, é feita a etapa de identificar a intenção do usuário; 4 - O Rasa escolherá a resposta mais adequada através do Rasa Actions; 5 - E por último retornará tal resposta ao usuário via Telegram;

Obs.: Por se tratar de um ChatBot, o projeto conta apenas com a parte de Back-end, realizada através do Rasa, uma vez que o Front-end seria exatamente a interface do app Telegram que é responsável pela interação com o usuário, ou seja receber a mensagem do usuário e passá-la ao bot, e de mostrar ao usuário o retorno dado pelo bot.

2.1 Tecnologias

2.1.1 Rasa

Captura de tela de 2021-08-21 16-00-44

Para a construção do sistema usaremos o Rasa, um framework utilizado para construção de bot’s de conversação. A escolha dele foi feita por ser uma alternativa open source, robusta e de fácil uso para implementação, a escolha de seu uso foi feita pelos tecnologistas que o consideraram a melhor opção para o desenvolvimento do projeto. O framework conta com 3 principais componentes, o Rasa NLU que é responsável por processar a mensagem enviada pelo usuário, o Rasa Core que é responsável por identificar a intenção do usuário e o Rasa Actions, que dada a intenção do usuário, este escolhe a resposta mais adequada a se retornar ao usuário. O Rasa aprende de acordo com que for sendo treinado, através de seu machine learning, e através do NLU consegue-se fazer também um bot “mais humano”.

2.1.2 Telegram

telegram

O local o qual o usuário poderá interagir com o bot será no Telegram sendo ele um app de troca de mensagens. A implementação de bot’s à plataforma é gratuita e disponibilizada pelo próprio app.

2.1.3 Python

python

A linguagem de programação a ser utilizada no bot será o Python, já que o Rasa também a utiliza.

3. Metas e restrições de Arquitetura

3.1 Metas

O projeto aqui apresentado trata-se de um chatbot integrado a plataforma Telegram e tem como função informar ao usuário acerca dos conteúdos sobre a COVID-19 com informações fornecidas, dentre outros, pelo site Corona Cidades, sobre como prevenir o contágio, gestão pública, e informações relacionadas à vacinação na região do usuário.

3.2 Restrições

  • Possuir conexão com a internet
  • Dispositivo com acesso ao Telegram
  • O sistema entenderá apenas mensagens em Português - BR

3.3 Requisitos não funcionais

  • O sistema deve possuir integração com a plataforma Telegram
  • O sistema deve conversar com o usuário em linguagem natural
  • O sistema deve ser capaz de receber a localização do usuário, quando necessário
  • O bot deve ser treinado a fim de conseguir atender ao máximo de usuários possíveis

4. Visão dos Casos de Uso

4.1 Diagrama de Casos de Uso

Diagrama de casos de uso

4.2 Atores de Casos de Uso

Ator Descrição
Usuário O usuário poderá interagir com o bot através do chat da plataforma Telegram, utilizando linguagem natural

4.3 Descrições de Casos de Uso

Épico Caso de uso Descrição
E1 Sobre o bot Será uma epic para ser uma informação inicial, onde o usuário terá o primeiro contato com o bot e terá uma breve explicação sobre suas funcionalidades
E2 Informações sobre covid Será uma epic para informar o usuário e tirar dúvidas gerais sobre a covid
E3 Lembrete programado Será uma epic para criar lembretes programados

Informações mais detalhadas dos épicos podem ser encontradas no documento de Backlog do Produto.

5. Visão Lógica

5.1 Diagrama de Pacotes

  • O pacote 2021.1-AlligaBot é o pacote principal do projeto e contém todos os outros sub-pacotes
  • No pacote bot é o local onde está sendo desenvolvido o bot
  • No pacote docs pode ser encontrada toda a documentação relacionada ao projeto
  • No pacote gerencia está todo o gerenciamento de sprints de cada time

6. Tamanho e desempenho

Este bot atuará primeiramente no Telegram, seu tamanho e desempenho serão comuns com aplicações semelhantes de ChatBots que utilizam a tecnologia Rasa. O desempenho poderá ser afetado devido a serviços externos, como consultas de dados sobre vacinações ou instabilidades de sistemas.