SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
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/

Más contenido relacionado

La actualidad más candente

Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfMarcelo Silva
 
FDD vs XP vs SCRUM
FDD vs XP vs SCRUMFDD vs XP vs SCRUM
FDD vs XP vs SCRUMfredcobain
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosDomingo Suarez Torres
 
Executive Presentation on Agile Project Management by Boardroom Metrics Inc.
Executive Presentation on Agile Project Management by Boardroom Metrics Inc.Executive Presentation on Agile Project Management by Boardroom Metrics Inc.
Executive Presentation on Agile Project Management by Boardroom Metrics Inc.Boardroom Metrics
 
Modelagem de casos de uso e diagramas de sequência
Modelagem de casos de uso e diagramas de sequênciaModelagem de casos de uso e diagramas de sequência
Modelagem de casos de uso e diagramas de sequênciaJorge Linhares
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Metodologia Ágil Scrum
Metodologia Ágil ScrumMetodologia Ágil Scrum
Metodologia Ágil ScrumAricelio Souza
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
The Unicorn Project and The Five Ideals (older: see notes for newer version)
The Unicorn Project and The Five Ideals (older: see notes for newer version)The Unicorn Project and The Five Ideals (older: see notes for newer version)
The Unicorn Project and The Five Ideals (older: see notes for newer version)Gene Kim
 
Modelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de SoftwareModelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de SoftwareDaniela Franciosi
 
Scaled Agile Framework (SAFe) Roles and Meetings
Scaled Agile Framework (SAFe) Roles and MeetingsScaled Agile Framework (SAFe) Roles and Meetings
Scaled Agile Framework (SAFe) Roles and MeetingsRob Betcher
 
A simple formula for becoming Lean, Agile and unlocking high performance team...
A simple formula for becoming Lean, Agile and unlocking high performance team...A simple formula for becoming Lean, Agile and unlocking high performance team...
A simple formula for becoming Lean, Agile and unlocking high performance team...Rowan Bunning
 
Agile and Scrum for Executives
Agile and Scrum for ExecutivesAgile and Scrum for Executives
Agile and Scrum for ExecutivesJoanna khoury
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
What happens to engineering manager in agile world
What happens to engineering manager in agile worldWhat happens to engineering manager in agile world
What happens to engineering manager in agile worldNaveen Indusekhar
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresWillians Miyabara
 
Beyond Engineering: The Future of Platforms @ CraftConf, May 2023
Beyond Engineering: The Future of Platforms @ CraftConf,  May 2023Beyond Engineering: The Future of Platforms @ CraftConf,  May 2023
Beyond Engineering: The Future of Platforms @ CraftConf, May 2023Manuel Pais
 

La actualidad más candente (20)

Exercicios java básico
Exercicios java básicoExercicios java básico
Exercicios java básico
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdf
 
FDD vs XP vs SCRUM
FDD vs XP vs SCRUMFDD vs XP vs SCRUM
FDD vs XP vs SCRUM
 
Essential SAFe® 4.0
Essential SAFe® 4.0Essential SAFe® 4.0
Essential SAFe® 4.0
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de Microservicios
 
Executive Presentation on Agile Project Management by Boardroom Metrics Inc.
Executive Presentation on Agile Project Management by Boardroom Metrics Inc.Executive Presentation on Agile Project Management by Boardroom Metrics Inc.
Executive Presentation on Agile Project Management by Boardroom Metrics Inc.
 
Modelagem de casos de uso e diagramas de sequência
Modelagem de casos de uso e diagramas de sequênciaModelagem de casos de uso e diagramas de sequência
Modelagem de casos de uso e diagramas de sequência
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Why Large Scale Scrum (LeSS)?
Why Large Scale Scrum (LeSS)?Why Large Scale Scrum (LeSS)?
Why Large Scale Scrum (LeSS)?
 
Metodologia Ágil Scrum
Metodologia Ágil ScrumMetodologia Ágil Scrum
Metodologia Ágil Scrum
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
The Unicorn Project and The Five Ideals (older: see notes for newer version)
The Unicorn Project and The Five Ideals (older: see notes for newer version)The Unicorn Project and The Five Ideals (older: see notes for newer version)
The Unicorn Project and The Five Ideals (older: see notes for newer version)
 
Modelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de SoftwareModelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de Software
 
Scaled Agile Framework (SAFe) Roles and Meetings
Scaled Agile Framework (SAFe) Roles and MeetingsScaled Agile Framework (SAFe) Roles and Meetings
Scaled Agile Framework (SAFe) Roles and Meetings
 
A simple formula for becoming Lean, Agile and unlocking high performance team...
A simple formula for becoming Lean, Agile and unlocking high performance team...A simple formula for becoming Lean, Agile and unlocking high performance team...
A simple formula for becoming Lean, Agile and unlocking high performance team...
 
Agile and Scrum for Executives
Agile and Scrum for ExecutivesAgile and Scrum for Executives
Agile and Scrum for Executives
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
What happens to engineering manager in agile world
What happens to engineering manager in agile worldWhat happens to engineering manager in agile world
What happens to engineering manager in agile world
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
Beyond Engineering: The Future of Platforms @ CraftConf, May 2023
Beyond Engineering: The Future of Platforms @ CraftConf,  May 2023Beyond Engineering: The Future of Platforms @ CraftConf,  May 2023
Beyond Engineering: The Future of Platforms @ CraftConf, May 2023
 

Similar a 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 a 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/