A arquitetura de software é a estrutura fundamental de um sistema de software e a disciplina de criar essas estruturas e sistemas. É essencialmente um plano de alto nível que define:
*
componentes: Os principais blocos de construção do sistema (por exemplo, módulos, serviços, bancos de dados). Ele descreve o que cada componente faz e como interage com os outros.
*
conectores: Como esses componentes se comunicam e interagem entre si (por exemplo, APIs, filas de mensagens, memória compartilhada).
*
Restrições: Limitações e restrições ao design e implementação do sistema (por exemplo, requisitos de desempenho, considerações de segurança, necessidades de escalabilidade).
*
Propriedades: Características do sistema como um todo, como confiabilidade, escalabilidade, manutenção e segurança. A arquitetura visa alcançar essas propriedades desejadas.
Em suma, a arquitetura de software é um design de alto nível que orienta o processo de desenvolvimento e garante que o sistema atenda aos seus requisitos. Ele se concentra no "o que" e "por que" do sistema, em vez do "como" detalhado, que é tratado pelo design e implementação de nível inferior. A escolha da arquitetura certa é crucial para o sucesso de um projeto de software, pois afeta significativamente fatores como manutenção, escalabilidade, desempenho e custo.