Aqui apresentaremos alguns tópicos para estudar e entender sobre Arquitetura de Software:
*(Lembrando que ainda estaremos comentando sobre o assunto dividindo em tópicos! Abertura desse assunto no 1° semestre de 2025))*
Arquitetura de Software introduz os conceitos fundamentais para projetar sistemas robustos, escaláveis e manuteníveis. Seu objetivo é capacitar profissionais a definir estruturas que alinhem requisitos técnicos e de negócio, garantindo qualidade e eficiência ao longo do ciclo de vida do software.
A arquitetura de software é definida como o conjunto de elementos, sua organização e decisões que moldam a estrutura de um sistema. Surgiu nos anos 60, mas ganhou relevância nos anos 90, quando a complexidade dos sistemas exigiu planejamento mais rigoroso. Ela engloba três aspectos principais: elementos (componentes, módulos), organização (como interagem) e decisões (escolhas tecnológicas e estratégicas).
Um dos pilares é a distinção entre arquitetura e design de software. Enquanto a arquitetura define a estrutura macro do sistema (ex: escolha entre microsserviços ou monolítico, tecnologias de banco de dados), o design foca na implementação detalhada (ex: padrões como Singleton ou MVC, organização de classes). Uma analogia comum compara a arquitetura ao planejamento urbano de uma cidade (definindo ruas e zonas) e o design à disposição dos móveis em uma casa.
As qualidades arquiteturais são características essenciais que um sistema deve possuir, como:
- Escalabilidade: Capacidade de crescer conforme a demanda (ex: Netflix usando microsserviços para escalar serviços independentemente).
- Segurança: Proteção contra vulnerabilidades e ataques.
- Manutenibilidade: Facilidade de corrigir erros e adicionar funcionalidades.
- Desempenho: Otimização de recursos para respostas rápidas.
O arquiteto de software desempenha um papel central, atuando como mediador entre stakeholders (clientes, desenvolvedores, testadores) e garantindo que o sistema atenda a requisitos funcionais e não funcionais. Suas responsabilidades incluem:
Modelagem da arquitetura: Usando ferramentas como o C4 Model para documentar visões diferentes (contexto, containers, componentes).
Análise de trade-offs: Avaliando custo-benefício entre opções (ex: desempenho vs. segurança).
Prototipação e simulação: Validando decisões antes da implementação.