Skip to content

Arquitetura

Data Versão Descrição Responsáveis
21/11/2018 1.0 Adição de seção de Introdução, Representação da Arquitetura, Metas e Restrições de Arquitetura e Visão de Casos de Uso Amanda Bezerra
23/11/2018 1.1 Adição de seção de Visão Lógica, Visão Geral e Visão de Modelos Amanda Bezerra
23/11/2018 1.2 Adição da explicação do forms na descrição da arquitetura Mateus Oliveira, Matheus Roberto e Vinícius Cantuária
23/11/2018 1.3 Incremento na Representação da arquitetura Mateus Oliveira, Matheus Roberto e Vinícius Cantuária
# Documento de Arquitetura de Software

Introdução

Finalidade

Este documento tem como finalidade apresentar a arquitetura do projeto EconomizAqui através de visões diversas para registrar as decisões arquiteturais relacionadas ao projeto. O documento é dividido da seguinte maneira: inicialmente é apresentada a representação da arquitetura da solução, em seguida as metas e restrições desta arquitetura e por fim são apresentadas visões sobre elementos da arquitetura.

Escopo

Este documento apresenta as características arquiteturais do projeto EconomizAqui, descrevendo em detalhes a soluções arquiteturais determinadas para o projeto, de forma a servir como base para o desenvolvimento do projeto pelos desenvolvedores de software alocados para o projeto.

Visão Geral

Este documento está organizado da seguinte forma:

  • Representação da Arquitetura
  • Metas e Restrições de Arquitetura
  • Visão de Casos de Uso

Representação da Arquitetura

O sistema faz uso do Framework Django, que faz uso do padrão MVC. No entanto, tal plataforma possui uma interpretação singular em relação à organização de camadas. O indicado é considerar que a própria plataforma faz o papel da camada de controle, enquanto a camada de Modelo e de Visão devem ser adaptadas e reinterpretadas conforme o necessário. Por este motivo, ainda que o Django implemente o MVC, considera-se que o padrão de camadas externalizado pela plataforma é o MTV (Model-Template-View). A utilização de uma arquitetura em camadas é interessante por proporcionar uma clara separação de responsabilidades no código, proporcionando reusabilidade, e reduzindo o esforço de manutenção. Os conceitos de MVC e MTV sero apresentados nas sessões seguintes.

Model View Controller(MVC)

  • Model: camada de acesso a base de dados, é responsável pela leitura e escrita de dados, bem como de suas validações;
  • View: camada de apresentação das informações, é responsável pela interação com o usuário;
  • Controller: camada responsável pelas as regras de negócios do sistema, é responsável por receber e processar as requisições do usuário, controlando o fluxo de informações entre as demais camadas.

A imagem a seguir apresenta as interações entre as camadas:

Model Template View(MTV)

  • Model: segue a mesma definição da model no MVC;
  • Template: segue a mesma definição da view no MVC;
  • View: segue a mesma definição da controller no MVC.
  • Forms: a camada de Forms não faz parte do MTV, mas é uma forma de agrupar todas as classes usadas para descrever os formulários utilizados na aplicação. Se comunica diretamente com a modelo, de forma a mapear os atributos das entidades, e com a View, para refletir o mesmo mapeamento na camada de Template.

A imagem a seguir apresenta as interações entre as camadas:

Figura 1. Padrão arquitetural MTV.

Metas e Restrições de Arquitetura

As metas e restrições do projeto que possuem influência significativa na arquitetura são:

  • Todas as restrições e faixas de qualidade estipuladas no Documento de Visão devem ser levadas em consideração.

Visão de Casos de Uso

  • Os casos de uso do sistema são listados abaixo:
  • Cadastrar usuário
  • Cadastrar produto
  • Cadastrar comércio
  • Cadastrar preço
  • Ver detalhes do produto
  • Pesquisar produtos
  • Gerenciar lista de compras
  • Denunciar item
  • Gerenciar denúncias
  • Deletar itens
  • Realizar login
  • Realizar logout

O diagrama abaixo descreve os casos de uso no sistema:

Figura 2. Diagrama de Casos de Uso.

Visão Lógica

Esta seção detalha a visualização lógica da arquitetura, descrevendo as classes e pacotes mais significativos.

Visão Geral

A visualização lógica do sistema EconomizAqui é composta de 3 pacotes principais, sendo eles:

  • Usuários: contém as classes de models, forms e services, bem como os templates e regras de negócios relacionados às funcionalidades de usuários.

  • Produtos: contém as classes de models, forms e services, bem como os templates e regras de negócios relacionados às funcionalidades de produtos.

  • Mercados: contém as classes de models, forms e services, bem como os templates e regras de negócios relacionados às funcionalidades de mercados.

Visão de Modelos

Figura 3. Diagrama UML das Models utilizadas no projeto.