Documento de Arquitetura - msfernandes/busine.me GitHub Wiki

Finalidade

Este documento apresenta uma visão geral da arquitetura do software, ou seja, o modo como este é implementado. Por meio de diferentes tipos de visões que se propõem a demonstrar aspectos da arquitetura.

Escopo

Neste documento pretende-se mostrar os principais aspectos da arquitetura do sistema web denominado Busine.me. A arquitetura será demonstrada através de um conjunto de visões, que juntas pretendem demonstrar os principais aspectos técnicos da arquitetura, desde de o desenho até a implementação. Será destacada em cada parte o motivo da criação de cada visão e qual a sua influência para o sistema como um todo, buscando sempre alta coesão e baixo acoplamento.

Model-Template-View(MTV)

O padrão escolhido para a arquitetura foi o MTV (model, template, view), padrão que permite que o usuário interaja apenas com camada view reservando todo o código para o desenvolvedor. O MTV é uma arquitetura, ou padrão arquitetural, que permite dividir o sistema em camadas permitindo a resolução de problemas futuros independente de sua complexidade.

  • Model(Modelo): é a camada que representa abstração do domínio de negócio, transformando-o em classes.

  • Template(Template): é a camada responsável pela interação com o usuário, não havendo a necessidade dele entrar em contato com o código fonte.

  • View(Visão): é a camada responsável por todas as comunicações entre a model e view, assim como pela execução das operações necessárias. No Busine.me ainda temos mais uma camada, a camada de Parser.

  • Parser: responsável por popular o banco com os dados do governo.

Metas e Restrições da Arquitetura

As restrições em relação a arquitetura do sistema são:

  • Será desenvolvido em Python 3 com o framework Django 1.8.4.
  • Banco de dados PostgreSQL, para ambiente de produção, e SQLite, para ambiente de desenvolvimento.
  • Será disponibilizado na web, com isto o usuário vai ter acesso somente quando estiver online.
  • Deverá ser utilizada a arquitetura MTV.
  • Deverá estar disponível 24h/dia, todos os dias.

Visão Lógica

####Diagrama de Colaboração

  1. O usuário acessa uma URL do Busine.me, por exemplo a busca de linhas de ônibus.
  2. A URL executa o método definido na View, como buscar linhas de ônibus.
  3. A View invoca a Model relacionada.
  4. A Model, por sua vez, invoca a API, que no caso do Busine.me há duas formas, a offline e a online.
  5. Qualquer uma das duas APIs irá retornar o resultado na forma da Model relacionada.
  6. O resultado chega na View para os devidos tratamentos.
  7. A View retorna o que é preciso para o Template.
  8. O Template trata os dados de forma que o usuário entenda.
⚠️ **GitHub.com Fallback** ⚠️