ARQUITETURA E DESIGN DE
SOFTWARE
POR VITOR CASTRO
“PESSOAS DE TODO MUNDO ESTÃO
CONSTANTEMENTE CRIANDO APLICAÇÕES WEB
USANDO .NET, JAVA E PHP. NENHUMA DELAS
ESTÁ FALHANDO POR CAUSA DA TECNOLOGIA”
–Joel Spolsky
PAPEL DO
ARQUITETO ?
PAPEL DO ARQUITETO DE SOFTWARE
▸ Identificar as interfaces entre os componentes.
▸ Direcionando a equipe de desenvolvimento
▸ “Guia … experiente e capacitado que ensina aos outros se
virar melhor - Martin Fowler”
▸ Ter a visão do Design e da implementação
DESIGN
IMPLEMENTAÇÃO
} ARQUITETURA
DECISÕES Interfaces de comunicação
Linguagem de Programação
Frameworks e Biblioteca
Componentes
Abstrações
“Entendimento das relações e os impactos”
Ferramentas
….
….
….
IDENTIFICANDO OS
ELEMENTOS DE UM SISTEMA
DESAFIO #1
PROJETO DE UM E-COMMERCE
? ? ?
? ?
TRADE-OFF
ORIENTAÇÃO A OBJETOS
IMPLEMENTAÇÃO
TEXT
DICAS
▸ Programe voltado à Interface, não à implementação !!!
▸ Evite herança, favoreça composição
▸ Considere Domain-Driven-Design
DICAS++
ACOPLAMENTO
Dependência entre os objetos
COESÃO
Responsabilidade única
CAMADAS DO DDD …
USER INTERFACE
APPLICATION
DOMAIN
INFRASTRUCTURE
PROGRAMAÇÃO VOLTADA À
INTERFACE
DESAFIO #2
PROJETAR A INTERFACE PARA ENVIO
DA NOTA FISCAL NO E-COMMERCE
SEFA
E-COMMERCE
DADOS: Nome da Empresa,
CNPJ, Nome do Cliente, CPF,
Descrição da Compra, Valor
da Compra, Data da Compra
QUAL A INTERFACE SERIA
OFERECIDO PARA ENVIAR OS
DADOS DA NOTA FISCAL PELA
SEFA ?
COMO O E-COMMERCE DEVE
USAR ESSA INTERFACE ?
TRADE-OFF
CRIAR OU USAR ?
CRIAR OU USAR ?
▸ Considere o uso de alguma estratégia de injeção de
dependência
▸ Controla o ciclo de vida e as outras dependências.
▸ Ex:
▸ JAVA: CDI, Spring …
QUEREMOS SEMPRE USAR
DICAS++
▸ Domine seu ferramenta de mapeamento objeto relacional
▸ Faça uso de cache sempre que puder
▸ Se a operação puder ser assíncrona faça.
EVOLUINDO O CENÁRIO
DESAFIO #3
PROJETO DE UM NOVO BANCO
BANCO 100% ON-LINE
CARTÃO DE CRÉDITO
CLIENTES
WEB
MOBILE
Transações
Ebanking
Clientes precisam ter acesso à relatórios na web
No celular precisam de agilidade para consultar
as informações
QUE DECISÕES DA ARQUITETURA PRECISAM SER TOMADAS ?
TRADE-OFF
PRÓXIMOS CAPÍTULOS …
▸ Teste de Software
▸ Práticas de programação e uso de design patterns
▸ Comunicação de aplicações (WebServices)
▸ JVM
RECOMENDO A LEITURA DO LIVRO:
INTRODUÇÃO À ARQUITETURA E
DESIGN DE SOFTWARE
Vitor Castro

Arquitetura e design de software