Documento de Arquitetura - Desenho-1-2018-G-6/docs GitHub Wiki

Data Versão Modificação Autor
03/04/2018 1.0 Inicializa o documento com a estrutura básica e completa Guilherme Lacerda e Ícaro Oliveira
13/04/2018 1.1 Adiciona diagramas de sequência e de atividade Guilherme Lacerda

Sumário

1. Introdução

2. Representação da Arquitetura

3. Metas e Restrições de Arquitetura

4. Visão e Casos de Uso

5. Visão Lógica


1. Introdução

   O objetivo desse documento é apresentar e detalhar a arquitetura que será utilizada na plataforma Mamid. Dessa maneira, visa-se atingir um entendimento mútuo entre os desenvolvedores do projeto, de forma que seja entendida a estrutura utilizada para desenvolver o software, além das consequências que a escolha de tal arquitetura implica.

1.1. Finalidade

   Este documento visa estabelecer de forma clara as especificidades sobre as decisões arquiteturais para que as consequências diminuam os riscos e que todo o time consiga evoluir e manter o software. O desenvolvedor que ler esse documento obterá uma visão geral de como esse software está estruturado, assim como os casos de uso abordados.

1.2. Escopo

   O Mamid é uma plataforma projetada para a comercialização de artefatos de tecnologia. Ele busca auxiliar e facilitar na busca e na venda desses produtos.

   Este documento especificará a arquitetura utilizada no projeto, visando uma padronização para as decisões que serão tomadas durante o desenvolvimento da plataforma, de forma a maximizar, assim, a objetividade do desenvolvimento.

   O documento afetará toda a construção do programa: casos de uso e histórias de usuário, diagramas de classe, casos de teste, todo o prosseguimento do projeto tomará como base as arquiteturas aqui descritas.

2. Representação da Arquitetura

   O modelo arquitetural adotado pelo framework Rails, ou seja, MVC, consiste em três partes ou camadas: Model, View e Controller.

   1. MODEL : Contém dados ou informações sobre a aplicação, além do estado da mesma, juntamente com as regras do negócio, ou seja, representa os dados do sistema a partir de informações abstraídos do mundo real.;

   2. VIEW : Interface da aplicação, renderizando formulários, páginas, informações, etc. É passiva, ou seja, não faz processamento lógico dos dados.

   3. CONTROLLER : Realiza operações ou manipulações nos dados/informações interagindo com a Model e interpretando os eventos realizados na View. Dessa maneira, essa camada é responsável por fazer a interação entre o usuário e o sistema.

