Skip to content

Commit

Permalink
Adiciona tecnologias, rich picture e diagrama
Browse files Browse the repository at this point in the history
Co-authored-by: RenanGirao
  • Loading branch information
luisgaboardi committed Sep 14, 2023
1 parent aa2a0e2 commit 9f3b43d
Show file tree
Hide file tree
Showing 6 changed files with 275 additions and 32 deletions.
39 changes: 27 additions & 12 deletions docs/concepcao/arquitetura-software.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,32 @@
# Visão Geral da Arquitetura de Software

Este documento apresenta a arquitetura de software adotada para o projeto, que se baseia em um monolito que combina React para o front-end e FastAPI para o back-end, com dados armazenados no MySQL. O React oferece uma interface de usuário amigável, enquanto o FastAPI fornece um backend rápido e escalável. O MySQL foi escolhido devido à sua confiabilidade e presença de uma interface gráfica para gerenciamento de dados. Essa arquitetura suporta a gestão e análise do desempenho acadêmico dos alunos de forma eficaz.
Este documento apresenta a arquitetura de software adotada para o projeto, que se baseia em um monolito que combina React para o front-end e FastAPI para o back-end, com dados armazenados no MySQL. Além disso, o documento apresenta o rich picture, o diagrama de pastas, o modelo entidade-relacionamento (ME-R), o diagrama entidade-relacionamento (DE-R) e o diagrama lógico de dados (DLD).

## Descrição da Arquitetura de Software
## Tecnologias Utilizadas

monolito, React, Fast API, MySQL
### React

