Arquitetura de software é o processo de conversão de
características de software como flexibilidade, escalabilidade,
viabilidade, reutilização e segurança em uma solução estruturada
que atenda às expectativas técnicas e de negócios. Segue alguns
exemplos de padrão de arquitetura utilizados atualmente no
mercado.
Caracteristicas
Não é estática, pode e deve ser evolutiva
Peças que são mais difíceis de mudar
Ambiente Linux
Linguagem Java
Mudança pode impactar no design
Mudar uma coisa sincrona para
assincrona
Trocar de linguagem, Java que utiliza Threads e mudar para Node outra
muito diferente
Realização do design do ponto de vista do programador
Diagramaa, documento a nivel de
sistema
Decisões
Monolito ou micro-serviços
Síncrono ou assíncrono
Remoto ou local
Design de software
Definição
Parte da engenharia de software que se encarrega de fazer todo o
planejamento anterior ao desenvolvimento, incluindo a definição da
arquitetura do software, e transformar tudo em um documento ou conjunto
de documentos capazes de serem interpretados diretamente pelo
programador
Diagrama de Classes
É tanto o processo de definição da arquitetura
,módulos, interfaces e outras características de um
sistema quanto o resultado desse processo
Caracteristicas
SOLID
Uma classe, microsserviços, componentes devem ser responsável por apenas uma atividade
Imutabilidade
Visão
“local”
Refina a descrição em nivel de detalhe adequado à
construção
Caracteristicas devem ser mais
detalhada que outras, de acordo com
a necessidade
Decisões
Orientação a objetos ou
funcional?
Design Patterns
Herança ou
composição
Planejamento
Diferença
Arquitetura é design, mas
nem todo design é
arquitetural
arquitetura trata o software no
alto nível. Componentes,
responsabilidade e
relacionamentos
Mudanças feitas no
Dia a dia
Mais simples de ser
modificado
Facilita a comunicação
O design trata-os de
forma íntima. No nível
do código.
Arquitetura contém as decisões antecipadas de
design