Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
AlefMemTav committed Aug 16, 2024
2 parents ca9983d + 8f66729 commit affa7f7
Show file tree
Hide file tree
Showing 23 changed files with 837 additions and 10 deletions.
283 changes: 283 additions & 0 deletions docs/ArquiteturaReutilizacao/4.1.0.DAS.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ O DAS inclui várias visões arquiteturais, como a Visão Lógica, que detalha a

O artefato em questão tem como objetivo representar a arquitetura de software do projeto MyMarket através do modelo arquitetural **4+1** que é uma abordagem estruturada para descrever a arquitetura de software utilizando cinco vistas diferentes para capturar e abordar as diversas preocupações dos stakeholders. Este modelo foi proposto por Philippe Kruchten em 1995 e é amplamente utilizado na engenharia de software.

![alt text](image.png)
![image](https://github.com/user-attachments/assets/93d8613c-e102-48cb-8671-bf2d294f9a7d)

<h6 align = "center">Figura 01: Exemplo de modelo arquitetural 4+1. Fonte: Mateus Orlando, Pedro Lucas e Thiago Vivan.</h6>

Expand Down
File renamed without changes.
106 changes: 106 additions & 0 deletions docs/ArquiteturaReutilizacao/4.1.3.DAS3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# 4.1.2 Visão de Dados



A visão de dados é um componente essencial na arquitetura de sistemas, responsável por descrever a estrutura, organização e fluxo dos dados dentro de uma aplicação. Ela fornece uma compreensão detalhada de como os dados são armazenados, acessados e manipulados, servindo como um guia para garantir a integridade, consistência e segurança das informações no sistema.
<br>

No projeto em questão, foram desenvolvidos um Modelo Entidade-Relacionamento (ME-R), que foi validado pelo Product Owner do projeto, depois disso foi feito um Diagrama Entidade-Relacionamento (DE-R) e um Diagrama Lógico de Dados (DLD). O ME-R e o DE-R representam graficamente as entidades do sistema e suas relações, enquanto o DLD detalha a estrutura lógica dos dados, mostrando como eles serão organizados e manipulados no banco de dados. Esses artefatos são fundamentais para garantir que a modelagem dos dados esteja alinhada com os requisitos do sistema, facilitando a implementação e manutenção.



## 4.1.2.1 ME-R
No projeto em questão, foi desenvolvido um Modelo Entidade-Relacionamento (ME-R) como parte da visão de dados. O ME-R foi criado com o objetivo de representar as principais entidades e seus relacionamentos no sistema, servindo como uma base fundamental para a estruturação do banco de dados.

Após a elaboração do ME-R, foi realizada uma validação por meio de uma entrevista online com o Product Owner (João Costa) do projeto. A entrevista ocorreu via Microsoft Teams e teve como propósito garantir que o modelo atendesse aos requisitos e expectativas do cliente, bem como identificar possíveis ajustes ou melhorias. Essa validação foi essencial para assegurar o alinhamento entre o modelo de dados proposto e as necessidades do projeto, contribuindo para a qualidade e a eficácia da solução desenvolvida.

Gravação da Reunião de validação do ME-R : https://www.youtube.com/watch?v=p-feHWuKib0

<br>

### Entidades:
- CLIENTE
- ENDERECO
- TELEFONE
- PRODUTO
- AVALIACAO
- VENDA
- FORNECEDOR
- PRODUTOCOR
- PRODUTOTAMANHO
- PRODUTOCATEGORIA

<br>

### Atributos:
- CLIENTE (senha, nome, cpf, rg, dataNascimento, email)
- ENDERECO(cep, rua, numero, complemento)
- TELEFONE(ddi, ddd, numero)
- PRODUTO (idProduto, nome, categoria, descricao, valorAquisicao, valorVenda, imagem,quantidade, cnpjFornecedor )
- AVALIACAO (cpfCliente, idProduto, comentario, dataPostagem, nota)
- VENDA (idVenda, cpfCliente, valor, descricao)
- FORNECEDOR(nome, cnpj, email, numero)
- PRODUTOCOR ((hexadecimal), cor,)
- PRODUTOTAMANHO ((centimetros), tamanho)
- PRODUTOCATEGORIA ((descricao), categoria)

<br>

### Relacionamentos:
- CLIENTE - participa - VENDA

cardinalidade 1:m
- VENDA - contém - PRODUTO

cardinalidade n:m
- CLIENTE - possui - ENDERECO

cardinalidade n:m
- CLIENTE - detém - TELEFONE
cardinalidade 1:n
- CLIENTE - faz - AVALIACAO

cardinalidade 1:n
- FORNECEDOR - tem - TELEFONE

cardinalidade 1:n
- PRODUTO - fornecido - FORNECEDOR

cardinalidade n:m
- PRODUTO - tem - PRODUTOCOR

cardinalidade n:m
- PRODUTO - disponivel - PRODUTOTAMANHO

cardinalidade n:m
- PRODUTO - pertence - PRODUTOCATEGORIA

cardinalidade n:m

## 4.1.2.2 DE-R

O DE-R, desenvolvido no BRModelo com base no ME-R depois de validado pelo P.O, capturou as principais entidades e seus relacionamentos, servindo como base para a modelagem do banco de dados.

<br>

![DE-R](./src/DER.jpeg)
<h6 align = "center">Figura 1: Diagrama Entidade-Relacionamento</h6>


## 4.1.2.3 DLD

A partir do diagrama entidade-relacionamento, foi possível gerar o DLD, que detalha a implementação lógica das entidades e suas interações no banco de dados relacional.

![DLD](./src/DLD.jpeg)
<h6 align = "center">Figura 2: Diagrama Lógico de Dados </h6>
Referências

>PRESSMAN, R. S. Engenharia de Software: uma abordagem profissional. 7. ed. Porto Alegre: AMGH, 2016.
Versionamento

| Versão | Alteração | Responsável | Revisor | Data de realização | Data de revisão |
| :------: | :---: | :-----: | :----: | :----: | :-----: |
| 1.0 | Inicio da estrutura do documento | [Guilherme Oliveira](https://github.com/GG555-13)|[Rodrigo Wright](https://github.com/RodrigoWright) | 14/08/2024 | 14/08/2024 |
| 1.1 | Adicionando o texto ME-R, DE-R e DLD | [Guilherme Oliveira](https://github.com/GG555-13)|[Rodrigo Wright](https://github.com/RodrigoWright) | 14/08/2024 | 14/08/2024 |
| 1.2 | Participantes da entrevista e texto | [Guilherme Oliveira](https://github.com/GG555-13) [Rodrigo Wright](https://github.com/RodrigoWright) [JoãoCosta](https://github.com/jvcostta) |[Rodrigo Wright](https://github.com/RodrigoWright) | 15/08/2024 | 15/08/2024 |
| 1.3 | Elaboração e adição do DE-R e DLD | [Rodrigo Wright](https://github.com/RodrigoWright) |[Guilherme Oliveira](https://github.com/GG555-13) | 15/08/2024 | 15/08/2024 |
187 changes: 187 additions & 0 deletions docs/ArquiteturaReutilizacao/4.1.4.DAS4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
# Documento de Arquitetura de Software (DAS) - Chatbot de Atendimento

## O documento em questão foi criado e desenvolvido pelos alunos [Miguel de Frias](https://github.com/migueldefrias) e [Guilherme Basilio](https://github.com/GuilhermeBES)

## 1. Introdução

O **Documento de Arquitetura de Software (DAS)** É um documento crucial no desenvolvimento de sistemas, oferecendo uma visão aprofundada da estrutura e organização do sistema. Ele detalha os principais componentes, suas interações e os princípios de design que orientam sua construção, ajudando a comunicar de forma eficaz entre todas as partes envolvidas e assegurando uma compreensão compartilhada do sistema.

Este DAS é focado no sistema de gerenciamento de um chatbot de atendimento para o projeto "My Market", uma plataforma de e-commerce para uma loja. O documento segue o modelo arquitetural 4+1, que inclui cinco visões diferentes para capturar e abordar diversas preocupações dos stakeholders, conforme proposto por Philippe Kruchten em 1995.

## 2. Objetivo

Este documento tem como objetivo ilustrar a arquitetura do sistema de gerenciamento de chatbot de atendimento do projeto "MyMarket", empregando o modelo arquitetural **4+1**. A abordagem sistemática aborda as diferentes preocupações dos stakeholders e oferece uma visão clara e acessível do sistema.

![Exemplo de modelo arquitetural 4+1](image.png)

<h6 align = "center">Figura 1: Exemplo de modelo arquitetural 4+1. Fonte: Mateus Orlando, Pedro Lucas e Thiago Vivan.</h6>

## 3. Visão de Casos de Uso

A visão de casos de uso ilustra como o sistema de gerenciamento do chatbot de atendimento interage com os usuários e outros sistemas. Cada caso de uso especifica uma funcionalidade particular e as interações necessárias para executar essa funcionalidade.

Casos de uso elicitados:
<center>

| Código | Descrição do Caso de Uso |
|---------|--------------------------------------------------|
| UC01 | Consulta de Produtos |
| UC02 | Acompanhamento de Pedido |
| UC03 | Perguntas Frequentes (FAQ) |
| UC04 | Suporte Técnico |
| UC05 | Recomendações Personalizadas |
| UC06 | Trocas e Devoluções |
| UC07 | Suporte em Tempo Real |


Tabela 2: Casos de uso elicitados

</center>

### Diagrama de Casos de Uso (DCU)

O diagrama de caso de uso pode ser visualizado abaixo:
<div align = "center"><img src="https://raw.githubusercontent.com/UnBArqDsw2024-1/2024.1_G7_My_Market/main/docs/Imagens/Diagramas/Miguel_GuilhermeB_UseCases_DAS.jpeg" alt="Diagrama de Casos de Uso">
<p>Figura 2 - Diagrama de Casos de Uso<br> Autor: Guilherme Basilio e Miguel de Frias</p></div>

## 4. Visão Lógica

A Visão Lógica apresenta a estrutura estática do sistema, detalhando a organização dos principais componentes, como classes e pacotes, e suas interações. Ela é fundamental para entender as funcionalidades e a arquitetura interna do sistema.

### 4.1 Diagrama de Classes

O diagrama de classes exibe a estrutura do sistema de gerenciamento do chatbot de atendimento, detalhando as classes, seus atributos, métodos e as relações entre elas. Esse diagrama é essencial para o desenvolvimento e a documentação do sistema.

O diagrama de classes pode ser visualizado abaixo:
<div align = "center"><img src="https://raw.githubusercontent.com/UnBArqDsw2024-1/2024.1_G7_My_Market/main/docs/Imagens/Diagramas/Miguel_GuilhermeB_DiagramaDeClasses_DAS.png" alt="Diagrama de Classes">
<p>Figura 3 - Diagrama de Classes<br> Autor: Guilherme Basilio e Miguel de Frias</p></div>

### 4.2 Diagrama de Estados

Um diagrama de estados é uma representação gráfica que descreve os estados possíveis de um objeto ao longo do tempo, juntamente com as transições entre esses estados. Ele mostra como o sistema reage a eventos ou condições, detalhando as mudanças de estado de um objeto específico. Usado frequentemente para modelar o comportamento dinâmico de sistemas, o diagrama ajuda a entender e projetar processos, especialmente aqueles que envolvem ciclos de vida, como o processamento de pedidos ou interações de usuários.

O diagrama de estados a seguir, ilustra os diferentes estados que ocorrem durante a funcionalidade Troca e Devolução, oferecida pelo chatbot.

*Fluxo de Estados do Chatbot:*
<div align = "center"><img src="https://raw.githubusercontent.com/UnBArqDsw2024-1/2024.1_G7_My_Market/main/docs/Imagens/Diagramas/Miguel_GuilhermeB_DiagramaDeEstados_DAS.png" alt="Diagrama de Estados">
<p>Figura 4 - Diagrama de Estados<br> Autor: Guilherme Basilio e Miguel de Frias </p></div>

### 4.3 Diagrama de Pacotes

O diagrama de pacotes organiza e representa a estrutura modular do chatbot de atendimento, destacando a forma como os pacotes são agrupados e as dependências entre eles.

O diagrama de pacotes pode ser visualizado a seguir:

<div align = "center"><img src="https://raw.githubusercontent.com/UnBArqDsw2024-1/2024.1_G7_My_Market/main/docs/Imagens/Diagramas/Miguel_GuilhermeB_DiagramaDePacotes_DAS.png" alt="Diagrama de Pacotes">
<p>Figura 5 - Diagrama de Pacotes<br> Autor: Guilherme Basilio e Miguel de Frias</p></div>

## 5. Visão de Processo

A visão de processo detalha como as atividades fundamentais do chatbot de atendimento são realizadas, incluindo as interações e funções principais.

### Usuário

| Nome | Descrição | Destino |
|---------------------------|-----------------------------------------------|---------------------------|
| u1: iniciarConversa() | Inicia uma conversa com o chatbot | Chatbot de Atendimento |
| u2: fazerPergunta() | Envia uma pergunta para o chatbot | Chatbot de Atendimento |
| u3: fornecerFeedback() | Fornece feedback sobre a conversa | Chatbot de Atendimento |
| u4: encerrarConversa() | Finaliza a interação com o chatbot | Chatbot de Atendimento |

*Tabela 3: Descrição dos processos do Usuário*

### Sistema de Atendimento

| Nome | Descrição | Destino |
|---------------------------|-----------------------------------------------|---------------------------|
| sa1: processarPergunta() | Processa as perguntas enviadas pelos usuários | Chatbot de Atendimento |
| sa2: gerarResposta() | Gera respostas baseadas nas perguntas | Chatbot de Atendimento |
| sa3: registrarFeedback() | Registra o feedback fornecido pelos usuários | Banco de Dados |
| sa4: finalizarConversa() | Finaliza a conversa e armazena informações | Banco de Dados |

*Tabela 4: Descrição dos processos do Sistema de Atendimento*

## 6. Visão de Implementação

A Visão de Implementação detalha a organização do sistema em termos de módulos e pacotes de código. Ela ilustra como os componentes estão estruturados e como interagem entre si para garantir uma implementação eficiente.

### 6.1 Diagrama de Componentes

O diagrama de Componentes pode ser visualizado abaixo:
<div align = "center"><img src="https://raw.githubusercontent.com/UnBArqDsw2024-1/2024.1_G7_My_Market/main/docs/Imagens/Diagramas/Miguel_GuilhermeB_DiagramaDeComponentes_DAS%20.png" alt="Diagrama de Componentes">
<p>Figura 6 - Diagrama de Componentes<br> Autor: Guilherme Basilio e Miguel de Frias</p></div>

### 6.2 Explicação dos Componentes do Chatbot

#### Chatbot Engine:

- Dialogue Management: Gerencia o fluxo de conversa e o estado da interação com o usuário.
- Intent Recognition: Identifica a intenção do usuário com base nas entradas fornecidas.
- Response Generation: Gera respostas adequadas com base nas intenções identificadas.

#### Integration APIs:

- User Data API: Interface para acessar e manipular dados de usuários.
- Product Data API: Interface para acessar e manipular dados de produtos.
- Order Data API: Interface para acessar e manipular dados de pedidos.

Esses componentes permitem que o chatbot interaja com o sistema existente de forma eficaz, acessando dados relevantes e realizando operações necessárias para atender às solicitações dos usuários.


## 7. Visão de Implantação

A Visão de Implantação descreve a distribuição física dos componentes de software e como eles interagem em um ambiente de produção.

Os diagramas de implantação são fundamentais para arquitetos de software e engenheiros de sistemas, pois permitem visualizar e planejar a distribuição física dos componentes de software. Eles asseguram que todos os aspectos físicos da implantação do sistema sejam compreendidos e documentados, facilitando a comunicação entre as partes interessadas e garantindo uma implementação bem-sucedida.

Este documento apresenta a arquitetura de implantação de um sistema distribuído, com ênfase em eficiência, segurança e escalabilidade. O sistema é organizado em vários nós principais: Cliente, Proxy, Web Server e Database, cada um contendo componentes e entidades específicas. Vale ressaltar que o diagrama foi criado sem a definição completa das tecnologias a serem utilizadas e pode ser ajustado conforme as decisões do grupo evoluem.

<div align = "center"><img src="https://raw.githubusercontent.com/UnBArqDsw2024-1/2024.1_G7_My_Market/main/docs/Imagens/Diagramas/Miguel_GuilhermeB_DiagramaDeImplantacao_DAS.png" alt="Diagrama de implantação" alt="Diagrama de implantação">
<p>Figura 7 - Diagrama de Implantação<br> Autor: Guilherme Basilio e Miguel de Frias </p></div>

## 7. Arquitetura de Implantação

### 7.1 Nó Cliente

**Componentes:**
- **Interface de Chat:** Permite ao usuário interagir com o chatbot de atendimento.

**Comunicação:**
- Conecta-se ao servidor através de HTTPS para garantir a segurança da comunicação.

### 7.2 Nó Servidor de Aplicação

**Componentes:**
- **Gerenciamento de Conversas:** Lida com a lógica e fluxo das interações do chatbot.
- **API de Integração:** Facilita a comunicação com outros sistemas e serviços externos.

**Comunicação:**
- Estabelece conexão com o banco de dados utilizando SQL para armazenar e recuperar informações.

### 7.3 Nó Banco de Dados

**Componentes:**
- **MySQL:** Armazena dados relacionados às interações do chatbot, histórico de conversas e perfis de usuários.

### 7.4 Fluxo de Dados e Controle

- **Do Cliente para o Servidor:** As interações do usuário são enviadas ao servidor por meio de HTTPS.
- **Do Servidor para o Banco de Dados:** O servidor realiza consultas e atualizações no banco de dados conforme necessário.
- **Respostas ao Cliente:** O servidor processa as informações e envia as respostas de volta para o cliente.

### Conclusão

A arquitetura descrita para o sistema de chatbot de atendimento oferece uma solução eficaz e escalável, com foco em segurança e usabilidade. A visão detalhada da distribuição física e das interações entre os componentes proporciona uma base sólida para a implementação e manutenção contínua do sistema.

## Referências

> **Arquitetura e Desenho de Software - Aula DAS**. Material de apoio em slides. Milene Serrano.
## Histórico de Versões

| Versão | Data | Descrição | Autor(es) | Revisor(es) |
| ------ | ----------- | ----------- | --------- | ----------- |
| `1.0` | 12/08/2024 | Criação da estrutura do artefato | [Miguel de Frias](https://github.com/migueldefrias) e [Guilherme Basilio](https://github.com/GuilhermeBES)| [Miguel de Frias](https://github.com/migueldefrias) |
| `2.0` | 12/08/2024 | Desenvolvimento do Artefato | [Miguel de Frias](https://github.com/migueldefrias) e [Guilherme Basilio](https://github.com/GuilhermeBES) | [Miguel de Frias](https://github.com/migueldefrias) |
| `3.0` | 12/08/2024 | Adição do diagrama de Casos de Uso | [Miguel de Frias](https://github.com/migueldefrias) e [Guilherme Basilio](https://github.com/GuilhermeBES)| [Miguel de Frias](https://github.com/migueldefrias) |
| `4.0` | 15/08/2024 | Adição dos diagramas restantes | [Miguel de Frias](https://github.com/migueldefrias) e [Guilherme Basilio](https://github.com/GuilhermeBES) | [Guilherme Basilio](https://github.com/GuilhermeBES)|
21 changes: 21 additions & 0 deletions docs/ArquiteturaReutilizacao/4.1.sumario.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Sumário DAS

O grupo se dividiu em pequenos grupos de forma que cada grupo desenvolvesse um docoumento DAS e depois criaríamos um documento único, que uniria a ideia de cada grupo.

**Ressalto que houve um abandono e falta de compromisso de alguns membros nessa entrega e apenas 4 grupos participaram o que dificultou a realização da mesma.**

Dessa maneira, segue o hyperlink do DAS de cada grupo:

| Grupo | Visão |
|-------------------------------------------------|-------------------------------------------------------------------------|
| [Mateus Orlando](https://github.com/MateusPy), [Pedro Lucas](https://github.com/AlefMemTav) e [Thiago Vivan](https://github.com/thiago-vivan) | - |
| [Guilherme Nishimura](https://github.com/Guilherme-Nishi) e [Pedro Henrique](https://github.com/pehenobra2) | - |
| [Miguel de Frias](https://github.com/migueldefrias) e [Guilherme Basilio](https://github.com/GuilhermeBES) | - |
| [Guilherme Oliveira](https://github.com/GG555-13)|[Rodrigo Wright](https://github.com/RodrigoWright) | - |


## Versionamento

| Versão | Alteração | Responsável | Revisor | Data de realização |
| :------: | :---: | :-----: | :----: | :----: |
| 1.0 | Criação do sumário do DAS | [Mateus Orlando](https://github.com/MateusPy) | - | 15/08/2024 |
Loading

0 comments on commit affa7f7

Please sign in to comment.