[descreva a arquitetura de software definida para o projeto, detalhando as decisões arquiteturais tomadas, como os componentes do sistema se relacionam e como a comunicação ocorre entre eles. Diagrama de Componentes, Diagrama de Pacotes...]
O [React](https://react.dev) é uma biblioteca JavaScript de código aberto para criar interfaces de usuário ou componentes de IU. É mantido pelo Facebook e por uma comunidade de desenvolvedores e empresas individuais. O React pode ser usado como uma base no desenvolvimento de aplicativos de página única ou móveis. A sua escolha foi devido à baixa curva de aprendizado, popularidade no mercado, capacidade de personalização e familiaridade por parte de algum dos membros da equipe.

- **FastAPI**: O principal motivo pela escolha foi o fato de ser rápido, fácil e de ser a mesma linguagem usada para treinar os modelos de machine learning.
### FastAPI

- **React**: Já a escolha do React foi por conta da baixa curva de aprendizado, popularidade no mercado e familiaridade por parte de algum dos membros.
O [FastAPI](https://fastapi.tiangolo.com) é um framework web de alto desempenho, fácil de aprender, rápido para codificar, pronto para produção, baseado em Python 3.6+ e que suporta tipos de dados de anotação de tipo padrão. Ele foi escolhido por ser rápido, fácil de aprender, escalável e por suportar anotações de tipo padrão.

- **MySQL**: Essa tecnologia foi definida por conta da familiridade de alguns membros da equipe, tal como a presença de uma interface gráfica para interação com o banco. Além disso, é um dos sistemas gerenciadores de banco de dados relacional mais comuns no mercado.
### MySQL

O [MySQL](https://dev.mysql.com/doc/) é um sistema de gerenciamento de banco de dados relacional de código aberto. Ele foi escolhido por ser rápido, confiável, escalável e por possuir uma interface gráfica para gerenciamento de dados.

### Jupyer Notebook

O [Jupyter Notebook](https://jupyter.org) é um aplicativo da web de código aberto que permite criar e compartilhar documentos que contêm código ativo, equações, visualizações e texto narrativo. Os usos incluem: limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados, aprendizado de máquina e muito mais. Ele foi escolhido por ser uma ferramenta de fácil utilização que permite o treinamento de modelos de aprendizado de máquina, juntamente com bibliotecas Python tais como Numpy, Pandas, Scikit-learn e Tensorflow.

## Rich Picture

![Rich Picture](../imagens/rich_picture.png)

## Diagrama de Pastas

![Diagrama de Pastas](../imagens/diagrama_pastas.png)

## Modelagem e Desenho do Banco de Dados

Expand Down Expand Up @@ -40,8 +54,9 @@ monolito, React, Fast API, MySQL

## Versionamento

| Versão | Data | Modificação | Autor |
| ------ | ---------- | --------------------------------- | ------------ |
| 1.0 | 20/08/2023 | Criação do conteúdo | Fause Carlos |
| 2.0 | 21/08/2023 | Melhoria da formatação e conteúdo | Luís Lins |
| 3.0 | 06/09/2023 | Adição de texto introdutório | Carlos Vaz |
| Versão | Data | Modificação | Autor |
| ------ | ---------- | ---------------------------------------------------------------------- | ---------------------- |
| 1.0 | 20/08/2023 | Criação do conteúdo | Fause Carlos |
| 1.1 | 21/08/2023 | Melhoria da formatação e conteúdo | Luís Lins |
| 1.2 | 06/09/2023 | Adição de texto introdutório | Carlos Vaz |
| 2.0 | 14/09/2023 | Adição da descrição das tecnologias, rich picture e diagrama de pastas | Luís Lins, Renan Girão |
27 changes: 7 additions & 20 deletions docs/concepcao/dados-necessarios.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,26 @@

Este documento apresenta os dados necessários para o desenvolvimento e o melhor aproveitamento do sistema EduTech, bem como a descrição do dataset utilizado para o treinamento dos modelos de machine learning.

## Introdução
## Descrição

O dataset utilizado nesta etapa inicial é um dado mockado (falso) vindo do Kaggle, que pode ser encontrado [aqui](https://www.kaggle.com/datasets/devansodariya/student-performance-data). Isso ocorre por conta do sistema necessitar da injeção dos dados da instituição para retornar as informações previstas

Esse dataset foi obtido por uma pesquisa em estudantes da disciplina de matemática de escolas de ensino médio. É composto por 33 informações sobre cada aluno, sendo algumas delas elas:

- school ID
- gender
- age
- Health
- Grades

Sendo as colunas de "Grades" as mais importantes para o nosso projeto, pois são elas que foram utilizadas para a previsão de notas dos alunos.
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum

## Dicionário de Dados

| Coluna | Descrição | Tipo | Qtd. Valores Únicos | Valores |
| --------- | ----------------------------- | -------------- | ------------------- | ------------------------------------------------------------ |
| school | Tipo de escola | Texto | 2 | GP(Gabriel Pereira), MS(Mousinho da Silveira) |
| sex | Gênero do estudante | Caracter | 2 | M(Male), F(Female) |
| age | Idade do estudante | Número inteiro | 8 | 15 - 22 |
| studytime | Tempo de estudo semanal | Número inteiro | 4 | 1(<2 hours), 2(2 to 5 hours), 3(5 to 10 hours), 4(>10 hours) |
| failures | Número de reprovações | Número inteiro | 4 | 0 - 3 |
| higher | Quer fazer educação superior | Booleano | 2 | True(yes), False(no) |
| internet | Tem acesso à internet em casa | Booleano | 2 | True(yes), False(no) |
| absenses | Número de faltas | Número Inteiro | 94 | 0 - 93 |
| G1 | Nota do primeiro período | Número Inteiro | 21 | 0 - 20 |
| G2 | Nota do segundo período | Número Inteiro | 21 | 0 - 20 |
| G3 | Nota final | Número Inteiro | 21 | 0 - 20 |

## Versionamento

| Versão | Data | Modificação | Autor |
| ------ | ---------- | ----------------------- | -------------- |
| 1.0 | 09/08/2023 | Criação do conteúdo | Luís Lins |
| 2.0 | 08/09/2023 | Atualização do conteúdo | FauseSkyWalker |
| Versão | Data | Modificação | Autor |
| ------ | ---------- | ------------------------------------------------------- | -------------- |
| 1.0 | 09/08/2023 | Criação do conteúdo | Luís Lins |
| 2.0 | 08/09/2023 | Atualização do conteúdo | FauseSkyWalker |
| 3.0 | 14/09/2023 | Remove informações sobre dataset antigo e melhora texto | Luís Lins |
124 changes: 124 additions & 0 deletions docs/imagens/diagrama_pastas.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<mxfile host="app.diagrams.net" modified="2023-09-14T14:52:37.931Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 OPR/101.0.0.0" etag="0ZBGpoH4bRXgrR4Gn2ju" version="21.7.1" type="device">
<diagram name="Página-1" id="CUiqIOyN3c0M99_p4uoG">
<mxGraphModel dx="1049" dy="568" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="QQvizp8mgNF_2mnfgHYH-44" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="760" height="476" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-46" value="src" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;" vertex="1" parent="1">
<mxGeometry x="41" y="36" width="50" height="19" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-69" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="70" y="80" width="170" height="414" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-68" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-69">
<mxGeometry width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-77" value="" style="group" vertex="1" connectable="0" parent="QQvizp8mgNF_2mnfgHYH-69">
<mxGeometry y="2.5" width="170" height="411.5" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-66" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry y="17.5" width="170" height="394" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-76" value="db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry x="15" width="60" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-117" value="Dockerfile" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry x="25" y="37.5" width="120" height="70" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-118" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry x="25" y="142.75" width="120" height="87.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-119" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry x="25" y="117.5" width="95" height="24.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-120" value="sql-scripts" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry x="26.25" y="122.12" width="92.5" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-131" value="init.sql" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-77">
<mxGeometry x="40.629999999999995" y="157.5" width="88.75" height="54.63" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-83" value="" style="group;fontSize=15;" vertex="1" connectable="0" parent="1">
<mxGeometry x="470" y="80" width="170" height="414" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-84" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-83">
<mxGeometry width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-85" value="" style="group" vertex="1" connectable="0" parent="QQvizp8mgNF_2mnfgHYH-83">
<mxGeometry y="2.5" width="170" height="411.5" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-86" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry y="17.5" width="170" height="394" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-87" value="frontend" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="15" width="60" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-133" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="142.75" width="120" height="37.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-134" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="117.5" width="65" height="24.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-135" value="Dockerfile" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="37.5" width="120" height="70" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-136" value="src" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="43.75" y="122.13" width="27.5" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-137" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="212.75" width="120" height="37.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-138" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="187.5" width="65" height="24.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-139" value="public" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="34.38" y="192.12" width="46.25" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-140" value=".gitignore" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="257.5" width="125" height="62.5" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-141" value="package.json" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-85">
<mxGeometry x="25" y="327.5" width="125" height="62.5" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-88" value="docker-compose.yml" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="1">
<mxGeometry x="660" y="100" width="120" height="70" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-79" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="270" y="80" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-80" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="270" y="82.5" width="170" height="411.5" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-81" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry y="17.5" width="170" height="394" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-82" value="backend" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="15" width="60" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-89" value="Dockerfile" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="25" y="37.5" width="120" height="70" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-95" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="25" y="142.75" width="120" height="196.75" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-103" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="25" y="117.5" width="65" height="24.25" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-104" value="app" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=15;" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="27.5" y="122.12" width="60" height="15" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-105" value="main.py" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="41.25" y="155" width="87.5" height="52.5" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-106" value=".gitignore" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="41.25" y="213.81" width="88.75" height="54.63" as="geometry" />
</mxCell>
<mxCell id="QQvizp8mgNF_2mnfgHYH-116" value="requirements.txt" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document" vertex="1" parent="QQvizp8mgNF_2mnfgHYH-80">
<mxGeometry x="41.25" y="275" width="87.5" height="52.5" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added docs/imagens/diagrama_pastas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 9f3b43d

Please sign in to comment.