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