Arquitetura de Software
Arquitetura de Software para Concursos Públicos
1. Conceitos Fundamentais
Arquitetura de Software é a organização estrutural de um sistema, incluindo componentes, relações entre eles e princípios que regem seu design. Envolve decisões estratégicas que impactam qualidade, desempenho e manutenibilidade.
2. Estilos Arquiteturais
- Camadas (Layered): Separação em camadas (ex: apresentação, negócio, dados)
- Cliente-Servidor: Divisão entre provedor (servidor) e consumidor (cliente)
- MVC (Model-View-Controller): Separação entre lógica, interface e controle
- Microservices: Sistemas como serviços independentes e especializados
- Event-Driven: Comunicação baseada em eventos assíncronos
3. Padrões de Projeto
- Criacionais: Factory, Singleton, Builder
- Estruturais: Adapter, Decorator, Facade
- Comportamentais: Observer, Strategy, Command
4. Atributos de Qualidade
Não-funcionais que guiam a arquitetura: desempenho, escalabilidade, segurança, disponibilidade, modificaribilidade e usabilidade.
5. Técnicas e Ferramentas
- UML: Diagramas de classe, sequência, componentes
- ADRs: Documentação de decisões arquiteturais
- DDD: Domain-Driven Design (design orientado a domínio)
6. Tópicos Relevantes para Concursos
- Diferença entre arquitetura e design
- Trade-offs arquiteturais
- Padrões REST e SOAP
- Princípios SOLID e Clean Architecture
- Arquiteturas hexagonais e em pipeline