Ir para o conteúdo

Documento de Arquitetura de Software

Histórico de Revisão

Data Versão Descrição Autor(es)
14/09/2020 0.1 Criação do Documento e Adição do template e do sumário Guilherme Aguiar
18/09/2020 0.2 Criação da visão de casos de uso Bruno Nunes
21/09/2020 0.3 Criação das Metas e Restrições Arquiteturais Tomás Veloso
14/12/2020 0.4 Reestruturação Visão Lógica Bruno e Hércules

Sumário

1. Introdução
1.1 Objetivo
1.2 Escopo
1.3 Definições, Acrônimos e Abreviações
1.4 Referências
1.5 Visão Geral
2. Representação Arquitetural
2.1 Plataforma ReactJS
2.2 API
2.2.1 User
2.2.2 Resolution
2.2.3 Reports
2.2.4 News
2.2.5 Benefits
2.2.6 Adverts
2.3 Banco de Dados
3. Restrições e Metas Arquiteturais
4. Visão Lógica
4.2.1 Back-End
4.2.2 Front-End
4.3 Modelagem de dados
5. Visão de Implementação

1. Introdução

1.1 Objetivo

Este documento tem como finalidade fornecer uma visão arquitetural abrangente do sistema Vamos Cuidar Gestão, por meio de diversas visões arquiteturais para representar diferentes aspectos da aplicação. Com o propósito de demonstrar as decisões arquiteturais tomadas no desenvolvimento do Vamos Cuidar Gestão.

1.2 Escopo

1.3 Definições, Acrônimos e Abreviações

As Definições, Acrônimos e Abreviações para entendimento do documento são:

  • UnB: Universidade de Brasília
  • FGA: Faculdade do Gama - Campus da Universidade de Brasília
  • API: Application Programming Interface (Interface de Programação de Aplicativos)
  • REST: Representational State Transfer (Transferência de Estado Representacional)
  • HTTP: Hypertext Transfer Protocol (Protocolo de Transferência de Hipertexto)
  • IDE: Integrated Development Environment (Ambiente de Desenvolvimento Integrado)
  • App: Application (Aplicativo)
  • MVC: Model-View-Controller
  • UC: Use Case (Caso de Uso)
  • VCU: Vamos Cuidar Usuário: Plataforma desenvolvida pelo grupo de MDS da professora Carla, com a qual nossa aplicação irá se comunicar.
  • VCG: Vamos Cuidar Gestão: A nossa plataforma

1.4 Referências

As referências aplicáveis são:

1.5 Visão Geral

Este documento visa detalhar as soluções arquiteturais desenvolvidas no sistema. Deste modo, neste documento serão abordados os seguintes aspectos:

  • Representação Arquitetural
  • Restrições e Metas Arquiteturais
  • Visão de Casos de Uso
  • Visão Lógica

2. Representação Arquitetural

architecture_diagram

O sistema é composto de três frentes:

  • A frente da aplicação, será feita com em Javascript com a biblioteca ReactJS, que oferece ao usuário gestor as opções de interação com a plataforma feita da outra turma de MDS (VCU), tais como resolver uma postagem, relatórios sobre a plataforma e a criação de notícias e benefícios.

  • A frente das API's, também utilizaremos Javascript, mas no server usaremos o NodeJS. Baseando-se na arquitetura de microserviços, é composta por 5 serviços (pacotes), cada um com suas próprias responsabilidades e deveres.

  • A frente de dados, onde teremos um banco de dados PostgreSQL, hospedado na infraestrutura da Unb, onde serão persistidos os dados que iremos receber do VCU e onde iremos salvar os artefatos criados na nossa plataforma. Já no ambiente de desenvolvimento, usaremos o postgres localmente com o Docker. Para facilitar a criação das visualizações, optamos pela utilização da ferramenta Kibana.

Cada frente possui sua própria arquitetura interna.

2.1 Plataforma ReactJS

reactjs

Em poucas palavras, o React é uma biblioteca JavaScript para criação de interfaces para o usuário, desenvolvida e mantida pelo Facebook, sua primeira release saiu em 2013. É uma lib open-source com mais de 1k de colaboradores ativos no GitHub.

Ela está presente no nosso dia-a-dia mais do que você imagina, em empresas grandes como Facebook, Instagram, AirBnB, NFL, Yahoo e muito mais. O mercado para essa biblioteca só cresce.

2.2 API

architecture_diagram

Os microserviços da aplicação vão seguir o mesmo padrão, será usado o Nodejs para a lógica no back-end, seguindo a o padrão arquitetural MVC, onde a camada da View fica como o ReactJS. O padrão de organização dos elementos arquiteturais está representado no diagrama acima. f

