Skip to content

Commit

Permalink
arquiterura
Browse files Browse the repository at this point in the history
  • Loading branch information
EmivaltoJrr committed Jun 19, 2024
1 parent b166f07 commit a861889
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 53 deletions.
162 changes: 109 additions & 53 deletions docs/Arquitetura/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@



<title>Arquitetura - Documentação UnbHub</title>
<title>Arquitetura - Documentação VEGA</title>



Expand Down Expand Up @@ -338,7 +338,7 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>

<li class="md-nav__item">
<a href="#visao-geral" class="md-nav__link">
<a href="#Definições" class="md-nav__link">
<span class="md-ellipsis">
Visão Geral
</span>
Expand All @@ -347,46 +347,54 @@
</li>

<li class="md-nav__item">
<a href="#componentes-principais" class="md-nav__link">
<a href="#Justifique-da-escolha" class="md-nav__link">
<span class="md-ellipsis">
Componentes Principais
Justifique da escolha
</span>
</a>

<nav class="md-nav" aria-label="Componentes Principais">
<nav class="md-nav" aria-label="Justifique da escolha">
<ul class="md-nav__list">

<li class="md-nav__item">
<a href="#1-frontend" class="md-nav__link">
<a href="#Separação-de-Responsabilidades:" class="md-nav__link">
<span class="md-ellipsis">
1. Frontend
Separação de Responsabilidades:
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#2-backend" class="md-nav__link">
<a href="#2-Facilidade-de-Manutenção-e-Escalabilidade" class="md-nav__link">
<span class="md-ellipsis">
2. Backend
2. Facilidade de Manutenção e Escalabilidade
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#3-banco-de-dados" class="md-nav__link">
<a href="#3-Reutilização-de-Componentes" class="md-nav__link">
<span class="md-ellipsis">
3. Banco de Dados
3. Reutilização de Componentes
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#4-servicos-externos" class="md-nav__link">
<a href="#4-Adaptação-a-Mudanças:" class="md-nav__link">
<span class="md-ellipsis">
4. Serviços Externos
4. Adaptação a Mudanças:
</span>
</a>

</li>
<li class="md-nav__item">
<a href="#5-Compatibilidade-com-Tecnologias-Utilizadas:" class="md-nav__link">
<span class="md-ellipsis">
5. Compatibilidade com Tecnologias Utilizadas:
</span>
</a>

Expand All @@ -398,16 +406,24 @@
</li>

<li class="md-nav__item">
<a href="#fluxo-de-dados" class="md-nav__link">
<a href="#Detalhamento" class="md-nav__link">
<span class="md-ellipsis">
Fluxo de Dados
Detalhamento
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#consideracoes-de-seguranca" class="md-nav__link">
<a href="#Metas-e-restrições-arquiteturais" class="md-nav__link">
<span class="md-ellipsis">
Metas e restrições arquiteturais
</span>
</a>

</li>
<li class="md-nav__item">
<a href="#consideracoes-de-seguranc" class="md-nav__link">
<span class="md-ellipsis">
Considerações de Segurança
</span>
Expand Down Expand Up @@ -961,55 +977,63 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>

<li class="md-nav__item">
<a href="#visao-geral" class="md-nav__link">
<a href="#Definições" class="md-nav__link">
<span class="md-ellipsis">
Visão Geral
Definições
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#componentes-principais" class="md-nav__link">
<a href="#cJustifique-da-escolha" class="md-nav__link">
<span class="md-ellipsis">
Componentes Principais
Justifique da escolha
</span>
</a>

<nav class="md-nav" aria-label="Componentes Principais">
<nav class="md-nav" aria-label="Justifique da escolha">
<ul class="md-nav__list">

<li class="md-nav__item">
<a href="#1-frontend" class="md-nav__link">
<a href="#Separação-de-Responsabilidades:" class="md-nav__link">
<span class="md-ellipsis">
1. Frontend
Separação de Responsabilidades:
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#2-backend" class="md-nav__link">
<a href="#2-Facilidade-de-Manutenção-e-Escalabilidade" class="md-nav__link">
<span class="md-ellipsis">
2. Backend
2. Facilidade de Manutenção e Escalabilidade
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#3-banco-de-dados" class="md-nav__link">
<a href="#3-Reutilização-de-Componentes" class="md-nav__link">
<span class="md-ellipsis">
3. Banco de Dados
3. Reutilização de Componentes
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#4-servicos-externos" class="md-nav__link">
<a href="#4-Adaptação-a-Mudanças:s" class="md-nav__link">
<span class="md-ellipsis">
4. Serviços Externos
4. Adaptação a Mudanças:
</span>
</a>

