SlideShare uma empresa Scribd logo
1 de 64
Indo além do técnico
para desenvolver sistemas
que evoluem na
velocidade do negócio
Sebastian Ferrari - CTO
@sebas5384
Quem?
Sebastian Ferrari (Sebas)
● Uruguaio morando no Brasil
● CTO e Co-fundador da Taller
● +15 anos construindo sistemas
● Agilista e praticante do Fluxo Unificado a
vários anos
● +2 anos como praticante de DDD e
Eventstormer
@sebas5384
Velocidade do Negócio?
Negócio
muda
Proposta de
mudança
Processo de
Desenvolv.
Novo
Sistema
Pensamento linear
O sistema começa com um simples
modelo da realidade se tornando
cada vez mais complexo
Sistema evolui com o
passar do tempo
Pensamento Sistêmico
Modelo mental que ajuda a
dar sentido à complexidade,
incentivando um equilíbrio entre
reducionismo e emergência.
O que é um sistema?
Um conjunto de elementos inter-relacionados organizados
para servir a uma função específica ou
para buscar um objetivo específico.
– Donella Meadows
Modelo inicial,
rápido de criar.
1
2
3
.
.
.
Domínios
Modelos
Modelo inicial,
rápido de criar.
1
2
3
.
.
.
Evolução resultando no
“Big Ball of Mud”.
Domínios
Modelos
Modelo inicial,
rápido de criar.
1
2
3
.
.
.
Evolução resultando no
“Big Ball of Mud”.
Funciona, mas ninguém
sabe como.
Mudanças se tornam
arriscadas e difíceis.
Domínios
Modelos
complexidade
do design
tempo
complexidade
do design
tempo
complexidade
do design
tempo
O que acha que precisa
mais tarde.
O que precisa agora.
O que tem agora.
YAGNI
You Ain‘t Gonna Need It
agora depois
Design por meio
de refatoração
A coisa mais simples
que possa funcionar
Realize progresso em
pequenos passos
Grande design
prematuro
Design caótico
e aleatório
Design bom e
incremental
A complexidade no Software,
é o resultado inerente da
complexidade do domínio (essencial)
misturada com a
complexidade técnica (acidental)
– Scott Millet
Domínio?
Uma esfera específica de atividade (o que) ou conhecimento (como).
Área do problema, é o que dá motivo de existência ao modelo.
Onboarding
Vendas
Precificação
Marketing
Modelo do Domínio
Domínio do
mundo real Modelo do Domínio
para o caso de uso
O que é o DDD?
Domain Driven Design
Abordagem de design de software, com foco
na modelagem de software para corresponder
a um domínio de acordo com a entrada dos
especialistas desse domínio.
– Wikipedia
Eric Evans - 2003
Outros livros
Vaughn Vernon
Microsserviços
Foco no tático
Devs estão se
distanciando
do problema
Pilares
Duas categorias de design:
Tático
Estratégico
Pilares
Duas categorias de design:
Tático
Estratégico
Ferramentas para a
modelagem e
entendimento do
domínio de maneira
colaborativa
● Contextos Delimitados
● Linguagem Ubíqua
● Mapeamento de
Contextos
Pilares
Duas categorias de design:
Tático
Estratégico
Padrões técnicos para
construir modelos do
domínio dentro do
contexto delimitado:
● Entities
● Value Objects
● Aggregates
● Repository
● Services
● Events
● Modules
● Factories
NÃO
Construa entendimento coletivo se
aproximando aos especialistas de
domínio e desenhe o sistema com
enfoque no domínio principal do negócio
Design Estratégico
Contexto Delimitado
● Delimitação linguística ou conceitual
● Limita um conceito a um determinado contexto
● É o que dá significado a um substantivo
● Evita ambiguidade
Contexto Delimitado
Reserva
Identificação
e
Autenticação
Usuário
Contexto Contexto
Modelo
ambíguo
model model
model
model
model
NÃO
na maioria dos
casos…
Contexto Delimitado
Reserva
Identificação
e
Autenticação
Passageiro Usuário
Linguagem Ubíqua
● Linguagem utilizada dentro de um contexto
● Sem ambiguidade
● Sem jargões, não é uma linguagem “universal”
● Comunicação entre especialistas do domínio
e pessoas técnicas, ou outros envolvidos
● Faça um glossário dos conceitos por contexto
Organizações que desenvolvem
sistemas de software tendem a
produzir sistemas que são cópias
das estruturas de comunicação
dessas organizações.
– Melvin Conway, 1967
Mapeamento de Contexto
Pagamento Catálogo
Venda
U
D
Upstream/
Downstream
Parceria
Mapeamento de Contexto
Pagamento Venda
U D
Camada
Anticorrupção
ACL
Compra Ordem
Camada Anticorrupção
Mapeamento de Contexto
Contexto
Subdomínio
Subdomínios?
● Core / Principal
Diferencial de seu negócio, maior investimento
● Suporte
Necessário para o negócio funcionar
● Genérico
Solução de prateleira, nada especial para o negócio
Plataforma de validação,
exploração e construção do
Storytelling do negócio
de maneira colaborativa
EventStorming
EventStorming?
● Criado em 2012 que evoluiu na
comunidade DDD
● Baseado em Workshops e Gamestorming
para construir narrativas com eventos
● Modelagem colaborativa do domínio,
processos, jornadas de usuário ou fluxos
de trabalho
● Começa com um canvas em branco com
post-it na mão
Alberto Brandolini
Livro
Alberto Brandolini
Introducing
EventStorming
An act of Deliberate
Collective Learning
Entendimento coletivo
contando histórias
“ A ignorância é o maior
impedimento para o
throughput ”
– Dan North
Por que Eventos?
Eventos
Comportamento emergente
Propósito ou função
Interconexões / Relações
Elementos
Entender
um sistema
Exploração
Gerar Caos
Gerar Caos
Estrutura emergente
Estrutura emergente
Estrutura e relações
Subdominios
e Contextos
Validação de narrativas
Validação de narrativas
Vários sabores
● Big Picture
Usando eventos, atores, ações e sistemas para uma visão
geral do sistema envolvendo o pessoal de negócio.
● Process Modeling
Adicionando políticas e “informações” necessárias para as
ações, serve para entender ou criar novos serviços.
● Software Design
Mergulho em contextos com tecniquês, adicionando os
“agregados” ou componentes do software.
Diferentes momentos
TO-BE
AS-IS
Oportunidades
e problemas
Validação entre
o ideal e viável
Software Design
Aceitando a realidade
Descoberta incremental
“ É o entendimento do
desenvolvedor que se
torna software, e não o do
Stakeholder ”
– Alberto Brandolini
“ Por anos juntamos vários
times de uma organização e
misturamos em um software ”
– Alberto Brandolini
Manda
Salve!
sebas@taller.net.br
taller.net.br
blog.taller.net.br
Instagram: taller.team
Twitter: @tallerteam
Tallercast: spoti.fi/3V5w1Yk
Estamos contratando!

Mais conteúdo relacionado

Semelhante a Sistemas que evoluem com o negócio

Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...
Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...
Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...GrupoMENTHOR
 
Domain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesDomain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesJoao Paulo Oliveira dos Santos
 
Intensivo 80h - Empreendedorismo e Negócios Digitais
Intensivo 80h - Empreendedorismo e Negócios DigitaisIntensivo 80h - Empreendedorismo e Negócios Digitais
Intensivo 80h - Empreendedorismo e Negócios DigitaisEscola do Marketing Digital
 
Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaThiago Bertuzzi
 
Scrum para Desenvolvimento Interno e Produtos de Software
Scrum para Desenvolvimento Interno e Produtos de SoftwareScrum para Desenvolvimento Interno e Produtos de Software
Scrum para Desenvolvimento Interno e Produtos de SoftwareRodrigo Yoshima
 
Domain Driven Design - Uma introdução
Domain Driven Design - Uma introduçãoDomain Driven Design - Uma introdução
Domain Driven Design - Uma introduçãoDaniel Baptista Dias
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutóriaarmeniocardoso
 
Palestra ERP Graduação v1.0
Palestra ERP Graduação v1.0Palestra ERP Graduação v1.0
Palestra ERP Graduação v1.0GrupoMENTHOR
 
Webinar projetos e ti - business intelligence - como fazer
Webinar   projetos e ti - business intelligence - como fazerWebinar   projetos e ti - business intelligence - como fazer
Webinar projetos e ti - business intelligence - como fazerProjetos e TI
 
WORKSHOP - O que fazer com meu SharePoint?
WORKSHOP - O que fazer com meu SharePoint?WORKSHOP - O que fazer com meu SharePoint?
WORKSHOP - O que fazer com meu SharePoint?Marcelo Leite ☁
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaGraziella Bonizi
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
 
[Stefanini Mindset Experiences] Design Thinking - Dia 1
[Stefanini Mindset Experiences] Design Thinking - Dia 1[Stefanini Mindset Experiences] Design Thinking - Dia 1
[Stefanini Mindset Experiences] Design Thinking - Dia 1Vinicius Marinho
 
Palestra ERP MBA Unisinos v1.0
Palestra ERP MBA Unisinos v1.0Palestra ERP MBA Unisinos v1.0
Palestra ERP MBA Unisinos v1.0GrupoMENTHOR
 
Como justificar o seu projeto de BI
Como justificar o seu projeto de BIComo justificar o seu projeto de BI
Como justificar o seu projeto de BIPunkMetrics
 
Imatia: apresentação corporativa
Imatia: apresentação corporativaImatia: apresentação corporativa
Imatia: apresentação corporativaimatia
 

Semelhante a Sistemas que evoluem com o negócio (20)

Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...
Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...
Palestra sobre a Metodologia para Apoio à Decisão, Gerência e Implantação de ...
 
Domain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesDomain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrões
 