3. Metas e Restrições de Arquitetura

   Quanto as metas, pode-se dizer:

  O framework Rails promove alguns princípios, sendo um deles DRY ("Don't Repeat Yourself”) este sugere que o desenvolvedor não escreva o mesmo código diversas vezes, de maneira à minimizar o trabalho e a redundância no código, a aplicação Mamid deve priorizar esse principio em sua arquitetura.

   A aplicação Mamid toma decisões arquiteturais baseadas no REST, REST(“Representational State Transfer”) é um apanhado de princípios que definem como os padrões da Web devem ser aplicados, tais como atribuir uma identidade (ID) a todas as classes, usar métodos padronizados, representação múltipla de recursos, etc.

   O Rails valoriza Convention Over Configuration isso permite que o tempo de desenvolvimento seja reduzido, com padrões para nomes de classes, etc. A aplicação tem como meta seguir as convenções arquiteturais do framework rails.

   No que se refere a usabilidade, a proposta é que a aplicação seja intuitiva, de maneira que o usuário tenha facilidade ao usar o sistema.

   Dentro de Segurança, objetiva-se que a aplicação deva oferecer certa segurança ao usuário quanto aos seus dados pessoais. Também é necessário que seja ofertado a persistência dos dados armazenados, bem como manter a integridade dos mesmos.

   A arquitetura MVC facilita a manutenibilidade de código, estabelecendo padrões, que possibilita a possível inclusão de novas funcionalidades e correções.

  Objetiva-se que a aplicação deva ser capaz de rodar em diversas plataformas.

4. Visão de Casos de Uso e de História de Usuário

5. Visão Lógica

5.1 Visão Geral

5.1.1 Diagrama de Pacotes

  O diagrama de pacotes do projeto é dividido da seguinte maneira:

diagramadepacotes

  1 – App : Nessa pasta está localizado o núcleo do projeto, englobando as pastas da Model, View e Controller.

  2 – DB : Nessa pasta esta localizado arquivos de configuração relacionados ao banco de dados alem das migrations que são representações das tabelas.

  3 – Config : O foco dessa pasta é a configuração geral das aplicações. As rotas e o banco de dados utilizado são exemplos de configurações que essa pasta definem.

  4 – Test : Nessa pasta estão localizados os testes que serão realizados para a validação da plataforma. Os testes estão divididos de maneira que existem validações para os três núcleos do projeto, ou seja, a MVC(Model – View – Controller).

5.1.2 Diagrama de Sequência

   O objetivo desse documento é apresentar e detalhar a sequência lógica esperada de comunicação entre objetos, entidades e atores na plataforma Mamid. Dessa maneira, visa-se atingir um entendimento mútuo entre os desenvolvedores do projeto, de forma que seja entendida a abordagem utilizada para desenvolver o software, além das consequências que a escolha de tal estratégia implicam.

Diagrama de Sequência

5.1.3 Diagramas de Atividade

  A linguagem unificada de modelagem pode modelar vários subconjuntos de diagramas, incluindo diagramas de estrutura, de interação e de comportamento. No foco deste documento, os diagramas de atividade são um subconjunto do diagrama de comportamento, sendo considerados isomórficos. Junto com diagramas de caso de uso e de máquina de estados, eles descrevem as atividades de negócios e funcionalidades de sistemas de software. É necessário um conjunto de símbolos especiais, incluindo aqueles para dar partida, encerrar, fundir ou receber etapas no fluxo, para criar um diagrama de atividade. Os diagramas a serem mostrados a seguir serão abordados em relação aos principais fluxos do site Mamid, tratando somente os implementados.

  • Cadastro

Cadastro

  • Login

Login

  • Compra de Produtos

Compra de Produtos

5.2. Pacotes de Design Significativos no Ponto de Vista da Arquitetura

5.2.1 View (Visão)

  É a parte visual do sistema onde acontece a interação do usuário com o sistema. Em rails ela inclui arquivos .html.erb que são templates que definem a forma como os dados serão exibidos para o usuário.

5.2.2 Model (Modelo)

  Essa pasta tem como objetivo a abstração das entidades do mundo real utilizadas na plataforma. Por exemplo, um usuário no Mamid deverá possuir inúmeros campos obrigatórios, como nome, CEP e e-mail. Dessa maneira, essa pasta é responsável por armazenar a definição de uma entidade que faz a representação desse membro no sistema. As models também são responsáveis pela comunicação com o banco de dados.

5.2.3 Controller (Controladora)

  Essa pasta tem como objetivo fazer a conexão entre a view e a model, de maneira que são utilizados métodos para fazer tal interação. Por exemplo, um login é realizado na view, passando pelo método correspondente à tal ação na controller e finalmente chegando até a model, que fará a conexão com o banco de dados. Por padrão, cada controladora tem o padrão "controller" no final do arquivo.

5.2.4 Database (Banco de Dados)

  O pacote database tem o schema que é uma imagem do estado atual do banco, além de arquivos de configurações do banco. O pacote também database contém as migrations, que controlam o versionamento do estado das tabelas do banco.

5.2.5 Test (Teste)

  Contém arquivos de teste que serão usados em todo programa para realizar testes de aplicação e de controles de aplicação, como por exemplo os testes no login para ter certeza de que nenhum usuário será cadastrado incorretamente etc.