CRIAR SOFTWARES QUE
SATISFAÇAM AS VONTADES
DO CLIENTE
ESPECIFICAR DE FORMA COMPLETA E
NÃO AMBÍGUA A EXPERIÊNCIA
GLOBAL DO USUÁRIO
DESENHO E ESTILO DE ORGANIZAR
ELEMENTOS VISUAIS
METAS, RESTRIÇÕES, ALTERNATIVAS,
REPRESENTAÇÕES, SOLUÇÕES E TRADE-OFFS
CARACTERÍSTICAS
CONCEPÇÃO,
ESPECIFICAÇÃO E
PROTOTIPAÇÃO DE
UM ARTEFATO.
ABSTRAÇÃO, MODULARIDADE (COESÃO E
ACOPLAMENTO), ENCAPSULAMENTO, HIERARQUIAS,
INTERFACES VERSUS IMPLEMENTAÇÕES, SEPARAÇÃO
DE PREOCUPAÇÕES, LOCALIDADE.
DESIGN DE: MODELO CONCEITUAL, DA INTERFACE DE
USUÁRIO, DA ARQUITETURA DE SOFTWARE, DOS
ALGORITMOS E ESTRUTURAS DE DADOS
ARQUITETURA DE SOFTWARE
DIFERENÇAS
"Atividades relacionadas a arquitetura de software são sempre de design. Entretanto, nem todas
atividade de design são sobre arquitetura. O objetivo primário da arquitetura de software é garantir
que os atributos de qualidade, restrições de alto nível e os objetivos do negócio, sejam atendidos
pelo sistema. Qualquer decisão de design que não tenha relação com este objetivo não é
arquitetural. Todas as decisões de design para um componente que não sejam "visíveis" fora dele,
geralmente, também não são."
Uma simples analogia exemplifica muito bem a principal diferença entre arquitetura e design de
software, sendo a solução um corpo humano, a arquitetura é responsável pela composição corpórea
(esqueleto, disposição do órgãos, vasos sanguíneos) e o design de software será responsável por
garantir funcionamento de cada órgão. Em linguagem técnica, arquitetura é alto nível e design é nível
de código. Os arquitetos de software devem ter um bom conhecimento sobre as soluções existentes
que os ajudam a tomar decisões corretas na fase de planejamento e um desenvolvedor de software
deve saber mais sobre design de software e bastante sobre arquitetura de software para facilitar a
comunicação interna dentro da equipe.
ARQUITETO DE SOFTWARE -> VAI DEFINIR COMO SERÁ A ESTRUTURA, LINGUAGEM ETC.
DESIGN DE SOFTWARE -> A APARÊNCIA, ORGANIZAÇÃO
PRINCIPAIS DEFINIÇÕES
"CONVERTER 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"
TRATA DOS COMPONENTES, SUAS RESPONSABILIDADES E
COMO ELES SE RELACIONAM PARA ATINGIR OS OBJETIVOS DO
NEGÓCIO
CARACTERÍSTICAS
TRATA DOS COMPONENTES, SUAS
RESPONSABILIDADES E COMO ELES SE RELACIONAM
PARA ATINGIR OS OBJETIVOS DO NEGÓCIO
DEVE FOCAR NOS PRINCÍPIOS DE: PERFORMANCE,
ESTABILIDADE, SEGURANÇA, ECONOMIA DE
RECURSOS, MANUTENIBILIDADE, ESCALABILIDADE
ESTRUTURAS E VISÕES DISTINTAS, ESTILOS E ARQUITETURAS DE
REFERÊNCIA, PADRÕES DE DESIGN MICROARQUITETURAIS,
FAMÍLIAS DE PROGRAMAS E FRAMEWORKS
BAIXA TOLERÂNCIA A FALHAS,
ESCALABILIDADE E CONFIABILIDADE
PADRÕES: CAMADAS, PADRÃO ORIENTADO A
EVENTOS, PADRÃO SERVERLESS