Estilos e Padrões Arquiteturais

There are no wrong answers in architecture, only expensive ones.
Mark Richards

Bons arquitetos garantem que as melhores práticas de arquitetura sejam adotadas durante o desenvolvimento de um software. Isso implica na elaboração, revisão e estruturação cuidadosa de componentes, seus relacionamentos e responsabilidades, garantindo que objetivos de negócio sejam atingidos, as restrições respeitadas e os atributos de qualidade atendidos, minimizando o custo e o risco.

Manual do Arquiteto de Software

O que é arquitetura de software? Qual o papel do arquiteto? Quais práticas de arquitetura posso adotar para ser um bom arquiteto?.

Acessar livro

É importante que se entenda que cabe ao arquiteto orquestrar as tomadas de decisão, não necessariamente tomá-las. Em um mundo onde o ritmo da mudança é tão acelerado,  ser especialista em todos os assuntos é praticamente impossível.
0
Considerações?x

Especialista é aquele que sabe cada vez mais, sobre cada vez menos.

Cabe ao arquiteto, então, envolver os especialistas no momento certo. Também, cabe a ele recorrer a práticas consolidadas com eficácia demonstrada. Isso envolve a adoção de padrões e estilos arquiteturais.

Por que estilos e padrões são importantes

Toda escolha implica em uma renúncia. Maximizar a entrega de valor, com o menor custo e risco, muitas vezes implica na resolução de trade-offs.

Não há uma fórmula pronta ou “bala de prata” em arquitetura de software. Todo projeto que vale a pena apresenta desafios únicos que demandam escolhas. Entretanto, cada decisão seja “virtualmente” única, afinal nenhum software é igual ao outro, há similaridades entre problemas que permitem, para aqueles com conhecimento ou experiência, maior eficiência na busca de soluções.

O enfrentamento recorrente de problemas semelhantes no design de software fez emergir um conjunto considerável de padrões e estilos arquiteturais – ou seja, abordagens recorrentes para resolver problemas semelhantes. Bons arquitetos conhecem esses padrões e estilos e os adotam de forma a serem mais eficientes.
0
Considerações?x

O conjunto de padrões e estilos arquiteturais compreende o “repertório” de um arquiteto. Quanto maior esse repertório, mais valor em sua aplicação.

Estilos arquiteturais

Estilos são abstrações  que descrevem como os componentes de um software devem ser organizados.

Um software que utiliza o estilo client-server, define alguns componentes: cliente, servidores e o protocolo que faz comunicação entre eles. Podemos implementar este estilo com diferentes clientes, diferentes protocolos ou até mesmo com múltiplos servidores, mas ainda estamos falando do estilo client-server.

Microsserviços, outro estilo arquitetural, estabelece um alto grau de desacoplamento através de componentes delimitados por um contexto de negócio. Novamente um software pode utilizar este estilo com diferentes protocolos de rede para comunicação entre seus componentes.

 Quando um arquiteto começa a pensar em um software, escolhe um estilo. Isso irá nortear suas futuras decisões. A escolha correta do estilo pode facilitar o atendimento dos objetivos de negócio, restrições e atributos de qualidade.
0
Considerações?x

Padrões arquiteturais

Diferenciar estilo arquitetural e padrão arquitetural pode ser confuso, levando arquitetos a considerarem conceitos iguais. Padrão arquitetural é uma forma de resolver problemas específicos e frequentes dentro um estilo arquitetural. Enquanto que estilo arquitetural define, de forma macro, a “organização” de uma sistema, sem levar em consideração um “problema” específico. 

Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice

Uma aplicação com o estilo arquitetural baseado em serviços, pode implementar diversos padrões arquitetônicos para resolver problemas específicos. O padrão arquitetural Gateway pode ser utilizado para reduzir acoplamento aferente de serviços expostos via APIs internas. Dentro do mesmo sistema podemos adotar o padrão de caching para resolver problemas de desempenho em um serviço.

Uma vez identificada a necessidade em adotar um padrão, o próximo passo é planejar como aplicá-lo dentro do seu contexto. Adotar um padrão “às cegas” é receita para falha. Podemos ter o mesmo padrão implementado de diversas formas, inclusive levando a implementação de outro padrão arquitetural para atender o contexto.

Conforme a aplicação evolui, tensões na estratégia arquitetural (objetivos de negócio, restrições e atributos de qualidade) surgem, criando “novos” problemas para serem resolvidos. Diferente de um estilo arquitetural, padrões são utilizados em qualquer momento do ciclo de vida da aplicação, para resolver essas tensões na estratégia arquitetural. Habilidade de entender quando e como adotar padrões arquiteturais é chave para arquitetos planejarem softwares bem-feitos, com o menor custo e risco.
0
Considerações?x

Concluindo

Sabemos que padrões e estilos, então, constituem o repertório do arquiteto. Dedicaremos os próximos capítulos apresentando em profundidade alguns deles. Faremos isso, com exemplos reais, baseados em nossa experiência ajudando empresas de todos os segmentos.

Importante não esquecer: no “fim do dia” queremos software que atende os objetivos do negócio, respeitando restrições e atingindo atributos de qualidade. Esse é um grande desafio que não pode ser “enfrentado” apenas com boa vontade. Conhecimento sólido vai te ajudar a fazer a diferença!

Referências bibliográficas

RICHARDS, Mark; FORD, Neal. Fundamentals of Software Architecture: an engineering approach. Sebastopol, Ca: O’Reilly Media, Inc, 2020.

CLEMENTS, Paul et alDocumenting Software Architectures: views and beyond. 2. ed. Boston, Ma: Addison Wesley, 2011. (The SEI Series in Software Engineering).

TAYLOR, Richards N. et al. Software Architecture: Foundations, Theory and Practice. 1. ed. Hoboken, NJ: Jhon Wiley & Sons Inc, 2010.

Compartilhe este capítulo:

Compartilhe:

Comentários

Participe da construção deste capítulo deixando seu comentário:

Inscrever-se
Notify of
guest
0 Comentários
Feedbacks interativos
Ver todos os comentários

AUTOR

Gabriel Kohlrausch

Arquiteto de software com experiência executiva e especialista no desenvolvimento de aplicações corporativas complexas.

AUTOR

Rafael Silva

Arquiteto de software especialista em qualidade de código, domain driven design e arquitetura de software corporativo.

COAUTOR

Elemar Júnior

Fundador e CEO da EximiaCo, atua como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia. 

TECH

&

BIZ

-   Insights e provocações sobre tecnologia e negócios   -   

55 51 9 9942 0609  |  me@elemarjr.com

55 51 9 9942 0609  |  contato@eximia.co

0
Quero saber a sua opinião, deixe seu comentáriox
()
x