</li>
<li class="md-nav__item">
<a href="#5-Compatibilidade-com-Tecnologias-Utilizadas:" class="md-nav__link">
<span class="md-ellipsis">
5. Compatibilidade com Tecnologias Utilizadas:
</span>
</a>

Expand All @@ -1021,16 +1045,24 @@
</li>

<li class="md-nav__item">
<a href="#fluxo-de-dados" class="md-nav__link">
<a href="#Detalhamento " class="md-nav__link">
<span class="md-ellipsis">
Fluxo de Dados
</span>
Detalhamento
</span>
</a>

</li>

<li class="md-nav__item">
<a href="#consideracoes-de-seguranca" class="md-nav__link">
<a href="#Metas-e-restrições-arquiteturais" class="md-nav__link">
<span class="md-ellipsis">
Metas e restrições arquiteturais
</span>
</a>

</li>
<li class="md-nav__item">
<a href="#consideracoes-de-seguranc" class="md-nav__link">
<span class="md-ellipsis">
Considerações de Segurança
</span>
Expand Down Expand Up @@ -1063,28 +1095,52 @@


<h1 id="arquitetura-do-projeto">Arquitetura do Projeto</h1>
<p><img alt="Architecture" src="../assets/architecture.png" />
Link para melhor visualização: https://miro.com/app/board/uXjVKQTq3Zw=/</p>
<h2 id="visao-geral">Visão Geral</h2>
<p>A plataforma de desenvolvimento para estudantes da Universidade de Brasília (UnB) é projetada para oferecer uma experiência integrada e eficiente. A arquitetura do projeto é composta por várias camadas, cada uma desempenhando um papel específico no funcionamento da plataforma.</p>
<h2 id="componentes-principais">Componentes Principais</h2>
<h3 id="1-frontend">1. Frontend</h3>
<p>O frontend da plataforma é responsável pela interface com o usuário. É desenvolvido utilizando tecnologias web modernas, como o JavaScript, com o framework ReactJS. Ele se comunica com o backend por meio da API Firestore para acessar e exibir os dados. Além de, utilizar bibliotecas para a criação de componentes para a melhora da usabilidade do usuário na plataforma.</p>
<h3 id="2-backend">2. Backend</h3>
<p>O backend é a espinha dorsal da plataforma, lidando com a lógica de negócios e o armazenamento de dados. Utiliza o Firebase para autenticação de usuários e armazenamento de dados em tempo real, além de, usar a biblioteca NodeJS para a instalação de novas dependências para facilitar o desenvolvimento da plataforma.</p>
<h3 id="3-banco-de-dados">3. Banco de Dados</h3>
<p>O banco de dados é utilizado para armazenar informações essenciais da plataforma, como dados dos usuários, cardápio da cafeteria e eventos do calendário acadêmico. No caso deste projeto, o Firebase fornece um banco de dados NoSQL altamente escalável e de baixa latência.</p>
<h3 id="4-servicos-externos">4. Serviços Externos</h3>
<p>Além dos componentes principais, a plataforma integra-se com serviços externos, como o site oficial da UnB para obter informações atualizadas, como as informações do calendário e cardápio.</p>
<h2 id="fluxo-de-dados">Fluxo de Dados</h2>
<p>O fluxo de dados na plataforma segue um padrão de solicitação e resposta:</p>

