Roles

Roles

  • Docs
  • Sprints
  • Blog
  • Help

›Técnico

Negócio

  • TAP
  • EAP
  • Documento de Visão
  • Colaboradores
  • Roadmap Geral
  • Roadmap Devops
  • ROI

Metodologia

  • Plano Metodológico
  • Roadmap Scrum Master
  • Post Mortem

Técnico

  • Documento de Arquitetura
  • Roadmap Arquiteto
  • Roadmap Devops
  • DevOps

Comunidade

  • License
  • Código de Conduta
  • Guia de Contribuição
  • Templates

Documento de Arquitetura

Índice

  1. Introdução
    1.1. Finalidade
    1.2. Escopo
    1.3. Definições, Acrônimos e Abreviações

  2. Representação da Arquitetura
    Visão Lógica
    2.1. Diagrama de relações
    2.2. React/Microsserviços
    2.2.1. Diagrama Front-End
    2.3. Diagrama de Pacotes
    2.4. Diagrama Django REST Framework

  3. Metas e Restrições da Arquitetura

  4. Visão de Casos de Uso
    4.1. Casos de uso
    4.2. Diagrama de casos de uso

  5. Tamanho e Desempenho

  6. Qualidade

  7. Referências

1. Introdução

1.1. Finalidade

Este documento fornece uma visão arquitetural abrangente do sistema, usando diversas visões de arquitetura para representar diferentes aspectos do sistema. Seu objetivo é captar e transmitir as decisões arquiteturais significativas que foram feitas no sistema.

1.2. Escopo

Este Documento de Arquitetura de Software fornece uma visão geral da arquitetura do Roles.

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

  • UnB - Universidade de Brasília;
  • FGA - Faculdade do Gama;
  • App - Aplicativo mobile;
  • iOS - Sistema operacional móvel da Apple Inc;
  • Android - Sistema operacional móvel do Google Inc;
  • SaaS - Software as a Service.

2. Representação da Arquitetura

Este documento apresenta a arquitetura como duas visões: visão lógica e visão de casos de uso. Outras visões não existem neste documento.

Visão Lógica

2.1. Diagrama de relações

O diagrama apresenta cada etapa que será seguido para que o app Roles funcione.

2.2. React-Native/Microsserviços

React-Native

O React Native é um projeto desenvolvido pelos engenheiros do Facebook e que consiste em uma série de ferramentas que viabilizam a criação de aplicações móveis nativas para as plataformas iOS e Android, utilizado no desenvolvimento Front-end baseado em JavaScript.

2.2.1. Diagrama Front-End

Diagrama_Front-End

Python

Python é uma liguagem de programação de alto nível, utilizada na programação dos microsserviços do back-end do aplicativo.

2.3. Diagrama de pacotes

Diagrama_Pacotes

2.4. Diagrama Django REST Framework

Diagrama_Rest

Model

A model é a representação dos objetos, permitindo obter informações do banco de dados sem conhecer a complexidade de tal. Essa camada contém tudo sobre os dados: como acessar, validar, comportamentos e relações entre dados.

View

A view controla o fluxo de informações entre a model e o template. Essa camada utiliza lógica programada para decidir quais informações serão extraídas do banco de dados e quais serão transmitidas para exibição.

Serializer

Os serializers permitem que dados complexos sejam convertidos em tipos de dados nativos do python, que podem ser renderizados facilmente em JSON, XML e outros tipos de conteúdo. No Django Rest, os serializers funcionam de forma semelhante às classes Form e ModelForm do Django. A classe Serializer fornece uma maneira de controlar a saída de suas respostas, bem como uma classe ModelSerializer que fornece um atalho útil para a criação de serializers que lidam com instâncias da model.

URL

O framework REST tem suporte para o roteamento automático de URL para o Django, e fornece uma forma simples, rápida e consistente de conectar sua lógica de visualização a um conjunto de URLs. Tem funcionalidade similar a outras estruturas web como Rails.

Test

O framework REST inclui algumas classes auxiliares que herdam a estrutura de teste existente do Django e melhoram o suporte para fazer requisições para a API.

3. Metas e Restrições da Arquitetura

Para o desenvolvimento deste projeto serão utilizadas as seguintes tecnologias:

  • React-native: Utilizado na contrução do aplicativo nativo para Android e iOS;
  • Python: Plataforma utilizada para microsserviços;
  • Django: Framework para desenvolvimento de aplicações web em python;
  • Django Rest: Utilizado para construção de API's e microsserviços;
  • Docker: Plataforma de containeres para empacotamento de aplicações;
Restrições
O sistema não pode travar/encerrar o processo com frequência.
Mudanças nas necessidades de integração com outros sistemas

4. Visão de Casos de Uso

4.1. Casos de uso

Caso de UsoMotivo da Escolha
Caso de Uso 1Cadastro de Eventos (Rolês)
Caso de Uso 2Visualizar Feed com detalhes do rolê
Caso de Uso 3Comentários de eventos
Caso de Uso 4Likes e Dislikes em Eventos e Comentários*
Caso de Uso 5Compartilhar Eventos no Facebook*
Caso de Uso 6Visualizar Feed com eventos próximos*

*Casos que não fazem mais parte do produto

4.2. Diagrama de casos de uso

Diagrama_Casos_de_uso

5. Tamanho e Desempenho

O sistema é desenvolvido em react-native para plataformas móveis Android e iOS, entretanto o sistema deve ser construido com foco no desempenho do aparelho em que será instalado. O software deverá suportar cerca de 3.000 usuários (alunos, professores e eventuais empresas).

6. Qualidade

CaracterísticaDescriçãoSolução
EscalabilidadeÍndice do potencial de crescimento do negócio.Adicionar infraestrutura, modelo SaaS, adicionar recursos
ConfiabilidadeSoftware funcionar sem ocorrer interrupções e falhas.DevOps, Melhoria Contínua
DisponibilidadeManter os serviços disponibilizadosEscala e resiliência da infraestrutura de rede, Servidores disponíveis
PortabilidadeExecutar em diferentes arquiteturasUtilizar react-native
SegurançaProteção de dados e informações---

7. Referências

Como documentar a Arquitetura de Software:

 http://www.linhadecodigo.com.br/artigo/3343/como-documentar-a-arquitetura-de-software.aspx - Acesso em: 06/09/2018.

Build native mobile apps using JavaScript and React: https://facebook.github.io/react-native/ - Acesso em: 07/09/2018.

Build, Manage and Secure Your Apps Anywhere. Your Way: https://www.docker.com/ - Acesso em: 07/09/2018.

Build a REST API with Django: https://scotch.io/tutorials/build-a-rest-api-with-django-a-test-driven-approach-part-1 - Acesso em 28/11/2018

← Post MortemRoadmap Arquiteto →
  • 1.1. Finalidade
  • 1.2. Escopo
  • 1.3. Definições, Acrônimos e Abreviações
  • 2.1. Diagrama de relações
  • 2.2. React-Native/Microsserviços
    • React-Native
    • 2.2.1. Diagrama Front-End
    • Python
  • 2.3. Diagrama de pacotes
  • 2.4. Diagrama Django REST Framework
  • Model
  • View
  • Serializer
  • URL
  • Test
  • 4.1. Casos de uso
    • 4.2. Diagrama de casos de uso
Copyright © 2018 RolesFGA - EPS/MDS 2.2018