Documento de Arquitetura - Desenho-Grupo2/PlanUp GitHub Wiki
Este documento possui como finalidade elucidação das questões relacionadas à implementação arquitetural do projeto PlanUp, desenvolvido na disciplina de Desenho de Software, que possui como clientes os alunos da Faculdade Gama - UnB.
Este documento descreve os detalhes sobre as características arquiteturais do software PlanUp a ser desenvolvido, especificando os problemas relacionados a arquitetura da solução em software. O documento é dividido da seguinte maneira: inicialmente é apresentada a arquitetura da solução, em seguida as metas e restrições desta arquitetura são descritas, depois são apresentadas diversas visões sobre elementos da arquitetura e por fim todos os recursos referentes ao tamanho, desempenho e qualidade do software. Durante o documento serão apresentados os diagramas de casos de uso, pacotes, classes e a representação diagramada da modelagem do banco de dados.
O projeto PlanUp utilizará a arquitetura MTV (model-template-view), que é o padrão utilizado na linguagem Python com o framework Django e que organiza o sistema em três partes distintas: modelo, template e view. A camada de modelo é o lugar onde os dados são estruturados, consultados e validados. Ela se conecta diretamente com a camada de controle (view) pois a camada de controle que, através do input da camada de visão (template), irá definir quais dados serão consultados para que a camada de modelo faça conexão com a base de dados, e retorne sua resposta baseando-se nos dados analisados ou alterados. Um exemplo de classe da camada de modelo é a verificação de login, pois é uma ação requisitada por um ator que passa pela camada de visão, controle e, por fim, chega na camada de modelo para ser validada ou não.
A camada de visão (template) é a responsável por todas as interações com o usuário e também fará contato com a camada de controle para definir quais informações serão mostradas para o usuário. As principais funções da camada de visão são mostrar a interface gráfica para os usuários e fazer a comunicação com a camada de controle. Um exemplo dessa camada é a interface do usuário na aplicação.
A camada de controle (view) é a camada que faz a ligação entre usuário e os dados, tendo vital importância dentro da arquitetura de nosso sistema. Os principais métodos que serão implementados estão na camada de controle. Para que essa camada execute os métodos ela recebe os comandos passados pelo usuário através da camada de visão e manipula os dados recebidos da camada de modelo.
Esse modelo pode ser visto na figura abaixo.
Figura 1: Representação da Arquitetura
Clique aqui para visualizar a imagem maior
O MTV em Django segue o mesmo padrão da arquitetura MVC que outras linguagens utilizam, só se difere na questão de nomenclatura. A model tanto no MTV quanto no MVC mantém a relação entre os objetos e o banco de dados. A model é utilizada para trabalhar tanto com o banco de dados quanto com a view. O framework Django em sua versão 2.0.4 disponibiliza uma biblioteca Models, que ajuda a se trabalhar com o banco de dados de maneira mais rápida.
O template e a view do MTV e MVC respectivamente, possuem as mesmas funções de oferecer uma interface gráfica para o usuário além de ser a representação dos dados em formato específico, gerada a partir da controller.
A Controller é utilizada para que seja possível realizar a conexão entre a tela onde o usuário consegue interagir com o software e os dados armazenados do programa, de modo que são realizadas ações relacionadas à manipulação desses dados do banco, como: listar, procurar, alterar, inserir ou deletar informações. Para realizar essas funções os views do Django recebem as requisições HTTP do browser direcionando para aos templates específicos, e, assim, executando os métodos solicitados.
O projeto será implementado usando a linguagem de programação Python, em sua terceira versão (Python3), no framework de desenvolvimento Django na versão 2.0.4 e terá comportamento responsivo, ou seja, o mesmo site da aplicação será otimizado para uso tanto em dispositivos móveis, quanto desktops, utilizando o framework de desenvolvimento front-end Bootstrap 3.
Clique aqui para visualizar a imagem maior
Figura 2: Diagrama de Pacotes PlanUp
Figura 3: Diagrama de Domínio PlanUp
Clique aqui para visualizar a imagem maior
Figura 4: Diagrama de Casos de Uso PlanUp
Clique aqui para visualizar a imagem maior
Utilizamos a diagramação de casos de uso para exemplificar melhor as features do nosso sistema. Essas features estarão presentes no Documento de Features . e os cenários de cada feature está presente em Cenários .
Figura 5: Diagrama de Classes PlanUp