Documento de Arquitetura
Índice
Introdução 1.1. Finalidade 1.2. Escopo 1.3. Definições, Acrônimos e Abreviações
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
Visão de Casos de Uso 4.1. Casos de uso 4.2. Diagrama de casos de uso
Introdução
1.Finalidade
1.1.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.
Escopo
1.2.Este Documento de Arquitetura de Software fornece uma visão geral da arquitetura do Roles.
Definições, Acrônimos e Abreviações
1.3.- 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.
Representação da Arquitetura
2.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
Diagrama de relações
2.1.O diagrama apresenta cada etapa que será seguido para que o app Roles funcione.
React-Native/Microsserviços
2.2.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.
Diagrama Front-End
2.2.1.Python
Python é uma liguagem de programação de alto nível, utilizada na programação dos microsserviços do back-end do aplicativo.
Diagrama de pacotes
2.3.Diagrama Django REST Framework
2.4.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.
Metas e Restrições da Arquitetura
3.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 |
Visão de Casos de Uso
4.Casos de uso
4.1.Caso de Uso | Motivo da Escolha |
---|---|
Caso de Uso 1 | Cadastro de Eventos (Rolês) |
Caso de Uso 2 | Visualizar Feed com detalhes do rolê |
Caso de Uso 3 | Comentários de eventos |
Caso de Uso 4 | Likes e Dislikes em Eventos e Comentários* |
Caso de Uso 5 | Compartilhar Eventos no Facebook* |
Caso de Uso 6 | Visualizar Feed com eventos próximos* |
*Casos que não fazem mais parte do produto
Diagrama de casos de uso
4.2.Tamanho e Desempenho
5.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).
Qualidade
6.Característica | Descrição | Solução |
---|---|---|
Escalabilidade | Índice do potencial de crescimento do negócio. | Adicionar infraestrutura, modelo SaaS, adicionar recursos |
Confiabilidade | Software funcionar sem ocorrer interrupções e falhas. | DevOps, Melhoria Contínua |
Disponibilidade | Manter os serviços disponibilizados | Escala e resiliência da infraestrutura de rede, Servidores disponíveis |
Portabilidade | Executar em diferentes arquiteturas | Utilizar react-native |
Segurança | Proteção de dados e informações | --- |
Referências
7.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