Arquitetura evolutiva
http://www.linkedin.com/in/denisferrari
Meta da apresentação
• Questionar em qual momento a arquitetura
deve ser pensada e aplicada...
O que é programação?
(Código é conhecimento registrado)
A programação é como uma redação.
A programação, assim como a redação...
• Pede por macro-decisões;
• É definida nas micro-decisões;
• Depende de valiação externa;
• Novas implementações necessitam da
avaliação do todo;
• É um processo criativo…
(O TDD é fod* legal pois auxilia as micro-decisões)
O que é arquitetura de software?
(A arquitetura é o universo.
O design é a história)
A arquitetura...
• Conjunto de macro-decisões;
• Conjunto de convenções;
• Códigos de base (requisitos não funcionais);
• “Define” como as coisas devem ser feitas;
• Pode facilitar ou atrapalhar novas
implementações;
• É difícil de mudar;
Qual o tamanho ideal de um
time de desenvolvimento?
Dois programadores, um designer.
(A qualidade dos integrantes de um time é mais
importante do que a quantidade de pessoas)
(Um projeto de software é como uma
criança, seu comportamento final dependerá
das influências que ele recebeu dos adultos que
estavam perto durante seu crescimento)
CONCEPÇÃO DO PRODUTO
Primeira fase
Funcionalidades
• Base de conhecimento;
• Gerenciador de avisos;
• Interface de auto-atendimento;
• Busca com relevância*;
Tecnologias
Uma tecnologia deve estar
alinhada com os conceitos do seu projeto e
não deve definir como você irá trabalhar.
(Cuidado com a política nas decisões).
(A interface com o usuário
antes da programação)
(A utilização do código
antes de sua construção)
(Analisar o comportamento do usuário
antes de construir o que você acha importante)
PERSISTÊNCIA
DOMÍNIO
AUTO-ATENDIMENTO ADMINISTRAÇÃO
Quando a arquitetura de um projeto
deve ser definida?
(O livro de DDD não é a bíblia e saber
arquitetura não faz de você um cara mais legal)
A arquitetura deve
atender ao momento do projeto e
possibilitar a sua evolução.
ESTATÍSTICAS E IMPORTAÇÃO
Segunda fase
Funcionalidades
• Ferramenta de importação;
• Informações estatísticas sobre a base de
conhecimento;
• Interação do usuário com a base de
conhecimento;
(Migração de dados é uma coisa chata)
PERSISTÊNCIA
DOMÍNIO
AUTO-ATENDIMENTO ADMINISTRAÇÃO
APLICAÇÃO
INFRAESTRUTURA
MULTICLIENTES
Terceira fase
Funcionalidades
• Multi-Tenant;
• Separar necessidades de domínio das
necessidades de leitura;
AUTO-ATENDIMENTO ADMINISTRAÇÃO
APLICAÇÃO
INFRAESTRUTURA
DOMÍNIO RELATÓRIOS
PROCESSOS LEITURATENNANTS
INTEGRAÇÃO ENTRE SISTEMAS
Quarta fase
Funcionalidades
• Providenciar uma interface de integração
entre sistemas de Service Desk;
AUTO-ATENDIMENTO ADMINISTRAÇÃO
APLICAÇÃO
INFRAESTRUTURA
PROCESSOS LEITURATENANTS
RELATÓRIOS INTEGRAÇÕESDOMÍNIO
PERSISTÊNCIA
DOMÍNIO
AUTO-ATENDIMENTO ADMINISTRAÇÃO
AUTO-ATENDIMENTO ADMINISTRAÇÃO
APLICAÇÃO
INFRAESTRUTURA
PROCESSOS LEITURATENANTS
RELATÓRIOS INTEGRAÇÕESDOMÍNIO
AUTO-ATENDIMENTO ADMINISTRAÇÃO
APLICAÇÃO
INFRAESTRUTURA
DOMÍNIO RELATÓRIOS
PROCESSOS LEITURATENNANTS
PERSISTÊNCIA
DOMÍNIO
AUTO-ATENDIMENTO ADMINISTRAÇÃO
APLICAÇÃO
INFRAESTRUTURA
CONSIDERAÇÕES FINAIS
Conclusão
Obrigado!

Arquitetura evolutiva - DNAD 2013