O que é Arquitetura de Software?
Neste artigo, iremos explorar uma variedade de definições de Arquitetura de Software, todas fornecidas por especialistas de renome no campo da engenharia de software. Os conceitos e definições aqui discutidos servirão como alicerce para os demais artigos desta série. Apesar de ser conciso, o conteúdo abordado neste artigo é de suma importância, pois estabelecerá nossos fundamentos sobre o que constitui a Arquitetura de Software.
1. O que é Arquitetura de Software?
De acordo com Bass, Clements e Kazman (2021, p. 29, tradução nossa) “A arquitetura de software é o conjunto de estruturas necessárias para compreender sobre um sistema. Essas estruturas abrangem elementos de software, como esses elementos se relacionam, e sobre as suas propriedades.” Por consequência, a partir da definição de Bass, Clements e Kazman (2021), pode-se concluir que todo sistema de software possui uma arquitetura, uma vez que sistemas são constituídos de elementos e relações.
Bass, Clements e Kazman (2021) complementam a definição de arquitetura afirmando que a compreensão ocorre através da abstração do sistema que se dá por meio da exposição de certos detalhes e ocultação de outros.
Em consonância com Bass, Clements e Kazman (2021), Richardson (2018) afirma que a arquitetura de um sistema é sua representação em alto nível, consistindo de estruturas e dependências entre essas estruturas.
Ambos os autores, Richardson (2018) e Bass, Clements e Kazman (2021), afirmam que a organização dos componentes que compõem a arquitetura colabora para se atingir atributos de qualidades como confiabilidade, escalabilidade e segurança.
Bass, Clements e Kazman (2021) definem o objetivo da arquitetura como sendo o de dar suporte para construção de um sistema visando atender os objetivos do negócio. Dessa forma, o grande propósito das decisões arquiteturais é cumprir com os requisitos funcionais e atributos de qualidade estipulados pelo negócio e stakeholders.
Sem a definição dos requisitos, as decisões de arquitetura são superficiais e muitas vezes prejudiciais uma vez que cada conjunto de decisões possui trade-offs que 29 favorecem certos aspectos e qualidades do sistemas e prejudicam outros (VERNON, JASKULA, 2021).
2. Referências
BASS, Len; CLEMENTS, Paul; KAZMAN, Rick. Software Architecture in Practice. 4th ed. Boston: Addison-Wesley, 2021. 464 p. ISBN: 978-0-13-688609-9.
RICHARDSON, Chris. Microservices Patterns: With Examples in Java. 1st ed. Shelter Island: Manning Publications Co. 2018. 520 p. ISBN: 978-1617294549.
VERNON, Vaughn; JASKULA, Tomasz. Strategic Monoliths and Microservices. 1st ed. Boston: Addison-Wesley, 2021. 352 p. ISBN: 978-0-13-735546-4.
Last updated