Estilo e Padrões Arquiteturais - Software-Design-2017/SSMais GitHub Wiki

Data Versão Descrição Autor(es)
23/11/2017 1.0 Criação da Estrutura Ronyell Henrique
23/11/2017 1.1 Adição da introdução Marcelo Augusto
23/11/2017 1.1 Adição do Estilo Arquitetural Marcelo Augusto
23/11/2017 1.2 Adição do Padrão Arquitetural Thiago Nogueira

Introdução

Uma arquitetura de software, ou somente uma visão de arquitetura, pode se orientar por um estilo arquitetural.

Trata-se de um conjunto de “padrões” , os quais procuram impor um determinado grau de uniformidade à arquitetura.

Um estilo arquitetural são como templates para a arquitetura concreta.

Em geral, sistemas seguem algum tipo de estilo, ou padrão, de organização estrutural. Esses estilos podem ser diferidos nos tipos de componentes utilizados, ou na maneira como esses componentes interagem entre si.

De acordo com o App Arch Guide, um estilo arquitetural é:

Um estilo arquitetural, muitas vezes chamado como padrão arquitetural, é um conjunto de princípios, padrões de alta granularidade que provê um framework abstrato para uma família de sistemas. Um estilo arquitetural melhora uma estrutura particionando e especificando a mesma, e também consegue tornar essa estrutura mais reutilizável provendo soluções para frequentes problemas recorrentes. Um estilo de arquitetura e/ou padrões são um conjunto de princípios que formam uma aplicação.

Logo, ao se implementar um sistema, sempre vinha acontecendo alguns tipos de problemas semelhantes, e então foram sendo desenvolvidas soluções para esses problemas, surgindo assim os estilos arquiteturais.

Por fim, pode-se dizer que um estilo arquitetural é um conceito organizacional, central de um sistema que definem meios de selecionar e apresentar blocos de construção de arquitetura. Enquanto um padrão arquitetural descreve uma solução granular a nível de sub-sistemas ou módulos e seus relacionamentos.

São exemplos de estilos arquiteturais:

  • Stand-alone
  • Cliente-servidor
  • N-Camadas
  • Pipe and filters, entre outros.

São exemplos de padrões arquiteturais:

  • MVC
  • Broker

O framework será desenvolvido com o auxilio do estilo arquitetural N-camadas, através do padrão arquitetural MVC.

Entretanto, o MVC é implementado no Django através de um outro padrão de projetos, o MTV. Esse padrão é baseado em três componentes: Model, template e view.

A arquitetura do Django, de acordo com o DjangoBook, é um framework que segue o MVC da sua própria maneira, como MTV.

Estilo Arquitetural

O estilo N-Camadas é utilizado para projetar interfaces de subsistemas, organizadas em um conjunto de camadas onde cada uma dessas camadas fornecem um conjunto de serviços.

Esse estilo apoia o desenvolvimento de sistemas incrementais em diferentes camadas, onde quando uma camada é alterada apenas a camada adjacente sofre impacto. Com isso é possível criar um sistema dividindo as complexidades em níveis (camadas), mais tratáveis e com preocupações específicas.

O framework será desenvolvido com o auxilio do estilo arquitetural N-camadas, através de uma adaptação do padrão arquitetural MVC.

Muito comumente ao se utilizar estilos arquiteturais é necessário a utilização de padrões de projetos GOF (Gang of Four). No N-Camadas, é comum se utilizar dois padrões GOFs, o Observer e o Facade.

Padrão Arquitetural

O padrão que melhor se encaixa no contexto deste projeto é o padrão arquitetural MVC, pois por se tratar de uma aplicação web é bem difundida a ideia que o que mais se adequa a aplicações web é o MVC. Como um dos autores cita a evolução dos computadores, e também da web e de sistemas dinâmicos, foi necessário o deselvolvimento de alguns padrões arquiteturais e uma delas foi o MVC. O padrão arquitetural MVC se difundiu muito com o surgimento e crescimento da internet.

Observando a essência do padrão arquitetural MVC, fica evidênciado alguns padrões de projeto que são implementados para que a arquitetura se comporte como esperado. Os principais padrões arquiteturais que se pode observar são:

  • Observer
  • Facade

O padrão arquitetural MVC evidência muito a utilização destes dois padrões de projeto. Estes padrões são implementados por uma ordem entre as camadas do padrão arquitetural. O padrão Observer é utilizado quando as camadas inferiores como a Controller necessitam se comunicar com a View, pois é necessário que as camadas inferiores fiquem observado o comportamento das cadamas superiores e reajam quando necessário. Um exemplo da aplicação de um Observer é o simples fato de quando a Controller fica observando mudanças que podem acotecer em uma mapa de uma página e precisa reagir as mudanças.

No outro sentido indo da camada superior para a camada inferiore o padrão de projeto que é utilizado é o Facade, pois é através de uma fachada que é chamado o que a camada está necessitando. Um exemplo disso é que quando a View solicita uma lista de objetos que está armazenados na Model ela não precisa saber como está sendo realizado essa busca e como está retornando está lista, pois a Controller realiza o papel de fachada intervindo e fazendo todo o processo necessário e a View não precisa entender como funciona o processamento, pois já vem tudo pronto para ser exibido.

⚠️ **GitHub.com Fallback** ⚠️