A arquitetura de software de um sistema consiste na definição components de software, suas propriedades externas e seus relacionamentos com outros softwares.

O que define uma boa arquitetura de software

Complexidade acidental e complexidade essencial

<mark style="background: #FF5582A6;">Complexidade acidental:</mark> É aquela que é decorrente da solução adota

Ex Escolher entre utilizar monolitos ou microserviços, frameworks A ou B, banco de dados relacionais ou não relacionais são exemplos de complexidade acidentais


<mark style="background: #ABF7F7A6;">Complexidade essencial:</mark> É aquela que é inerente ao problema a ser resolvido

Ex A coordenação de motoristas de aplicativos, ou seja, identificar os motoristas disponíveis nas imediações da solicitação de uma chamada, faz parte do problema não podendo ser evitada.


<mark style="background: #D2B3FFA6;">Arquitetura de software / Design de software</mark>


![[Pasted image 20231018090107.png]]

O que são estilos e padrões arquiteturais?

Um <mark style="background: #ADCCFFA6;">estilo arquitetural</mark> define como o código é organizado sob uma perspectiva de alto nível, ou seja, como os módulos de alto nível de uma aplicação estão relacionados. Exemplos de estilos arquiteturais