Documento de Arquitetura - msfernandes/busine.me GitHub Wiki
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.
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.
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.
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.
####Diagrama de Colaboração
- O usuário acessa uma URL do Busine.me, por exemplo a busca de linhas de ônibus.
- A URL executa o método definido na View, como buscar linhas de ônibus.
- A View invoca a Model relacionada.
- A Model, por sua vez, invoca a API, que no caso do Busine.me há duas formas, a offline e a online.
- Qualquer uma das duas APIs irá retornar o resultado na forma da Model relacionada.
- O resultado chega na View para os devidos tratamentos.
- A View retorna o que é preciso para o Template.
- O Template trata os dados de forma que o usuário entenda.