<< Chapter < Page | Chapter >> Page > |
Como já mencionamos anteriormente, a monitoração e a análise do estado atual do sistema podem consumir muitos recursos computacionais, impactando negativamente no desempenho. Por outro lado, ao possibilitarmos a análise do software em tempo de execução, podemos identificar problemas inicialmente desconhecidos na arquitetura, como gargalos de desempenho ou pontos únicos de falhas. Com estes problemas identificados, o arquiteto pode então corrigi-los na arquitetura, melhorando assim o desempenho e a tolerância a faltas do software.
Este capítulo expôs o que um arquiteto deve saber em relação às técnicas e princípios de design arquitetural. Devemos admitir que seu objetivo é ambicioso, uma vez que que existem muitos livros e artigos de Design de Software sobre o mesmo assunto. No entanto, a maioria dos livros e artigos disponíveis não são explicitamente escritos sobre Arquitetura de Software ou não têm como público-alvo o leitor ainda inexperiente. Daí nossa tentativa de preencher esta lacuna.
Ao final deste capítulo, esperamos que o leitor conheça os seguintes princípios de design arquitetural:
Mas, além disso, esperamos que o leitor também reconheça algumas táticas que implementam os seguintes atributos de qualidade:
Para informações mais detalhadas sobre os princípios e técnicas apresentados, deixamos uma lista de referências para estudos posteriores.
Sobre os benefícios e aplicação da abstração e separação de preocupações no design de software, recomendamos a leitura do livro Code Complete [link] , de McConnell. Além dele, podemos citar os seguintes artigos sobre o assunto: The Structure of The THE-multiprogramming System [link] , de Dijkstra , e o On The Criteria to Be Used in Decomposing Systems Into Modules [link] , de Parnas.
Há diversos padrões e estilos arquiteturais, inclusive catalogados de acordo com seus objetivos. Apesar de termos citado apenas quatro padrões que foram inicialmente descritos por Buschmann, existem muito mais padrões descritos por este autor e outros autores na série de livros Pattern-Oriented Software Architecture [link] , [link] , [link] , [link] . Recomendamos também sobre o assunto os livros Patterns of Enterprise Application Architecture [link] , escrito por Fowler, e o Software Architecture in Practice [link] , escrito por Bass et al .
Sobre técnicas arquiteturais, podemos citar o livro Beautiful Architecture [link] , editado por Spinellis e Gousios. Ele mostra na prática a aplicação de diversas técnicas para o alcance de requisitos de qualidade por meio do design arquitetural. Sendo menos prático, porém mais abrangente na exposição de técnicas arquiteturais, podemos citar tanto o livro Software Architecture: Foundations, Theory, and Practice [link] , de Taylor et al , quanto o livro Software Systems Architecture [link] , de Rozanski e Woods. O livro The Art of Systems Architecting [link] , de Maier e Rechtin, descreve poucas (porém valiosas) técnicas de arquitetura de software. Neste livro, as técnicas são chamadas de heurísticas.
Podemos ainda mencionar alguns artigos sobre desempenho de software em geral: Performance Anti-Patterns [link] , de Smaalders; sobre replicação de dados: Optimistic Replication [link] , de Saito e Shapiro; e sobre segurança: In Search of Architectural Patterns for Software Security [link] , de Ryoo et al .
Por fim, mencionamos dois blogs que contêm muitas descrições de problemas arquiteturais reais e como foram resolvidos na indústria: o HighScalability.com [link] e o Engineering @ Facebook [link] .
Notification Switch
Would you like to follow the 'Arquitetura de software' conversation and receive update notifications?