2.3 Banco de dados

PostgreSQL é um sistema de banco de dados relacional de objeto de código aberto com mais de 30 anos de desenvolvimento ativo que lhe rendeu uma forte reputação de confiabilidade, robustez de recursos e desempenho. O banco é divido em schemas, cada microserviço irá interagir com um único esquema, o que contribui para a independência dos microserviços e a diminuição do acoplamento. A seguir serão representadas o diagrama dos esquemas.

3. Restrições e Metas Arquiteturais

A tomada de decisão pela arquitetura de pequena escala (software), foi tomada a partir da Engenharia de Requisitos conciliado com o levantamento de restrições para o desenvolvimento do software e o usuário de destino. Entretanto, existem restrições no funcionamento do software, restrições de design, operacionais e de compatibilidade. Sendo assim, para melhor atender os requisitos definidos e utilizar das melhores tecnologias disponíveis, foram selecionadas as metas e restrições de arquitetura.

3.1 Metas

A usabilidade da aplicação website, podendo ser acessada pelos navegadores modernos, terá interface de um dashboad para fácil entendimento de suas informações em dados visuais intuitivos. Por tanto, a eficiência do site será conceder os dados e suas informações de forma clara e rápida ao usuário, para que assim possa gerenciar e acompanhar os processos de forma imediata. Para que o usuário gestor cumpra o objetivo de visualizar os dados e operar suas informações de forma clara e simples, tendo como meta uma aplicação eficiente. A manutenibilidade do software será a capacidade de ser modificado para adequa-se a novos requisitos solicitados, para melhorias de funcionalidades ou incrementos de novas funções. Para a execução de suas funções de forma eficiente, as funcionalidades devem ser submetidas a testes, para verificação e validação do seu comportamento e assim possuir um produto de software eficiente e com qualidade.

3.2 Restrições

As restrições de design estão relacionadas às ferramentas e tecnologias escolhidas para para o desenvolvimento do software. A elaboração do projeto, website, utilizando JavaScript, ReactJS, HTML, CSS, NodeJS, Docker e PostgreSQL. Existem restrições operacionais referentes à aplicação, o fato que a tecnologia desenvolvida para sua operação necessita da interação com um servidor de hospedagem disponibilizado por terceiros. A tecnologia será desenvolvida em parceria com outro desenvolvimento de software, portanto, o software deve está de acordo com outro projeto para consumir seus dados e gerá-los no site, em que a interação entre as tecnologias funcionem corretamente, sem problemas de compatibilidade entre elas.

4. Visão Lógica

4.1 Visão Geral

Mostra a seguir a hierarquia dos pacotes, onde tem-se a decomposição do back-end, e juntamente o front-end. Em conjunto, a distribuição dos microserviços.

4.2 Diagrama de pacotes

4.2.1 Back-End

Para o back end, cada microserviço tem sua visão geral composta de quatro pacotes:

nodejs_package

  • Controller
    Possui classes que são responsáveis pela execução de código que prepara os dados para sua exibição no React, também são responsáveis por controlar as chamadas à API e despachar o resultado para o local adequado, seja o React que esteja aguardando ou outros objetivos.
  • Models
    Classes que fazem representação dos dados que o aplicativo deve persistir localmente, como os dados das postagens a aplicação deve listar. Essas classes também contém algumas operações específicas aos seus objetos.
  • Routes
    A camada de roteamento define a maneira como as solicitações do cliente são tratadas pelos endpoints do aplicativo.
  • Test
    Pacote da aplicação onde são realizados os testes unitários da lógica da aplicação (controllers) e da estrutura da model.

4.2.2 Front-End

Para o front end, cada microserviço tem sua visão geral composta de quatro pacotes:

reactjs_package

  • Public
    É onde residem seus arquivos estáticos. Se o arquivo não for importado por seu aplicativo JavaScript e precisar manter seu nome de arquivo, coloque-o aqui.
  • Assets
    Na pasta assets ficam as dependências compartilhadas por seu aplicativo - como mixins SASS, imagens, etc. - podem ir para o diretório.
  • Components
    A pasta onde ficam os componentes únicos do react.
  • Pages
    A pasta pages possuem componentes constituidos por vários componentes, que forman as páginas finais que são exibidas.
  • Utils
    Esta é uma pasta cheia de funções auxiliares que são usadas globalmente. Mantenha seu código DRY (Don Don't Repeat Yourself) exportando a lógica repetida para um único local e importando-o onde for usado.

4.3 Modelagem de dados

DiagramaClasse

5. Visão de Implantação