Exemplo prático de arquitetura de software
Antes de aplicar a arquitetura de software para resolver um problema, deve analisar os condutores para se chegar nas soluções dos problemas desses condutores.
O que é uma arquitetura de software
“Arquitetura de software é o conjunto de decisões que, se feitas incorretamente, podem causar o cancelamento do projeto” - Eoin Woods
Tipos de arquitetos
Arquiteto de soluções
Responsável por trabalhar com times comercial e pré-venda na solução pré-liminar de um projeto.
- Antes do projeto ser aprovado.
Faz a ponte entre outros arquitetos, em particular do arquiteto de software.
Arquiteto de software
Papel central: liderar a construção de uma arquitetura desde o primeiro dia do projeto
- Usa-se os requisitos críticos
Toma decisões técnicas
Arquiteto de dados
Desafios como BI, ETL, etc.
Tomada de desciões técnicas
Arquiteto de Infraestrutura
Ex.: computação nas nuvens
Arquiteto de tecnologia Java EE
- Arquiteto de tecnologia .NET
- Arquiteto das nuvens
Conceitos sobre o arquiteto de software
O arquiteto é um desenvolvedor sênior
Falso
- Enquanto o desenvolvedor é um especialista, o arquiteto é um generalista.
O arquiteto não é um desenvolvedor sênior
O arquiteto domina as APIs de segurança Java ou .NET
Falso
- Mas precisa dominar as táticas e soluções de mercado que ele vai trabalhar
O arquiteto domina as táticas arquiteturais de segurança
O arquiteto desenha plantas e o time de desenvolvimento implementa
Falso
O arquiteto junto com o time de desenvolvimento desenvolve cria plantas
O arquiteto desenvolve a arquitetura
Falso
- Ele desenvolve a arquitetura junto com time
- O time de arquitetura desenvolve a arquitetura
O que faz um arquiteto de software
Liderar a concepção do software…
…Definindo os atributos de qualidade.Fornece apoio à construção do software…
…Baseado nos atributos de qualidade.
Decomposição típica das atividades de um arquiteto
- Coleta de requisitos (25%)
Modelagem e implementação de provas de conceito (50%)
Provas de conceitos são instrumentos para que arquitetos possam reduzir riscos
Assistência ao time (25%)
O contexto na arquitetura de software
- É preciso olhar o contexto ambiental onde o arquiteto está envolvido para se tomar decisões arquiteturais. Ex. mudar de framework quando não se tem tempo, nem experiência.
Influências na arquitetura
Contexto de negócio
Qual a natureza do projeto que se está trabalhando? Se está trabalhado com um projeto de tempo fechado, não se pode ofender o prazo.
Diretrizes e requisitos
Captar as diretrizes do projeto como escalabilidade, segurança, usabilidade que são elementos críticos.
Restrições e premissas
Tempo, custo e muitas outras restrições. Ex. time júnior sem capacitação.
Experiência do time
Ignorar a experiência do time pode trazer consequencias graves no projeto.
Soluções técnicas disponíveis
São chamados de ativos arquiteturas. Podem ser elementos importantes para guia o arquiteto no caminho de boas soluções técnicas.
Atributos de qualidade diversos
Aspectos como segurança da informação, performance, usabilidade. É preciso conhecer esses atributos para se alcançar uma boa arquitetura
Decisões arquiteturais
“A vida de um arquiteto de software é uma longa sucessão de decisões sub-ótimas e parcialmente tomadas no escuro.” - Philippe Kruchten
Pontos a serem observados ao tomar decisões
Alinhamento estratégico
nunca colocar a tecnologia na frente do negócio.
Balanceamento de influências diversas
experiência do time
- ativos da empresa
contexto de negócio (diretrizes)
Análise de riscos
Processo decisório
O que é melhor para o projeto e não o que o desenvolvedor quer fazer.