O documento discute diferentes estilos arquiteturais para sistemas de software, definindo estilo arquitetural como um conjunto de regras e restrições que visam obter atributos de qualidade desejados. Exemplos de estilos abordados incluem camadas, SOA, pipes e filtros, componentes e client-server. O autor argumenta que estilos evoluem para atender novas necessidades, propondo o estilo SoMAr para arquiteturas sociais.
6. ArquiteturadeSoftware
Oqueé?
“A arquitetura de software de um programa ou sistema
computacional é a estrutura (ou estruturas), a qual envolve os
elementos de software, as propriedades desses elementos
visíveisexternamenteeseusrespectivosinter-relacionamentos”
SoftwareArchitectureinPractice.
LenBass,PaulClements,RickKazman
16. Design
Conjunto de Constraints
Atributos de
Qualidade
Estilo
Arquitetural
LimitaVisa
atender
Alta disponibilidade,
performance,
discoverability,
Segurança,
interoperability, etc..
Estabelece
Limitam como a
aplicação deve ser
construída, como
seus componentes e
conectores devem
se comunicar.
SOA, REST, Camadas,
CDB, Client-server,
Pipes&filters…
Software
By Vanilson Burégio
vanilson.com
Software é o produto.
17. Adotando essa definição…
• Podemos consider como estilos arquiteturais:
SOA
Pipes&filters
REST
Camadas
Client-server
peer-to-peer
Data-flow
Blackboard
Publish-
subscribe
Event-based
….
20. EstiloArquiteturalemCamadas
Constraints
Dividir logicamente o sistema em camadas com responsabilidades bem
definidas. As funcionalidades do sistema são separadas de acordo com
os papéis de cada camada
Modelo mais comum: MVC (acesso a dados, apresentação e controle).
A camada superior utiliza os serviços fornecidos pela camada inferior,
nunca o contrário!
Atributos de Qualidade
Aumento da Coesão;
Performance: a distribuição das camadas sobre múltiplas camadas
físicas pode melhorar a escalabilidade, tolerância a falhas, e
performance.
Isolamento: é possível isolar atualizações tecnológicas (upgrades) em
camadas individuais para reduzir riscos e minimizar o impacto em todo
sistema.
Manageability. A separação de conceitos core ajuda a identificar
dependências e organizar o código em partes mais fáceis de gerenciar
Reusabilidade: definição de papéis promove reusabilidade. No modelo
MVC, por exemplo, a camada do controlador pode ser facilmente
reutilizada com uma camada de apresentação diferente (já fiz isso).
21. EstiloArquiteturalSOA(Service-OrientedArchitecture)
Constraint
Aplicação deve expor e consumir funcionalidades
como um serviço, usando contratos e mensagens
Atributos de Qualidade
Abstração. Serviços são autônomos e acessados
através de um contrato formal, que prove BAIXO
acoplamento e abstração
Discoverability: serviços podem expor descrições
que permitem outras aplicações e serviços localizá-
los e automaticamente determinar a interface;
Interoperabilidade: como os protocoles e
formatos de dados são baseados em padrões da
indústria, o provedor e consumidor de um serviço
pode ser construído e implantado em diferentes
plataformas
22. • Constraint
– Projetar o sistema como um conjunto de filters que transformam stream de dados
de entrada em um stream de dados de saída e os pipes conduzem os streams de
dados.
– Filtros são independentes (não armazenam estado) e não têm conhecimento dos
filtros conectados a ele.
– Exemplos: Unix: ps –a | grep java | sort. Estilo adotado pelas aplicações geradas
com o ifttt.com, Yahoo pipes, etc
• Atributos de Qualidade
– Execução concorrente;
– flexibilidade de composição: filtros podem ser adicionados, substituídos, e reusados,
sendo possível combinar 2 filtros quaisquer);
– composição comportamental: o comportamento do sistema é a sucessão dos
comportamentos dos seus componentes (filters).
EstiloArquiteturalPipes&Filters
23. • Constraint
– Decompor a aplicação em componentes (funcionais ou lógicos) reutilizáveis
que expõem interfaces bem definidas de comunicação
• Atributos de Qualidade
– reusabilidade;
– facilidade de deployment: substituição de uma versão do componente por
outra não gera impactos no sistema, pois a interface de comunicação do
componente é mantida;
– redução de custo: uso de componentes de terceiros permite a diluição do
custo de desenvolvimento e manutenção
EstiloArquiteturalbaseadoemcomponentes
24. • Constraint
– “Segregrar” o sistema em 2 tipos de aplicações, onde a aplicação do tipo
cliente faz requisições ao servidor.
– Na maioria dos casos, o servidor implementa toda a lógica da aplicação e
acesso aos dados
• Atributos de Qualidade
– Maior segurança: todos os dados ficam armazenados no servidor, que
geralmente oferece maior controle de segurança que as aplicações clientes;
– acesso a dados centralizado;
– fácil manutenção: atualizações e reparados da aplicação feitos em um único
ponto: servidor.
EstiloArquiteturalclient-server