<h2 id="Definições">Definições</h2>
<p>O sistema seguirá uma arquitetura baseada no padrão MVC (Model-View-Controller). Esta escolha foi feita pelo grupo considerando a necessidade de separar claramente a
lógica de negócios (Modelo), a interface do usuário (Visão) e o fluxo de aplicação (Controlador). A arquitetura MVC facilita a manutenção, escalabilidade e permite que
diferentes componentes do sistema sejam desenvolvidos e atualizados de forma independente.</p>
<h2 id="Justifique-da-escolha">Justifique sua escolha</h2>
<p>A escolha pela arquitetura MVC para o sistema VEGA foi fundamentada em diversos aspectos destacados nos documentos de Visão do Produto e Projeto e Declaração de Escopo
do Produto. Seguem as principais justificativas:</p>
<h3 id="Separação-de-Responsabilidades:">Separação de Responsabilidades:</h3>
<p>Conforme descrito no documento de Visão do Produto e Projeto, o sistema VEGA necessita de uma abordagem que permita uma clara separação de responsabilidades entre a
interface do usuário, a lógica de negócios e o controle do fluxo de aplicação. O padrão MVC atende a essa necessidade ao dividir a aplicação em três componentes distintos,
facilitando a manutenção e a evolução do sistema.
</p>
<h3 id="2-Facilidade-de-Manutenção-e-Escalabilidade">2. Facilidade de Manutenção e Escalabilidade</h3>
<p>A arquitetura MVC facilita a manutenção do sistema ao permitir que desenvolvedores trabalhem em diferentes partes da aplicação de forma independente. Por exemplo, alterações na interface do usuário (Visão) não afetam diretamente a lógica de negócios (Modelo) e vice-versa. Isso é crucial para um sistema como o VEGA, que deve se adaptar rapidamente às mudanças nas necessidades dos restaurantes, conforme mencionado na seção 1.3 dos documentos fornecidos.
</p>
<h3 id="3-Reutilização-de-Componentes">3. Reutilização de Componentes</h3>
<p>O uso do padrão MVC permite a reutilização de componentes, o que é particularmente importante para o VEGA, que precisa ser altamente customizável para diferentes tipos de restaurantes. A modularidade do MVC facilita a implementação de novas funcionalidades sem impactar negativamente o restante do sistema.</p>
<h3 id="4-Adaptação-a-Mudanças:">4.Adaptação a Mudanças:</h3>
<p>A metodologia ágil, destacada como parte central do desenvolvimento do VEGA, se beneficia da flexibilidade proporcionada pelo MVC. Alterações e novas funcionalidades podem ser integradas de forma mais eficiente e com menor risco de introduzir erros em outras partes do sistema.
</p>
<h3 id="5-Compatibilidade-com-Tecnologias-Utilizadas:">5. Compatibilidade com Tecnologias Utilizadas:</h3>
<p>O documento de Declaração de Escopo do Produto indica o uso de tecnologias como HTML, CSS, JavaScript, Python e frameworks como Django, que naturalmente suportam e são otimizados para a implementação do padrão MVC. Isso garante que a equipe de desenvolvimento possa utilizar as melhores práticas e ferramentas disponíveis para construir um sistema robusto e escalável.
</p>


<h2 id="Detalhamento">Detalhamento</h2>
<p>Neste esquema, o usuário faz uma requisição de um dado ou de uma função. Essa requisição vai para o controller, que executa a função e irá até o model, responsável pelo banco de dados, coletar as informações requisitadas. Uma vez coletados os dados, eles são processados pelo controller e enviados para a view para serem apresentados ao usuário. Ou seja:</p>
<ol>
<li>O usuário interage com a interface do usuário (frontend), realizando ações como fazer login, visualizar o cardápio ou acessar o calendário acadêmico.</li>
<li>O frontend envia solicitações para o backend por meio da API do Firebase Firestore.</li>
<li>O backend (Firestore) processa as solicitações, acessa os dados necessários no banco de dados e realiza as operações solicitadas.</li>
<li>O backend retorna os dados solicitados ao frontend, que os exibe na interface do usuário para o usuário final.</li>
<li>Usuário -> View: Usuário faz uma requisição.</li>
<li>View -> Controller: View envia a requisição para o Controller.</li>
<li>Controller -> Model: Controller solicita dados ao Model.</li>
<li>Model -> Banco de Dados: Model acessa e coleta dados do banco de dados.</li>
<li>Model -> Controller: Model retorna os dados para o Controller</li>
<li>Controller -> View: Controller processa e envia os dados para a View.</li>
<li>View -> Usuário: View apresenta os dados ao usuário.</li>
</ol>
<h2 id="consideracoes-de-seguranca">Considerações de Segurança</h2>
<h2 id="Metas-e-restrições-arquiteturais">Metas e restrições arquiteturais</h2>
<ul>
<li>Usabilidade, o sistema deve ser agil de ser utilizado</li>
<li>Responsabilidade, a cardápio deverá ser responsivo para diferentes tipos de telas</li>
<li> Segurança, o sistema deve ser seguro, uma vez que armazena dado confidenciais do funcionários e clientes</li>
<li>Escalabilidade, o software de ser fácil processo evolutivo</li>
<li>Manutenibilidade, o software deve ter fácil manutenção</li>
</ul>
<h2 id="consideracoes-de-seguranc">Visão de Casos de uso</h2>
<p>A segurança é uma preocupação fundamental na arquitetura do projeto. As seguintes medidas são implementadas para garantir a segurança dos dados e dos usuários:</p>
<ul>
<li>Autenticação de usuários por meio do Firebase Authentication para garantir que apenas usuários autorizados tenham acesso à plataforma.</li>
Expand Down
Binary file modified docs/assets/Logo_VEGA1.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/Logo_VEGA2.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/images/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit a861889

Please sign in to comment.