From 8d38d1cc42c8ec7a63c7f5fea109a20b47fd684e Mon Sep 17 00:00:00 2001 From: luciano-freitas-melo <202016847@aluno.unb.br> Date: Thu, 15 Sep 2022 20:33:10 -0300 Subject: [PATCH] uptade doc de arquitetura --- .../pages/DocumentoDeArquiteturaDeSoftware.md | 171 +++++++----------- 1 file changed, 69 insertions(+), 102 deletions(-) diff --git a/docs/pages/DocumentoDeArquiteturaDeSoftware.md b/docs/pages/DocumentoDeArquiteturaDeSoftware.md index 26b01d3..d22dcdc 100644 --- a/docs/pages/DocumentoDeArquiteturaDeSoftware.md +++ b/docs/pages/DocumentoDeArquiteturaDeSoftware.md @@ -1,12 +1,3 @@ - -

DOCUMENTO DE ARQUITETURA DE SOFTWARE

### _**VISÃO GERAL**_ @@ -15,142 +6,118 @@ 1. Finalidade 2. Escopo - 3. Configurções, acrônimos e abreviações + 3. Configurações, acrônimos e abreviações 4. Representação Arquitetural 5. Metas e Restrições da Arquitetura 6. Visão de Casos de Uso 7. Visão Lógica - 8. Visão de Processos - 9. Visão de Implantação - 10. Visão de Implementção - 11. Visão de Dados - 12. Diagrama de Implementação - 13. Diagrama de Classes - 14. Diagrama de Pacotes - 15. Diagrama de Casos de Uso - 16. Diagrama de Banco de Dados - 17. Tamanho e Desempenho - 18. Qualidade - 19. Referências Bibliográficas + 8. Visão de Implementção + 9. Visão de Dados + 10. Referências Bibliográficas -1. ### _**FINALIDADE**_ +### 1. _**FINALIDADE**_ - Este documento oferece uma visão geral da arquitetura abrangente do sistema, usando diversas visões arquitetônicas para representar diferentes aspectos do sistema. O objetivo deste documento é capturar e comunicar as decisões ao sistema significativo que foram tomadas em relação ao projeto sobre a carteira digital. + Este documento oferece uma visão geral da arquitetura abrangente do sistema, usando diversas visões arquitetônicas para representar diferentes aspectos do sistema. O objetivo deste documento é capturar e comunicar as decisões ao sistema significativo que foram tomadas em relação ao projeto sobre a carteira de investimentos digital. -2. ### _**ESCOPO**_ +### 2. _**ESCOPO**_ Esse documento serve de guia para outros objetivos de construção software em questão, a partir de um projeto desenvolvido envolvendo outros softwares e plataformas possíveis, a documentos possíveis da construção do projeto, onde é possível ter uma visão de cada tema. -3. ### _**CONFIGURAÇÕES, ACRÔNIMOS E ABREVIAÇÕES**_ - - API: É um acrônimo para Application Programming Interface(Interface de programação de aplicações). A API é um conjunto de definições e protocolos usados no desenvolvimento e na integração de um software, permitindo a interação com outros produtos sem a necessidade de interação com outro software. - - UML: É um acrônimo para Unified Modeling Language(linguagem de modelagem unificada). O UML é uma linguagem utilizada para visualizar, especificar, construir e documentar a arquitetura completa de um software, fornecendo informações detalhadas para o desenvolvedor implementar o software. - - UI: É uma sigla para User Interface(interface do usuário). É a área que está associada a criação das interfaces que interagem diretamente com o usuário do software, promovendo formas fáceis e amigáveis de interação no programa. - - UX: É uma sigla para User Experience(Experiência do usuário). É uma estratégia que tem como objetivo promover uma melhor experiência para os usuários. Isso é, promover ao usuário que a utilização de um site,aplicativo ou produto ocorra sem obstáculos +### 3. _**CONFIGURAÇÕES, ACRÔNIMOS E ABREVIAÇÕES**_ + +| **Sigla / Termo / Acrônimo** | **Significado** | **Descrição** | +| ---------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| API | Application Programming Interface(Interface de programação de aplicações) | A API é um conjunto de definições e protocolos usados no desenvolvimento e na integração de um software, permitindo a interação com outros produtos sem a necessidade de interação com outro software. | +| UML | Unified Modeling Language(linguagem de modelagem unificada) | O UML é uma linguagem utilizada para visualizar, especificar, construir e documentar a arquitetura completa de um software, fornecendo informações detalhadas para o desenvolvedor implementar o software. | +| UI | User Interface(interface do usuário) | É a área que está associada a criação das interfaces que interagem diretamente com o usuário do software, promovendo formas fáceis e amigáveis de interação no programa. | +| UX | User Experience(Experiência do usuário) | É uma estratégia que tem como objetivo promover uma melhor experiência para os usuários. Isso é, promover ao usuário que a utilização de um site,aplicativo ou produto ocorra sem obstáculos. | +| Open Source | Código Aberto | Um software Open Source deve ter sua distribuição livre e gratuita, bem como disponibilização de seu código-fonte. | +| ORM | Object-Relational Mapping(mapeamento objeto-relacional) | É uma técnica que permite fazer uma relação dos objetos com os dados que os mesmos representam, dessa forma é possível manipular o banco de dados por meio da linguagem de programação, ao invés da linguagem do banco. | +|Framework|"Estrutura"|Um framework é um conjunto de códigos genéricos capaz de unir trechos de um projeto de desenvolvimento.| +|CRUD|Create(Criar), Read(Ler), Uptade(Atualizar) e Delete(Deletar)|CRUD é uma sequência de funções de um sistema que trabalha com banco de dados, onde é deve ser possível criar, ler, editar e excluir dados.| -4. ### _**REPRESENTAÇÃO ARQUITETURAL**_ -- A Parte Dianteira: - - React: É um conjunto de bibliotecas de código aberto seguro para a criação de UIs interativas de forma mais fácil. Toda lógica é escrita em JavaScript da Repassagem de dados ao longo da passagem de dados. Essa tecnologia foi escolhida por quantidade de conteúdo disponível na internet, para o treinamento e aprendizado da equipe, outro ponto positivo é a comunidade sempre muito presente quanto a dúvidas e práticas. +### 4. _**REPRESENTAÇÃO ARQUITETURAL**_ +- Modelo: + - **MVC**: O MVC (sigla do termo em inglês Model (modelo) View (visão) e Controller (Controle)) é um padrão de arquitetura de software, em que o programa é separado em camadas bem definidas. +- A Parte Externa: + - **React**: É um conjunto de bibliotecas de código aberto seguro para a criação de UIs interativas de forma mais fácil. Essa tecnologia foi escolhida pela quantidade de conteúdo disponível na internet, para o treinamento e aprendizado da equipe.Além disso, outro ponto positivo é a comunidade sempre muito presente quanto a dúvidas e práticas. - Parte Interna: - - Node.Js: O Node.Js é uma tecnologia usada para executar código em JavaScript fora do navegador. Com ele podemos construir aplicações web em geral, desde websites até APIs e microsserviços. Isso é possível graças a união do ambiente de execução do JavaScript pelo próprio motor de interpretação Node.Js e execução do JavaScript presente no Google Chrome chamado V8. + - **Node.Js**: O Node.Js é uma tecnologia usada para executar código em JavaScript fora do navegador. Com ele podemos construir aplicações web em geral, desde websites até APIs e microsserviços. Isso é possível graças a união do ambiente de execução do JavaScript pelo próprio motor de interpretação Node.Js e execução do JavaScript presente nos navegadores da web. + + - **MySQL**: O MySQL é um dos gerenciadores de **Banco de Dados Relacional** mais famosos para desenvolvimento web, principalmente por ser Open Source, pela sua facilidade de uso e pelo alto desempenho. + + - **Sequilize**: O Sequilize é um ORM de Node.JS, que pode ser aplicado em MySQL, e foi selecionado por ser compatível com as tecnologias escolhidas para o projeto e por suas diversas funcionalidades a disposição. -5. ### _**METAS E RESTRIÇÕES DA ARQUITETURA**_ +### 5. _**METAS E RESTRIÇÕES DA ARQUITETURA**_ +- Metas: + - **Usabilidade** - O Software deve possuir alta aprendizagem e performance para atender os requisitos elicitados pelo grupo; + - **Manutenção** - O código e as documentações realizadas devem estar num nível de qualidade, seguindo os padrões do projeto e bibliografia, onde sua manutenção seja fácil de ser realizada. - Restrições: - Software deve ser desenvolvido nas tecnologias; - - O ambiente de desenvolvimento do software deve funcionar tanto em windows, linux e MacOS; + - O ambiente de desenvolvimento do software deve funcionar em qualquer sistema operacional Linux; - Para usar o Software é necessário Internet; - O escopo final deve ser concluído até o final da disciplina; -- Metas: - - **Usabilidade** - O Software deve possuir alta aprendizagem e performance para atender os requisitos elicitados pelo grupo; - - **Manutenção** - O código e as documentações realizadas devem estar num nível de qualidade, seguindo os padrões do projeto e bibliografia, onde sua manutenção seja fácil de ser realizada. -6. ### _**VISÃO DE CASOS DE USO**_ +### 6. _**VISÃO DE CASOS DE USO**_ Para representar os Casos de Uso do sistema especificado, foi criado um diagrama de casos de uso que exibe os pontos principais do sistema. -7. ### _**VISÃO LÓGICA**_ - - A visão lógica descreve como o sistema é compatível, em termos de unidade e implementação. Mostra como é uma organização conceitual do sistema em termos de camadas, pacotes, classes e interfaces. O relacionamento entre os elementos mostra como dependências e interface, os relacionamentos parte assim por diante. - -- Diagrama de Aulas + - O diagrama representa como as classes serão programadas, os principais objetos ou realmente como diagrama completo pode ser encontrado na parte de Diagrama de Classes na wiki do projeto. -- Diagrama de Pacotes - - O diagrama de pacotes é um diagrama estático que possibilita uma organização mais adequada ao sistema que representa uma versão de pacotes. O diagrama completo pode ser encontrado na parte de Diagrama de Pacotes da wiki do projeto. - -- Diagrama de Comunicação - - O diagrama de comunicação mostra partes de comunicação entre objetos e/ou (representadas pela lifelines usando mensagens sequenciadas um arranjo) de forma livre. O diagrama completo pode ser encontrado na parte de Diagrama de Comunicação na wiki do projeto. - -8. ### _**VISÃO DE PROCESSOS**_ -- Visão geral: +### 7. _**VISÃO LÓGICA**_ - De tempo-de-execução como o sistema de execução de tempo-de-execução é construído na forma de um conjunto de tempo-de-execução que tem como modelo de comportamento de execução. Uma estrutura de tempo-de-execução normalmente tem semelhança com uma estrutura de código. Consistência de redes de comunicação rápida de objetos de comunicação. +- Visão Geral + + As ações do usuário são interpretadas pelo Javascript através do componentes React, por meio de eventos. Estes, podem ser de dois tipos: + 1) Eventos com Manipulação de dados: + + É feita uma requisição para o backend da aplicação (HTTP Request), a qual faz a validação e manipulação (CRUD) dos dados no Banco, o qual é todo manipulado pelo próprio backend através do framework Sequilize. + + Em alguns casos, há uma interação com uma API da Bolsa de Valores Brasileira (B3). Nessas situações é feita a manipulação com o próprio banco de dados da aplicação, que já fez uma requisição previamente à API da B3. -- Diagrama de Sequência: + 2) Eventos sem manipulação de dados: + + Ocorrem em interações que ocorrem somente na interface gráfica, dessa forma, o evento é executado somente no componente React do frontend. - O diagrama de sequência é uma das soluções fornecidas pela UML, que descrevem quimicamente o ciclo de vida do sistema em desenvolvimento. Descrição detalhada. O foco principal deste diagrama é descrito como troca entre os componentes do sistema e módulos que existem de uma maneira determinada e mensagens entre si. Os ciclos de vida podem ser aulas, atores ou mesmo abstrações que ocorrem entre aulas. + -9. ### _**VISÃO DE IMPLANTAÇÃO**_ - Descreve como a aplicação é disponibilizada para uso, seja em um ambiente de desenvolvimento, para testes ou em produção. + + -10. ### _**VISÃO DE IMPLEMENTAÇÃO**_ - - Visão Geral: -Descreve como os defensores do desenvolvimento estão organizados no sistema de arquivos. Os elementos são arquivos e pastas(Quaisquer itens de configuração). Isto inclui as propriedades de desenvolvimento e os riscos de implantação. - -1. ### _**VISÃO DE DADOS**_ - - Essa visão é utilizada em projetos onde existe alguma camada de duração, geralmente, um banco de dados racional. É uma visão geral dos dados persistentes, por meio dessa, objetos são mapeados dados persistentes. Essa visão é visualizada com o Modelo Entidade Relacionamento, no caso de banco de dados relacionais. - -12. ### _**DIAGRAMA DE IMPLEMENTAÇÃO**_ - Essa é a versão final do diagrama de implementação do projeto Invext. - - - -13. ### _**DIAGRAMA DE CLASSES**_ - Essa é a versão final das classes e métodos adotados no diagrama de classe do projeto Invext. - - +- Diagrama de Pacotes -14. ### _**DIAGRAMA DE PACOTES**_ - Essa é a versão final da implementação do diagrama de pacotes do projeto Invext. + - + - - -15. ### _**DIAGRAMA DE CASOS DE USO**_ - Essa é a versão final da implementação do diagrama de casos de uso do projeto Invext. +### 8. _**VISÃO DE IMPLEMENTAÇÃO**_ + - Diagrama de Classes: + + - - -16. ### _**DIAGRAMA DE BANCO DE DADOS**_ - Essa é a versão final da implementação do diagrama de banco de dados do projeto Invext. - +### 9. _**VISÃO DE DADOS**_ -17. ### _**TAMANHO E DESEMPENHO**_ + Essa visão é utilizada para explicitar a organização do banco de dados racional do projeto. É uma visão geral dos dados persistentes, por meio dessa, os objetos do software são mapeados. + +- Diagrama de Banco de Dados - Descrição do desempenho e das características do software que impactam na arquitetura de software. + -- Requisitos Mínimos - - É necessário possuir conexão com a internet; - - Para desenvolver, possuir: Windows, linux ou MacOS; -18. ### _**QUALIDADE**_ - Qualidade de software tem como objetivo atingir os requisitos especificados durante a elaboração do projeto, e como expectativas de usuários de clientes e diretamente relacionados com: Escalabilidade, Manutenção, Confiabilidade, Usabilidade e assim por diante. +### 10. _**REFERÊNCIAS BIOGRÁFICAS**_ -19. ### _**REFERÊNCIAS BIOGRÁFICAS**_ + Arquitetura de Software. Disponível em: . Acesso em: 30 de junho de 2022. - Arquitetura de Software. Disponível em: . Acesso em: 30 de abril de 2021. + Documento de arquitetura, Acacia. Disponível em: . Acesso em: 10 de setembro de 2022. - O que é UML e Diagramas de Caso de Uso: Introdução Prática à UML. Disponível: . Acesso em: 03 de maio de 2021. + O que é UML e Diagramas de Caso de Uso: Introdução Prática à UML. Disponível: . Acesso em: 03 de julho de 2022. - ReactJS Disponível em: https://pt-br.reactjs.org/ Acesso em: 03 de maio de 2021. + ReactJS Disponível em: https://pt-br.reactjs.org/ Acesso em: 03 de julho de 2022. - Node.JS Disponível em: https://nodejs.org/en/about/ Acesso em: 03 de maio de 2021. + Node.JS Disponível em: https://nodejs.org/en/about/ Acesso em: 03 de julho de 2022.