Transcript
Page 1: DevInCachu 2013: Arquitetura evolutiva

Arquitetura evolutiva

por @DenisFerrari

Page 2: DevInCachu 2013: Arquitetura evolutiva

Meta da apresentação

• Através de conceitos, teorias e histórias mostrar o que é importante em cada fase de um projeto.

Page 3: DevInCachu 2013: Arquitetura evolutiva

Conceitos

Page 4: DevInCachu 2013: Arquitetura evolutiva

O que é programação?

Page 5: DevInCachu 2013: Arquitetura evolutiva

A programação é como uma redação.

Page 6: DevInCachu 2013: Arquitetura evolutiva

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…

Page 7: DevInCachu 2013: Arquitetura evolutiva

(O TDD é fod* legal pois auxilia as micro-decisões)

Page 8: DevInCachu 2013: Arquitetura evolutiva

O que é arquitetura de software?

Page 9: DevInCachu 2013: Arquitetura evolutiva

A arquitetura de um projeto de software é como

a infraestrutura de uma cidade.

Page 10: DevInCachu 2013: Arquitetura evolutiva

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;

Page 11: DevInCachu 2013: Arquitetura evolutiva

Existe software sem arquitetura?

Page 12: DevInCachu 2013: Arquitetura evolutiva

A figura do arquiteto é essencial?

Page 13: DevInCachu 2013: Arquitetura evolutiva

(O arquiteto deve estar próximo do time de desenvolvimento, assim como o prefeito deveria usar apenas serviços públicos)

Page 14: DevInCachu 2013: Arquitetura evolutiva

Quando a arquitetura de um projeto deve ser definida?

Page 15: DevInCachu 2013: Arquitetura evolutiva

Qual o tamanho ideal de um time de desenvolvimento?

Page 16: DevInCachu 2013: Arquitetura evolutiva

Dois programadores, um designer.

Page 17: DevInCachu 2013: Arquitetura evolutiva

(A qualidade dos integrantes de um time é mais importante do que a quantidade de pessoas)

Page 18: DevInCachu 2013: Arquitetura evolutiva

(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)

Page 19: DevInCachu 2013: Arquitetura evolutiva
Page 20: DevInCachu 2013: Arquitetura evolutiva

(O livro de DDD não é a bíblia e saber arquitetura não faz de você um cara mais legal)

Page 21: DevInCachu 2013: Arquitetura evolutiva
Page 22: DevInCachu 2013: Arquitetura evolutiva

(A interface com o usuário antes da programação)

Page 23: DevInCachu 2013: Arquitetura evolutiva

(A utilização do código antes de sua construção)

Page 24: DevInCachu 2013: Arquitetura evolutiva

(Analisar o comportamento do usuário antes de construir o que você acha importante)

Page 25: DevInCachu 2013: Arquitetura evolutiva
Page 26: DevInCachu 2013: Arquitetura evolutiva

CONCEPÇÃO DO PRODUTOPrimeira fase

Page 27: DevInCachu 2013: Arquitetura evolutiva

Funcionalidades

• Base de conhecimento;• Gerenciador de avisos;• Interface de auto-atendimento; • Busca com relevância*;

Page 28: DevInCachu 2013: Arquitetura evolutiva

Tecnologias

Page 29: DevInCachu 2013: Arquitetura evolutiva

Uma tecnologia deve estar alinhada com os conceitos do seu projeto e

não deve definir como você irá trabalhar.

Page 30: DevInCachu 2013: Arquitetura evolutiva
Page 31: DevInCachu 2013: Arquitetura evolutiva
Page 32: DevInCachu 2013: Arquitetura evolutiva

(Cuidado com a política nas decisões).

Page 33: DevInCachu 2013: Arquitetura evolutiva
Page 34: DevInCachu 2013: Arquitetura evolutiva
Page 35: DevInCachu 2013: Arquitetura evolutiva

PERSISTÊNCIA

DOMÍNIO

AUTO-ATENDIMENTO ADMINISTRAÇÃO

Page 36: DevInCachu 2013: Arquitetura evolutiva

A arquitetura deve atender ao momento do projeto e

possibilitar a sua evolução.

Page 37: DevInCachu 2013: Arquitetura evolutiva

ESTATÍSTICAS E IMPORTAÇÃOSegunda fase

Page 38: DevInCachu 2013: Arquitetura evolutiva

Funcionalidades

• Ferramenta de importação;• Informações estatísticas sobre a base de

conhecimento;• Interação do usuário com a base de

conhecimento;

Page 39: DevInCachu 2013: Arquitetura evolutiva

(Migração de dados é uma coisa chata)

Page 40: DevInCachu 2013: Arquitetura evolutiva
Page 41: DevInCachu 2013: Arquitetura evolutiva
Page 42: DevInCachu 2013: Arquitetura evolutiva

PERSISTÊNCIA

DOMÍNIO

AUTO-ATENDIMENTO ADMINISTRAÇÃO

APLICAÇÃO

INFR

AEST

RUTU

RA

Page 43: DevInCachu 2013: Arquitetura evolutiva

MULTICLIENTESTerceira fase

Page 44: DevInCachu 2013: Arquitetura evolutiva

Funcionalidades

• Multi-Tenant;• Separar necessidades de domínio das

necessidades de leitura;

Page 45: DevInCachu 2013: Arquitetura evolutiva
Page 46: DevInCachu 2013: Arquitetura evolutiva
Page 47: DevInCachu 2013: Arquitetura evolutiva

AUTO-ATENDIMENTO ADMINISTRAÇÃO

APLICAÇÃO

INFR

AEST

RUTU

RA

DOMÍNIO RELATÓRIOS

PROCESSOS LEITURATENNANTS

Page 48: DevInCachu 2013: Arquitetura evolutiva

INTEGRAÇÃO ENTRE SISTEMASQuarta fase

Page 49: DevInCachu 2013: Arquitetura evolutiva

Funcionalidades

• Providenciar uma interface de integração entre sistemas de Service Desk;

Page 50: DevInCachu 2013: Arquitetura evolutiva
Page 51: DevInCachu 2013: Arquitetura evolutiva
Page 52: DevInCachu 2013: Arquitetura evolutiva

AUTO-ATENDIMENTO ADMINISTRAÇÃO

APLICAÇÃO

INFR

AEST

RUTU

RA

PROCESSOS LEITURATENANTS

RELATÓRIOS INTEGRAÇÕESDOMÍNIO

Page 53: DevInCachu 2013: Arquitetura evolutiva

PERSISTÊNCIA

DOMÍNIO

AUTO-ATENDIMENTO ADMINISTRAÇÃO

AUTO-ATENDIMENTO ADMINISTRAÇÃO

APLICAÇÃO

INFR

AEST

RUTU

RAPROCESSOS LEITURATENANTS

RELATÓRIOS INTEGRAÇÕESDOMÍNIO

AUTO-ATENDIMENTO ADMINISTRAÇÃO

APLICAÇÃO

INFR

AEST

RUTU

RA

DOMÍNIO RELATÓRIOS

PROCESSOS LEITURATENNANTS

PERSISTÊNCIA

DOMÍNIO

AUTO-ATENDIMENTO ADMINISTRAÇÃO

APLICAÇÃO

INFR

AEST

RUTU

RA

Page 54: DevInCachu 2013: Arquitetura evolutiva

CONSIDERAÇÕES FINAISConclusão

Page 55: DevInCachu 2013: Arquitetura evolutiva
Page 57: DevInCachu 2013: Arquitetura evolutiva
Page 60: DevInCachu 2013: Arquitetura evolutiva

Obrigado!