A arquitectura de software é focada na organização dos componentes de software, suas responsabilidades e relacionamento entre eles.
Arquitectura de software ajuda a satisfazer os requisitos não funcionais ou atributos de qualidade do software, tais como:
- Escalablidade;
- Estabilidade;
- Segurança;
- Portabilidade;
- Acessibilidade;
- Interoperabilidade;
- Outros objectivos que possam agregar valor ao negócio.
Padrões de Arquitectura
- Cliente-Servidor;
- Modelo em Camadas;
- Peer-to-Peer;
- Microserviços;
- Orientada a Eventos;
- Orientada a Serviços (SOA);
- Publish-Subscribe (Pub/Sub);
- Pipe-and-Filters;
- Serverless.
Diferença entre Arquitectura e Design de Software
Arquitectura: Estrutura de alto nível. Padrões organizacionais, casos de usos críticos, serviços do sofware ou representação de módulos.
Design: Estrutura de baixo nível, ou organização de código. Focado na organização de Classes, Objectos, Métodos, Interfaces, Funções, Traits, Protótipos de acordo a linguagem. Em outras palavras, princípios de Design Patterns.
O Design pode fazer parte da Arquitectura.
Ferramentas para desenho de Arquitectura
- Star UML;
- Astah UML;
- Archimate;
- DrawIo;
- Edrawsoft;
- LucidChart;
- Microsoft Visio;
- Microsoft PowerPoint.
Observação: Não existe a melhor arquitectura, que se enquadra a todos os problemas. A arquitectura deve se adequar a necessidade actual da Empresa. É possível combinar diferentes padrões arquieturais.
A adoção de uma arquitectura inadequada pode acrescentar complexidade no desenvolvimento, na implantação e na manutenção do software.
Sugestão: No caso de aplicações muito complexas e corporativas é recomendado ferramentas como o Archimate, por oferecer um excelente ferremental e boa documentação.
Exemplo: Representação da Arquitectura de um Sistema de Recrutamento e Seleção.
Tipo: Arquitectura em Camadas
Ferramementa: Astah Professional