.NET - Estilos de Arquitetura e Padrões de Arquitetura


Hoje vamos apresentar os conceitos de estilos de arquitetura e padrões de arquitetura e tentar entender a diferença existente entre eles.

Antes de entrar no assunto do artigo precisamos definir o que é arquitetura de software, e vamos recorrer à MSDN que diz o seguinte:

"Arquitetura de aplicativo de software é o processo de definição de uma solução estruturada que atenda a todos os requisitos técnicos e operacionais, ao mesmo tempo em que otimiza atributos comuns de qualidade, como desempenho, segurança e capacidade de gerenciamento. Envolve uma série de decisões baseadas em uma ampla gama de fatores, e cada uma dessas decisões pode ter um impacto considerável na qualidade, desempenho, capacidade de manutenção e sucesso geral do aplicativo."

Não existe um consenso entre os conceitos de estilos de arquitetura e padrões de arquitetura; inclusive, para a MSDN estilos e padrões de arquitetura são a mesma coisa.

Veja a definição da MSDN :  "Um estilo de arquitetura, às vezes chamado de padrão de arquitetura, é um conjunto de princípios - um padrão que fornece uma estrutura abstrata para uma família de sistemas..."

Eu não acho que seja tão simples assim, então vou apresentar outra visão para este problema e você decide.

Vamos encontrar definições distintas para este conceito como segue:

O estilo de arquitetura é uma solução muito específica para um software específico, que normalmente se concentra em como organizar o código criado para o software.

Ele se concentra em criar as camadas e módulos do software e permitir uma interação apropriada entre os vários módulos para dar os resultados corretos na implementação.

Um padrão arquitetônico é a descrição dos tipos e elementos de relacionamento junto com um conjunto de restrições para implementar um sistema de software. Os padrões geralmente são soluções reutilizáveis para problemas ou modelos comuns.

De qualquer forma, é importante reforçar a idéia de que Estilos Arquitetônicos, Padrões Arquitetônicos e Padrões de Projeto não são mutuamente exclusivos, são complementares e todos podem nos ensinar algo, embora, como de costume, devam ser usados apenas quando necessário.

Estilos arquitetônicos

Os estilos arquitetônicos nos dizem, de forma geral, como organizar nosso código. É o nível mais alto de granularidade e é usado para especificar camadas, módulos de alto nível do aplicativo e como esses módulos e camadas interagem entre si, definindo as relações entre eles.

Exemplos de estilos arquitetônicos:

Um Estilo de Arquitetura pode ser implementado de várias maneiras, com um ambiente técnico específico, políticas, estruturas ou práticas específicas.

Padrões Arquitetônicos

Um padrão é uma solução recorrente para um problema recorrente. No caso dos Padrões Arquitetônicos, eles resolvem os problemas relacionados ao Estilo Arquitetônico.

Por exemplo:

 "quais classes teremos e como elas interagirão, a fim de implementar um sistema com um conjunto específico de camadas",

ou

"quais módulos de alto nível teremos em nossa Arquitetura Orientada a Serviços e como eles se comunicarão" ,

ou

quantas camadas nossa arquitetura cliente-servidor terá“.

Os padrões arquitetônicos têm um impacto extenso na base do código, na maioria das vezes impactando todo o aplicativo horizontalmente (ou seja, como estruturar o código dentro de uma camada) ou verticalmente (ou seja, como uma solicitação é processada das camadas externas para as internas).

Exemplos de padrões arquitetônicos:

Dessa forma podemos distinguir entre estilo e padrão de arquitetura com base no escopo de atuação. Assim :

Além disso, um padrão pode ser usado como padrão de arquitetura ou padrão de projeto, novamente dependendo do escopo em que o usamos, em um projeto específico.

E estamos conversados...

"Não se turbe o vosso coração; credes em Deus, crede também em mim.
Na casa de meu Pai há muitas moradas; se não fosse assim, eu vo-lo teria dito. Vou preparar-vos lugar."

João 14:1,2

Referências: