SlideShare a Scribd company logo
1 of 39
Download to read offline
Práticas de Engenharia de Software
Robustas e Antifrágeis para
Ambientes Complexos
Marco Mendes
Apresentado no Agile Brazil 2019
Belo Horizonte, MG, Brasil
Na década de 1960, o problema era
que os projetos estavam excedendo
o orçamento ou nunca eram
entregues.
A primeira crise na indústria de software
O nascimento da engenharia de software em 1968
nas históricas conferências da OTAN
“[A principal causa da crise do software é] que as
máquinas se tornaram várias ordens de magnitude
mais poderosas!
Para ser franco: enquanto não existiam máquinas,
a programação não era problema; quando
tínhamos alguns computadores fracos a
programação se tornou um problema moderado.
E agora temos computadores gigantes e a
programação se tornou um problema igualmente
gigantesco.”
E. Dijkstra, 1972
Em 2001, surge o Agile Manifesto como
mais uma resposta a mais uma crise na
engenharia de software.
“Temos um grande número de pessoas fazendo
ágil flácido, uma tentativa tímida de seguir
mal algumas práticas de desenvolvimento de
software selecionadas”, Andy Hunt
“Uma equipe Agile será ágil, não importa como
o projeto seja gerenciado. Por outro lado, uma
equipe que não é ágil não se tornará ágil
simplesmente em virtude de uma nova e
sofisticada estratégia de gerenciamento de
projetos. ”, Robert Martin
“O ágil foi corrompido pela complexo industrial
do Agile”, Martin Fowler
A crise do ágil ganha força em 2015
Precisamos investigar os
nossos modelos mentais
de como criar e manter
sistemas de software.
Sistemas de software e a
engenharia de software
tem sido desenhados de
forma mecanicista.
Os efeitos práticos
tem sido a criação
de processos, sistemas
e resultados frágeis.
Cuidado
Frágil
Processos frágeis (Dados do Standish Group)
Fonte: https://pmworldlibrary.net/wp-content/uploads/2018/05/pmwj70-May2018-Rosato-go-small-for-project-success-student-paper.pdf
•O foguete da Ariane 5
•O sistema de navegação do Boeing 737
•O bot da Knight Capital e perdas de
centenas de milhões de dólares
Sistemas de software frágeis
Cisnes negros
Cuidado
Frágil
Robusto
Me agite
Antifrágil
Arquitetura de
antifragilidade do
BitTorrent
x
f(x)
Ganhos e perdas
Você está aqui
Perdas
Ganhos
O frágil O antifrágil
x
f(x)
Ganhos e perdas
Você está aqui
Perdas
Ganhos
Perdas assimétricas. Qualquer coisa
que tem mais perdas que ganhos de
eventos aleatórios (variabilidade)
Ganhos assimétricos. Qualquer coisa
que tem mais ganhos que perdas de
eventos aleatórios (variabilidade)
Propriedades de práticas frágeis de
engenharia de software
• Transferência de riscos
– Práticas que transferem riscos de um local
para outro. Ausência da pele em jogo.
• Ilusão do ordenado
– Práticas que tomam cenários complexos
como se fossem ordenados
• Iatrogenia
– Efeitos colaterais de processos de software
muito prescritivos
Práticas frágeis (Transferência de Risco)
Dicotomia entre desenvolvimento e testes
Modelo em V de qualidade sem automação de testes
Devs Testers
Práticas frágeis (Transferência de Risco)
Sistemas de incentivos divergentes
Fonte: Lean Enterprise, Jez Humble at al.
Práticas frágeis (Transferência de Risco)
Times de TI com sistemas de incentivos divergentes
Espirais da morte
• Mais código incorreto -> Menos disposição das pessoas em implantá-lo
• Implantações menos frequentes -> Mais códigos (ruins) devem ser implantados a cada vez
• Aumento na complexidade da implantação -> Aumenta a probabilidade de interrupções
• Mais interrupções -> Mais relutância em implantar coisas novas
Portões das
burocracias.
Derruba-los-ei!
Aqui não
passarás!
Práticas frágeis (Ilusão do Ordenado)
Comportamento
(incapacidade de prever)
Arquitetura
(dificuldade
de
entender)
Ordenado Complexo Caótico
Simples
Complicado
Fonte: Management 3.0, Jurgen Appelo
(Extraído do livro The Interaction Between Complexity and Management de Ralph Stacey)
Práticas frágeis (Ilusão do Ordenado)
Grandes projetos
• Apenas 1/5 dos grandes projetos ágeis
são entregues dentro das suas premissas
gerenciais. (valor, custo e prazo)
Fonte: Standish Group
• Megaprojetos são deseconômicos com a escala.
Fonte: Megaprojects and Risk: An Anatomy of
Ambition - Bent Flyvbjerg
Práticas frágeis (Ilusão do Ordenado)
Grandes sistemas (Big Ball of Mud)
Grandes sistemas tem muito
mais fragilidade inerente.
Exemplo: Base pública de
projetos medidos pelo
SonarQube
Práticas frágeis (Iatrogenia)
Processos de software prescritivos e definidos top down
ritos
processos
Metodologias
ferramentas
papéis
métodos
tecnologias
cadências estruturas
Algumas propriedades de práticas antifrágeis
de engenharia de software
• Estresse contínuo
– Introduza volatilidade
– Aceite muitos (e pequenos) erros
• Redundância
• Sem transferência de risco
(skin in the game)
• Descentralização e regras locais
• Emergence
“Antifragile system becomes better and stronger under
continuous attacks and errors”, Nicholas Taleb
Uma agenda de antifragilidade na
engenharia de software
Monperrus, Martin. "Principles of antifragile software." Companion to the first International
Conference on the Art, Science and Engineering of Programming. ACM, 2017.
Jones, Kennie H. "Engineering antifragile systems: A change in design
philosophy." Procedia computer science 32 (2014): 870-875.
Russo, Daniel, and Paolo Ciancarini. "A proposal for an antifragile software
manifesto." Procedia Computer Science 83 (2016): 982-987.
Fitzgerald, Brian, and Klaas-Jan Stol. "Continuous software engineering: A
roadmap and agenda." Journal of Systems and Software 123 (2017): 176-189.
Allspaw, John. "Fault injection in production." Communications of the ACM 55.10 (2012):
48-52.
Práticas de antifragilidade
• Injeção de falhas em produção (Netflix)
• Exercício dos dias de jogos (Etsy)
• Engenharia do Caos
Chaos Engineering is the discipline of experimenting on a
system in order to build confidence in the system’s
capability to withstand turbulent conditions in production.
http://principlesofchaos.org
Práticas de antifragilidade
• Programação em grupos
(Mob programming)
• Revisões por pares (PR)
“If a programmer is indispensable, get rid of
him as quickly as possible”, Gerald
Weinberg – Bus Factor
Práticas de antifragilidade
Equipes multifuncionais, produtos (e não projetos), serviços pequenos e regras locais com o comando da missão
Fonte: Lean Enterprise, Jez Humble at al.
Práticas de antifragilidade
Automação de testes de unidade, Shift Left Testing, TDD e
práticas similares que incentivem a incerteza e a volatilidade
Fonte: Test Pyramid, Martin Fowler
"If we're not making any
mistakes, it means we're
not moving quickly
enough.”, Netflix
Práticas de antifragilidade
Adotar o princípio Safety II
• Uma abordagem de Safety I pressupõe que as coisas dão
errado por causa de falhas identificáveis ou mau
funcionamento de componentes específicos: tecnologia,
procedimentos, trabalhadores humanos e organizações nas
quais eles estão inseridos.
• Uma abordagem Safety-II pressupõe que a variabilidade do
desempenho diário fornece as adaptações necessárias para
responder a condições variáveis e, portanto, é a razão pela
qual as coisas dão certo. Os seres humanos são
consequentemente vistos como essenciais para a
flexibilidade e melhorias do sistema.
Práticas de antifragilidade
Integração Contínua
• Exposição diária a volatilidade através da
automação da compilação e builds, execução
de testes automatizados e publicação em
ambientes intermediários.
Práticas de antifragilidade
Comunidades de aplicações para self-healing de servidores
“Nossas experiências mostram que os ACs são práticos e
viáveis para aplicações atuais: um AC de 15.000 membros
pode monitorar colaborativamente o Apache em busca de
novas falhas e imunizar todos os membros contra eles
com apenas uma degradação de desempenho de 6% para
cada membro.”,
Self Healing with Application Communities, Michael E. Locasto et al.
Práticas de antifragilidade
OODA, MVP, Design Sprints e Lean Change Management
Fonte: RICHARDS, Chet. Boyd’s OODA Loop: It’s Not What You Think.
Práticas de antifragilidade
50% dos produtos do Google se originaram de pesquisas não estruturadas e não planejadas
nos tempos livres dos funcionários (20% do tempo semanal). Adsense, sozinho, foi
responsável por 25% da renda da Google
O princípio da opcionalidade, de Taleb
Práticas de robustez e antifragilidade
Continuous-*
Continuous Software Engineering: A Roadmap and Agenda, Brian Fitzgerald e Klass JanStol
Práticas de antifragilidade
Práticas de processo do SEMAT
SEMAT
Alphas
Kernel
Essence
The Essence of Software Engineering: The SEMAT Kernel, Ivar Jacobson
Em busca de uma agenda que reconheça
a complexidade em sistemas de software
Estamos iniciando a descoberta de
ideias, princípios e práticas que
reconheçam e tratem a natureza
orgânica de softwares e da
engenharia de software.
Por mais divulgação e conhecimento de práticas que atendam a
propriedades de sistemas complexos e de antifragilidade
Estresse contínuo Redundância
Sem transferência
de risco
(skin in the game)
Descentralização
e regras locais
Emergence
(de baixo para
cima)
Práticas de Engenharia de Software Robustas e Antifrágeis
para Ambientes Complexos
Marco Mendes
Obrigado!
https://www.linkedin.com/in/marcomendes/

More Related Content

What's hot

Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroElton Minetto
 
Implantando a governança de ti
Implantando a governança de tiImplantando a governança de ti
Implantando a governança de tiSilvino Neto
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e bináriasSérgio Souza Costa
 
Modelagem de Processos e Decisões com BPMN e DMN
Modelagem de Processos e Decisões com BPMN e DMNModelagem de Processos e Decisões com BPMN e DMN
Modelagem de Processos e Decisões com BPMN e DMNMauricio Bitencourt, CBPP
 
Aula 1 Analise e Projeto
Aula 1   Analise e ProjetoAula 1   Analise e Projeto
Aula 1 Analise e ProjetoSergio Silva
 
What next after microservices
What next after microservicesWhat next after microservices
What next after microservicesBilgin Ibryam
 
Workshop Scrum - 8 horas
Workshop Scrum - 8 horasWorkshop Scrum - 8 horas
Workshop Scrum - 8 horasWise Systems
 
Minicurso Fundamentos da Análise de Negócio 3.0
Minicurso Fundamentos da Análise de Negócio 3.0Minicurso Fundamentos da Análise de Negócio 3.0
Minicurso Fundamentos da Análise de Negócio 3.0Rildo (@rildosan) Santos
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
Apresentação Pilar desenvolv. de pessoas (WCM)
Apresentação Pilar desenvolv. de pessoas (WCM)Apresentação Pilar desenvolv. de pessoas (WCM)
Apresentação Pilar desenvolv. de pessoas (WCM)Adeirechris Santos
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilGuilherme Coelho
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoMorvana Bonin
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosCláudio Amaral
 

What's hot (20)

Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outro
 
Implantando a governança de ti
Implantando a governança de tiImplantando a governança de ti
Implantando a governança de ti
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Six Sigma 2014
Six Sigma 2014Six Sigma 2014
Six Sigma 2014
 
Modelagem de Processos e Decisões com BPMN e DMN
Modelagem de Processos e Decisões com BPMN e DMNModelagem de Processos e Decisões com BPMN e DMN
Modelagem de Processos e Decisões com BPMN e DMN
 
Aula 1 Analise e Projeto
Aula 1   Analise e ProjetoAula 1   Analise e Projeto
Aula 1 Analise e Projeto
 
What next after microservices
What next after microservicesWhat next after microservices
What next after microservices
 
Workshop Scrum - 8 horas
Workshop Scrum - 8 horasWorkshop Scrum - 8 horas
Workshop Scrum - 8 horas
 
Minicurso Fundamentos da Análise de Negócio 3.0
Minicurso Fundamentos da Análise de Negócio 3.0Minicurso Fundamentos da Análise de Negócio 3.0
Minicurso Fundamentos da Análise de Negócio 3.0
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Apresentação Pilar desenvolv. de pessoas (WCM)
Apresentação Pilar desenvolv. de pessoas (WCM)Apresentação Pilar desenvolv. de pessoas (WCM)
Apresentação Pilar desenvolv. de pessoas (WCM)
 
Trabalho de logistica jairo
Trabalho de logistica jairoTrabalho de logistica jairo
Trabalho de logistica jairo
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícil
 
Modelo em Espiral
Modelo em EspiralModelo em Espiral
Modelo em Espiral
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introdução
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e Relacionamentos
 
Scrum Master em ação
Scrum Master em açãoScrum Master em ação
Scrum Master em ação
 
Gestão de Risco
Gestão de RiscoGestão de Risco
Gestão de Risco
 

Similar to Praticas robustas e antifrageis de engenharia de software

Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...
Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...
Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...Amanda Varella
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwaretdc-globalcode
 
O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?paxtecnologia
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Por quê o software continua inseguro (versão extendida)?
Por quê o software continua inseguro (versão extendida)?Por quê o software continua inseguro (versão extendida)?
Por quê o software continua inseguro (versão extendida)?Vinicius Oliveira Ferreira
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Technology Radar_ThoughtWorks_Vol_22
Technology Radar_ThoughtWorks_Vol_22Technology Radar_ThoughtWorks_Vol_22
Technology Radar_ThoughtWorks_Vol_22Hudson Augusto
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareClaudia Melo
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Monthpizzol
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Monthpizzol
 
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-marketBoris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-marketAgile Trends
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aLeonardo Molinari
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimentoledsifes
 

Similar to Praticas robustas e antifrageis de engenharia de software (20)

Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Palestra Gerenciamento de Projetos com Scrum e MPS.Br
Palestra Gerenciamento de Projetos com Scrum e MPS.BrPalestra Gerenciamento de Projetos com Scrum e MPS.Br
Palestra Gerenciamento de Projetos com Scrum e MPS.Br
 
Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...
Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...
Rio Agile - O Poder da Visualização: atacando a Dívida Técnica e promovendo o...
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
 
O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?
 
DevOps
DevOpsDevOps
DevOps
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Por quê o software continua inseguro (versão extendida)?
Por quê o software continua inseguro (versão extendida)?Por quê o software continua inseguro (versão extendida)?
Por quê o software continua inseguro (versão extendida)?
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
Por quê o software continua inseguro?
Por quê o software continua inseguro?Por quê o software continua inseguro?
Por quê o software continua inseguro?
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 
Technology Radar_ThoughtWorks_Vol_22
Technology Radar_ThoughtWorks_Vol_22Technology Radar_ThoughtWorks_Vol_22
Technology Radar_ThoughtWorks_Vol_22
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Month
 
The Mythical Man-Month
The Mythical Man-MonthThe Mythical Man-Month
The Mythical Man-Month
 
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-marketBoris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimento
 

Praticas robustas e antifrageis de engenharia de software

  • 1. Práticas de Engenharia de Software Robustas e Antifrágeis para Ambientes Complexos Marco Mendes Apresentado no Agile Brazil 2019 Belo Horizonte, MG, Brasil
  • 2. Na década de 1960, o problema era que os projetos estavam excedendo o orçamento ou nunca eram entregues. A primeira crise na indústria de software
  • 3. O nascimento da engenharia de software em 1968 nas históricas conferências da OTAN
  • 4. “[A principal causa da crise do software é] que as máquinas se tornaram várias ordens de magnitude mais poderosas! Para ser franco: enquanto não existiam máquinas, a programação não era problema; quando tínhamos alguns computadores fracos a programação se tornou um problema moderado. E agora temos computadores gigantes e a programação se tornou um problema igualmente gigantesco.” E. Dijkstra, 1972
  • 5. Em 2001, surge o Agile Manifesto como mais uma resposta a mais uma crise na engenharia de software.
  • 6. “Temos um grande número de pessoas fazendo ágil flácido, uma tentativa tímida de seguir mal algumas práticas de desenvolvimento de software selecionadas”, Andy Hunt “Uma equipe Agile será ágil, não importa como o projeto seja gerenciado. Por outro lado, uma equipe que não é ágil não se tornará ágil simplesmente em virtude de uma nova e sofisticada estratégia de gerenciamento de projetos. ”, Robert Martin “O ágil foi corrompido pela complexo industrial do Agile”, Martin Fowler A crise do ágil ganha força em 2015
  • 7. Precisamos investigar os nossos modelos mentais de como criar e manter sistemas de software.
  • 8. Sistemas de software e a engenharia de software tem sido desenhados de forma mecanicista.
  • 9. Os efeitos práticos tem sido a criação de processos, sistemas e resultados frágeis. Cuidado Frágil
  • 10. Processos frágeis (Dados do Standish Group) Fonte: https://pmworldlibrary.net/wp-content/uploads/2018/05/pmwj70-May2018-Rosato-go-small-for-project-success-student-paper.pdf
  • 11. •O foguete da Ariane 5 •O sistema de navegação do Boeing 737 •O bot da Knight Capital e perdas de centenas de milhões de dólares Sistemas de software frágeis Cisnes negros
  • 14. x f(x) Ganhos e perdas Você está aqui Perdas Ganhos O frágil O antifrágil x f(x) Ganhos e perdas Você está aqui Perdas Ganhos Perdas assimétricas. Qualquer coisa que tem mais perdas que ganhos de eventos aleatórios (variabilidade) Ganhos assimétricos. Qualquer coisa que tem mais ganhos que perdas de eventos aleatórios (variabilidade)
  • 15.
  • 16. Propriedades de práticas frágeis de engenharia de software • Transferência de riscos – Práticas que transferem riscos de um local para outro. Ausência da pele em jogo. • Ilusão do ordenado – Práticas que tomam cenários complexos como se fossem ordenados • Iatrogenia – Efeitos colaterais de processos de software muito prescritivos
  • 17. Práticas frágeis (Transferência de Risco) Dicotomia entre desenvolvimento e testes Modelo em V de qualidade sem automação de testes Devs Testers
  • 18. Práticas frágeis (Transferência de Risco) Sistemas de incentivos divergentes Fonte: Lean Enterprise, Jez Humble at al.
  • 19. Práticas frágeis (Transferência de Risco) Times de TI com sistemas de incentivos divergentes Espirais da morte • Mais código incorreto -> Menos disposição das pessoas em implantá-lo • Implantações menos frequentes -> Mais códigos (ruins) devem ser implantados a cada vez • Aumento na complexidade da implantação -> Aumenta a probabilidade de interrupções • Mais interrupções -> Mais relutância em implantar coisas novas Portões das burocracias. Derruba-los-ei! Aqui não passarás!
  • 20. Práticas frágeis (Ilusão do Ordenado) Comportamento (incapacidade de prever) Arquitetura (dificuldade de entender) Ordenado Complexo Caótico Simples Complicado Fonte: Management 3.0, Jurgen Appelo (Extraído do livro The Interaction Between Complexity and Management de Ralph Stacey)
  • 21. Práticas frágeis (Ilusão do Ordenado) Grandes projetos • Apenas 1/5 dos grandes projetos ágeis são entregues dentro das suas premissas gerenciais. (valor, custo e prazo) Fonte: Standish Group • Megaprojetos são deseconômicos com a escala. Fonte: Megaprojects and Risk: An Anatomy of Ambition - Bent Flyvbjerg
  • 22. Práticas frágeis (Ilusão do Ordenado) Grandes sistemas (Big Ball of Mud) Grandes sistemas tem muito mais fragilidade inerente. Exemplo: Base pública de projetos medidos pelo SonarQube
  • 23. Práticas frágeis (Iatrogenia) Processos de software prescritivos e definidos top down ritos processos Metodologias ferramentas papéis métodos tecnologias cadências estruturas
  • 24. Algumas propriedades de práticas antifrágeis de engenharia de software • Estresse contínuo – Introduza volatilidade – Aceite muitos (e pequenos) erros • Redundância • Sem transferência de risco (skin in the game) • Descentralização e regras locais • Emergence “Antifragile system becomes better and stronger under continuous attacks and errors”, Nicholas Taleb
  • 25. Uma agenda de antifragilidade na engenharia de software Monperrus, Martin. "Principles of antifragile software." Companion to the first International Conference on the Art, Science and Engineering of Programming. ACM, 2017. Jones, Kennie H. "Engineering antifragile systems: A change in design philosophy." Procedia computer science 32 (2014): 870-875. Russo, Daniel, and Paolo Ciancarini. "A proposal for an antifragile software manifesto." Procedia Computer Science 83 (2016): 982-987. Fitzgerald, Brian, and Klaas-Jan Stol. "Continuous software engineering: A roadmap and agenda." Journal of Systems and Software 123 (2017): 176-189. Allspaw, John. "Fault injection in production." Communications of the ACM 55.10 (2012): 48-52.
  • 26. Práticas de antifragilidade • Injeção de falhas em produção (Netflix) • Exercício dos dias de jogos (Etsy) • Engenharia do Caos Chaos Engineering is the discipline of experimenting on a system in order to build confidence in the system’s capability to withstand turbulent conditions in production. http://principlesofchaos.org
  • 27. Práticas de antifragilidade • Programação em grupos (Mob programming) • Revisões por pares (PR) “If a programmer is indispensable, get rid of him as quickly as possible”, Gerald Weinberg – Bus Factor
  • 28. Práticas de antifragilidade Equipes multifuncionais, produtos (e não projetos), serviços pequenos e regras locais com o comando da missão Fonte: Lean Enterprise, Jez Humble at al.
  • 29. Práticas de antifragilidade Automação de testes de unidade, Shift Left Testing, TDD e práticas similares que incentivem a incerteza e a volatilidade Fonte: Test Pyramid, Martin Fowler "If we're not making any mistakes, it means we're not moving quickly enough.”, Netflix
  • 30. Práticas de antifragilidade Adotar o princípio Safety II • Uma abordagem de Safety I pressupõe que as coisas dão errado por causa de falhas identificáveis ou mau funcionamento de componentes específicos: tecnologia, procedimentos, trabalhadores humanos e organizações nas quais eles estão inseridos. • Uma abordagem Safety-II pressupõe que a variabilidade do desempenho diário fornece as adaptações necessárias para responder a condições variáveis e, portanto, é a razão pela qual as coisas dão certo. Os seres humanos são consequentemente vistos como essenciais para a flexibilidade e melhorias do sistema.
  • 31. Práticas de antifragilidade Integração Contínua • Exposição diária a volatilidade através da automação da compilação e builds, execução de testes automatizados e publicação em ambientes intermediários.
  • 32. Práticas de antifragilidade Comunidades de aplicações para self-healing de servidores “Nossas experiências mostram que os ACs são práticos e viáveis para aplicações atuais: um AC de 15.000 membros pode monitorar colaborativamente o Apache em busca de novas falhas e imunizar todos os membros contra eles com apenas uma degradação de desempenho de 6% para cada membro.”, Self Healing with Application Communities, Michael E. Locasto et al.
  • 33. Práticas de antifragilidade OODA, MVP, Design Sprints e Lean Change Management Fonte: RICHARDS, Chet. Boyd’s OODA Loop: It’s Not What You Think.
  • 34. Práticas de antifragilidade 50% dos produtos do Google se originaram de pesquisas não estruturadas e não planejadas nos tempos livres dos funcionários (20% do tempo semanal). Adsense, sozinho, foi responsável por 25% da renda da Google O princípio da opcionalidade, de Taleb
  • 35. Práticas de robustez e antifragilidade Continuous-* Continuous Software Engineering: A Roadmap and Agenda, Brian Fitzgerald e Klass JanStol
  • 36. Práticas de antifragilidade Práticas de processo do SEMAT SEMAT Alphas Kernel Essence The Essence of Software Engineering: The SEMAT Kernel, Ivar Jacobson
  • 37. Em busca de uma agenda que reconheça a complexidade em sistemas de software Estamos iniciando a descoberta de ideias, princípios e práticas que reconheçam e tratem a natureza orgânica de softwares e da engenharia de software.
  • 38. Por mais divulgação e conhecimento de práticas que atendam a propriedades de sistemas complexos e de antifragilidade Estresse contínuo Redundância Sem transferência de risco (skin in the game) Descentralização e regras locais Emergence (de baixo para cima)
  • 39. Práticas de Engenharia de Software Robustas e Antifrágeis para Ambientes Complexos Marco Mendes Obrigado! https://www.linkedin.com/in/marcomendes/