Intensivo 80h - Empreendedorismo e Negócios Digitais
Intensivo 80h - Empreendedorismo e Negócios DigitaisIntensivo 80h - Empreendedorismo e Negócios Digitais
Intensivo 80h - Empreendedorismo e Negócios Digitais
 
Curso Scrum
Curso ScrumCurso Scrum
Curso Scrum
 
Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da Caixa
 
Scrum para Desenvolvimento Interno e Produtos de Software
Scrum para Desenvolvimento Interno e Produtos de SoftwareScrum para Desenvolvimento Interno e Produtos de Software
Scrum para Desenvolvimento Interno e Produtos de Software
 
Domain Driven Design - Uma introdução
Domain Driven Design - Uma introduçãoDomain Driven Design - Uma introdução
Domain Driven Design - Uma introdução
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutória
 
Palestra ERP Graduação v1.0
Palestra ERP Graduação v1.0Palestra ERP Graduação v1.0
Palestra ERP Graduação v1.0
 
Webinar projetos e ti - business intelligence - como fazer
Webinar   projetos e ti - business intelligence - como fazerWebinar   projetos e ti - business intelligence - como fazer
Webinar projetos e ti - business intelligence - como fazer
 
WORKSHOP - O que fazer com meu SharePoint?
WORKSHOP - O que fazer com meu SharePoint?WORKSHOP - O que fazer com meu SharePoint?
WORKSHOP - O que fazer com meu SharePoint?
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquitetura
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
 
[Stefanini Mindset Experiences] Design Thinking - Dia 1
[Stefanini Mindset Experiences] Design Thinking - Dia 1[Stefanini Mindset Experiences] Design Thinking - Dia 1
[Stefanini Mindset Experiences] Design Thinking - Dia 1
 
Palestra ERP MBA Unisinos v1.0
Palestra ERP MBA Unisinos v1.0Palestra ERP MBA Unisinos v1.0
Palestra ERP MBA Unisinos v1.0
 
Como justificar o seu projeto de BI
Como justificar o seu projeto de BIComo justificar o seu projeto de BI
Como justificar o seu projeto de BI
 
Métodos ágeis
Métodos ágeisMétodos ágeis
Métodos ágeis
 
Imatia: apresentação corporativa
Imatia: apresentação corporativaImatia: apresentação corporativa
Imatia: apresentação corporativa
 
Debate PIP2008
Debate PIP2008Debate PIP2008
Debate PIP2008
 

Mais de Taller Negócio Digitais

De um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLDe um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLTaller Negócio Digitais
 
Alinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanAlinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanTaller Negócio Digitais
 
Como a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaComo a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaTaller Negócio Digitais
 
Práticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaPráticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaTaller Negócio Digitais
 
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Taller Negócio Digitais
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLTaller Negócio Digitais
 
Taller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller Negócio Digitais
 
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Taller Negócio Digitais
 
Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Taller Negócio Digitais
 
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento  - TDC Florianópolis 201711 maneiras de compartilhar conhecimento  - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017Taller Negócio Digitais
 
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Taller Negócio Digitais
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016Taller Negócio Digitais
 
Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Taller Negócio Digitais
 

Mais de Taller Negócio Digitais (20)

Discovery kanban
Discovery kanbanDiscovery kanban
Discovery kanban
 
Taller Negócios Digitais
Taller Negócios DigitaisTaller Negócios Digitais
Taller Negócios Digitais
 
De um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLDe um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQL
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
 
Gestão Ágil com Fluxo Unificado
Gestão Ágil com Fluxo UnificadoGestão Ágil com Fluxo Unificado
Gestão Ágil com Fluxo Unificado
 
Alinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanAlinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream Kanban
 
Lições Aprendidas com Fluxo Unificado
Lições Aprendidas com Fluxo UnificadoLições Aprendidas com Fluxo Unificado
Lições Aprendidas com Fluxo Unificado
 
Como a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaComo a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetiva
 
Métricas no Fluxo Unificado
Métricas no Fluxo UnificadoMétricas no Fluxo Unificado
Métricas no Fluxo Unificado
 
Práticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaPráticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiança
 
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
 
Taller – Treinamentos e consultorias
Taller – Treinamentos e consultoriasTaller – Treinamentos e consultorias
Taller – Treinamentos e consultorias
 
Taller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de software
 
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
 
Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017
 
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento  - TDC Florianópolis 201711 maneiras de compartilhar conhecimento  - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
 
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016
 
Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?
 

Sistemas que evoluem com o negócio

Notas do Editor

  1. Cavin Wood
  2. Cavin Wood
  3. Cavin Wood
  4. Cavin Wood
  5. Cavin Wood
  6. Cavin Wood
  7. não é universal
  8. Cavin Wood
  9. Cavin Wood
  10. Cavin Wood
  11. Cavin Wood
  12. Cavin Wood
  13. Cavin Wood
  14. Cavin Wood
  15. Cavin Wood
  16. Cavin Wood
  17. Cavin Wood
  18. Cavin Wood
  19. Cavin Wood
  20. Cavin Wood
  21. Cavin Wood