Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução à operação de produtos digitais via Devconf(Opensanca)

Introdução à operação de produtos digitais via Devconf(Opensanca)

Chrisitano Milfont, apresentando no Devconf 2023 abordando sobre a operação de produtos digitais

Sinopse:

Product Ops (ProdOps) não é sobre como gerir produtos digitais e sim como habilitar a boa gestão e execução com a arquitetura, engenharia e processos que tornam a validação de hipóteses de forma frequente, iterativa e incremental para atingir o melhor Time to Market.

ProdOps permite a independência das equipes para promoverem suas aplicações, tanto experimentos quanto soluções finais, direto a seus clientes e usuários, decidindo o quando, como e para quem quiserem, respeitando a cultura, papéis, cargos, autoridades e políticas de cada companhia.

Apresentaremos um Framework ProdOps com princípios, técnicas, práticas e artefatos para completar seu processo como um Add-on desde Startups à empresas matriciais tradicionais em plena transformação ou que decidiram iniciar com uma jornada de produto.

Opensanca

May 27, 2023
Tweet

More Decks by Opensanca

Other Decks in Programming

Transcript

  1. DevConf 2023
    Product Ops (ProdOps)

    View full-size slide

  2. “Code in production is the
    only code that matters”
    Paul Osman

    View full-size slide

  3. Ato 1: Inimigo

    View full-size slide

  4. “Individuals and interactions
    over processes and tools”
    https://agilemanifesto.org/
    Indivíduos e
    interações
    mais que
    processos e
    ferramentas

    View full-size slide

  5. NATIVO DIGITAL
    Disruptivo pelo próprio formato

    View full-size slide

  6. ESTRATÉGIA DIGITAL
    Permitir o autoatendimento do cliente
    Mentalidade
    Analógica
    Mentalidade
    Digital
    Human
    centered
    design
    Tech
    centered
    design
    Reativo Preditivo
    Transformaçã
    o Digital
    Iterativa e
    incremental
    The Future of Digital Innovation: To Win in Digital Business, Enterprises Must Innovate, 12/08/2022
    https://www.idc.com/getdoc.jsp?containerId=US49450521

    View full-size slide

  7. INOVAÇÃO, aprimoramento de ideias por
    EXPERIMENTOS
    Invenção: criar algo que não existe, mesmo que utilizando uma ciência
    ou base existente, trazer elementos que não pertencem a área.
    Iteração: Fazer a mesma coisa, mas incrementando a cada versão.
    Inovação: Fazer a mesma coisa, mas sob caminhos diferentes.
    Disruptivo: Fazer algo que torna o anterior totalmente obsoleto.
    "Inovação é a execução de novas idéias que criam valor *
    * Use 7 Dimensions of Innovation to Create Your Innovation Perimeter and Portfolio, 09/08/2022
    https://www.gartner.com/document/3970190

    View full-size slide

  8. FRAMEWORKS DE INOVAÇÃO
    CINCO ELEMENTOS-CHAVE DOS
    ECOSSISTEMAS DE INOVAÇÃO
    1. Intercâmbio de valores
    2. Diversidade de talentos
    3. Ampla fonte de recursos
    compartilhados
    4. Regras de engajamento
    5. Modelo contínuo de
    gerenciamento, mensuração e
    evolução
    1
    2 Gerenciamento Contínuo
    Meça, monitore, refine, aprenda e melhore
    continuamente.
    Reimagine Innovation With an Adaptive Innovation Ecosystem Framework, 05/07/2022
    https://www.gartner.com/document/4016314
    SÃO BASEADOS NO MODELO ITERATIVO E INCREMENTAL VISANDO MITIGAR RISCOS

    View full-size slide

  9. EXPERIMENTAR CAMINHOS DIFERENTES
    ESTRATÉGIA NOS
    ECOSSISTEMAS DE
    INOVAÇÃO *
    1. Inovação é um
    processo incremental
    e Bottom-up
    2. Processo de inovação
    é como um esporte
    coletivo
    3. Toda empresa tem
    que fomentar
    inovação no seu
    ecossistema de
    negócios
    AUTONOMIA DIRECIONADA À VALIDAÇÃO FREQUENTE DE HIPÓTESES
    * Top-Down Innovation Is Overrated, and Other Lessons on Innovation, 06/08/2021
    https://www.gartner.com/document/code/756602?ref=authbody&refval=4009218
    Prototipação e validação rápida
    Piloto (MVP) para soluções mais complexas

    View full-size slide

  10. Não existe inovação
    sem autonomia

    View full-size slide

  11. Ato 2: O (melhor)
    Momento é agora

    View full-size slide

  12. MUNDO VUCA/BANI
    ENTREGA ACELERADA E COLABORAÇÃO ENTRE TI E NEGÓCIOS SÃO PRIORIDADES
    Volatility (Volátil)
    Uncertainty (Incerto)
    Complexity (Complexo)
    Ambiguity (Ambíguo)
    Brittleness (Frágil)
    Anxiety (Ansioso)
    Nonlinearity (Não-linear)
    Incomprehensibility
    (Incompreensível)
    Maximize the Success of Enterprise Agile: Utilize DevOps as the Accelerator, 03/09/2019
    https://www.gartner.com/document/3969871?ref=solrAll&refval=340284433

    View full-size slide

  13. ENTREGA ACELERADA
    INTERVALO MENOR ENTRE RELEASES GARANTE MAIOR SUCESSO EM PROJETOS ÁGEIS
    LEAD-TIME <
    > DEPLOY
    FREQUENCY
    Maximize the Success of Enterprise Agile: Utilize DevOps as the Accelerator, 03/09/2019
    https://www.gartner.com/document/3969871?ref=solrAll&refval=340284433

    View full-size slide

  14. LITERATURA
    DUAS DÉCADAS DE EVOLUÇÃO E CONSOLIDAÇÃO

    View full-size slide

  15. Ato 3: Entrega contínua
    como habilitador da
    validação frequente de
    hipóteses

    View full-size slide

  16. FAKE FEATURES & FEATURE FLAG
    DESCOBRIR RAPIDAMENTE O QUE O CLIENTE QUER REALMENTE
    OS MAIORES DESAFIOS ENFRENTADOS
    PELAS EMPRESAS *
    1. As organizações lutam para saber o que os
    clientes realmente querem
    2. Habilidades de análise de dados insuficientes
    3. Organizações ficando atrás do ritmo de seus
    clientes
    Crédito da Imagem
    https://benoitpasquier.com/feature-flag-mobile-apptimize/
    * Quick Answer: What Are the Benefits of a “Test and Learn” Approach to Customer Experience?, 22/04/2022
    https://www.gartner.com/document/4013951?ref=solrAll&refval=340786965
    "Muitas empresas tiveram
    bastante sucesso ao adicionar
    o recurso de Fake Feature ou
    fazer somente um teste de
    Landing Page"
    Laura Klein

    View full-size slide

  17. TESTES A/B
    ESTATÍSTICAS PARA DEMONSTRAR PREFERÊNCIAS DOS CLIENTES
    Teste A/B compara versão A versus B de uma experiência de
    cliente usando conjuntos diferentes de usuários para
    encontrar a melhor preferência entre os dois, este modelo
    também é chamado Campeão e Desafiante.
    Testes multivariantes envolve testar múltiplas versões de
    múltiplos elementos ao mesmo tempo usando matrizes
    algébricas para determinar combinações vencedoras.
    Os dois modelos usam análises estatísticas para determinar
    a validação dos testes.

    View full-size slide

  18. CANARY RELEASES
    CADEIA DE VALOR TOTALMENTE AUTOMATIZADA E ENTREGUE COM RISCO MÍNIMO
    Market Guide for Value Stream Delivery Platforms, 18/10/2021
    https://www.gartner.com/document/4007023?ref=solrAll&refval=340789701

    View full-size slide

  19. FREQUÊNCIA ALTA DE ENTREGA
    ELIMINAR O TRABALHO PESADO E REPETITIVO
    Market Guide for Value Stream Delivery Platforms, 18/10/2021
    https://www.gartner.com/document/4007023?ref=solrAll&refval=340789701

    View full-size slide

  20. Ato 4: Obstáculos

    View full-size slide

  21. MOMENTO DO PRODUTO
    NÃO EXISTE UM MODELO UNIVERSAL, CADA MOMENTO DO NEGÓCIO EXIGE ADAPTAÇÕES

    View full-size slide

  22. CULTURA DE PROJETOS
    ESTRUTURA SEGUE A FORMA DE ENTREGA E A ENTREGA DEPENDE DA ESTRUTURA
    ?

    View full-size slide

  23. NÃO EXISTE VALIDAÇÃO FREQUENTE DE HIPÓTESES
    SEM ENTREGA ACELERADA
    "Se você fizer apostas
    ousadas, elas serão
    experimentos. E se
    são experimentos,
    você não sabe de
    antemão se vão
    funcionar.
    Mas alguns grandes
    sucessos compensam
    dezenas e dezenas de
    coisas que não
    funcionaram."
    Jeff Bezos *
    * How Coca-Cola, Netflix, and Amazon Learn from Failure, 10/11/2017
    https://hbr.org/2017/11/how-coca-cola-netflix-and-amazon-learn-from-failure
    GMUD desacelera a entrega

    View full-size slide

  24. Ato 5: Product Ops
    (ProdOps)

    View full-size slide

  25. Estratégia
    Missão Flexibilizar a utilização de provedores de pagamento
    Estratégia da Companhia Adicionar melhores contratos por tipo de pagamento
    Estratégia do Produto Desacoplar a gestão de pagamento do Ecommerce
    Roadmap do Produto Payments 1.1
    Objetivos do Produto Criar 99.99% de Invoices de boleto via Starkbank
    Criar 99,99% de Invoices de Pix via Starkbank
    Garantir 99,99% do Fallback de Invoice de Pix e Boleto via
    Wirecard

    View full-size slide

  26. Release
    Serviço Confiabilidade
    Criar Invoice 1.1.0.r1 Error Budget: 2.01%
    Confirmação de pagamento 1.1.0.r1 Error Budget: 0.03%
    Cancelamento 1.2.0
    Pagamento manual 1.2.0
    Notificação de status de pagamento 1.1.0.r1 Error Budget: 0.01%

    View full-size slide

  27. Backlog
    Criar Invoice
    Pix
    Starkbank
    Release Backlog - 1.1.0.r1
    BugFix:
    Enviar
    mensagem
    Criar Invoice
    Pix
    Wirecard
    Confirmar
    Pagamento
    via
    Starkbank

    View full-size slide

  28. Versionamento
    Production 1.1
    Dependencies (Addon)
    Ecommerce
    Platform - 11.2
    Payments
    Gateway 1.1
    Notifier
    microservice 2.1
    Cloud
    Functions 1.0
    Ecommerce Platform - 11.2 Disponível
    Payments Gateway 1.1
    Notifier microservice 2.1
    Cloud Functions 1.0 Disponível
    RDS Postgres - 9.6.1 Disponível Disponível
    Elasticache Redis - 2.2.0 Disponível Disponível
    Kafka 3.4.0 Disponível Disponível Disponível
    Sendgrid V3 Disponível
    Starkbank V2 Disponível
    Wirecard V2 Disponível

    View full-size slide

  29. Lançamento
    1% -> 3% -> 50% -> 100%

    View full-size slide

  30. O que é ProdOps?
    Engenharia no D0

    View full-size slide

  31. Christiano Milfont
    Trusted Tech Advisor
    [email protected]
    (11) 94177-4409
    https://www.linkedin.com/in/cmilfont/
    Metodologia ProdOps
    https://twitter.com/cmilfont
    https://www.youtube.com/prodops
    Com 23 anos de carreira em tecnologia, já passou por áreas desde a
    gestão de CPD e desenvolvimento back-end até diretoria de
    tecnologia e Produtos Digitais na Via Varejo. Trabalha com Cloud e
    DevOps desde 2009, e também participou em algumas
    transformações digitais como CVC e outras tantas.
    Hoje na Concrete/Accenture, seu objetivo é atuar diretamente na
    estratégia de cloud first, buscando soluções e implementando
    estratégias para posicionar mais fortemente neste setor.
    Como Tech Advisor, participou da estratégia e operação que tornou
    a Facily em Unicórnio, primeiro e maior Social Commerce Latam,
    agora segue em busca do IPO.
    Atua como Advisor, Tech Advisor e consultor em diversas Startups
    no Brasil.

    View full-size slide

  32. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction

    View full-size slide

  33. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction

    View full-size slide

  34. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction

    View full-size slide

  35. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction

    View full-size slide

  36. Desenvolvimento guiado por testes é um
    caminho de gerenciamento do medo durante a
    programação
    Test Driven Development by Example
    Kent Beck

    View full-size slide

  37. Simplicidade, Comunicação, Feedback, Respeito
    e Coragem
    Valores, Extreme Programming

    View full-size slide

  38. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction

    View full-size slide

  39. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction

    View full-size slide

  40. Desenvolvimento orientado pela produção é um
    caminho de gerenciamento dos valores,
    princípios e práticas durante a programação que
    foca em Deploy First
    ProdOps

    View full-size slide

  41. Porque não miramos as coisas
    que se vêem, mas sim as que não
    se vêem. Pois as coisas que se
    vêem são temporais e as que não
    se vêem são eternas.
    2 Coríntios 4:18

    View full-size slide

  42. Business Modeling
    Implementation
    Test
    Analysis & Design
    Preliminary
    Iteration(s)
    Iter.
    #1
    Process Disciplines
    Iterations
    Iter.
    #2
    Iter.
    #n
    Iter.
    #n+1
    Iter.
    #n+2
    Iter.
    #m
    Iter.
    #m+1
    Deployment
    Requirements
    Elaboration Transition
    Inception Construction
    Observability

    View full-size slide

  43. Desenvolvimento orientado pela produção é um
    caminho de gerenciamento dos valores,
    princípios e práticas durante a programação que
    foca em Observability e Deploy First
    ProdOps

    View full-size slide

  44. O que é ProdOps!

    View full-size slide

  45. As Jornadas!
    Vivemos em uma era de crescimento exponencial com toda a tecnologia necessária para entregar
    software mais rápido, com qualidade e mais barato, mesmo assim falhamos com mais intensidade.

    View full-size slide

  46. Onde estamos errando?
    O que precisa acompanhar

    View full-size slide

  47. Duas Novas Jornadas
    Incluindo jornadas para organizar a informação, observando a operação do produto e
    retroalimentando o fluxo com aprendizado contínuo.

    View full-size slide

  48. Como faz?
    Como aplicar as duas novas jornadas!

    View full-size slide

  49. Comece com o que tem
    Primeiro precisa saber o que tem

    View full-size slide

  50. O Ciclo ProdOps
    Uma operação de
    produtificar os serviços
    digitais utilizando
    metodologias modernas
    - como o Kanban -
    garante um plano de
    confiabilidade para
    cada entrega e
    implementa um fluxo
    contínuo de cultura da
    qualidade.

    View full-size slide

  51. C4E (Center for Enablement)

    View full-size slide

  52. C4E: Identificação dos Produtos
    Operação ProdOps para
    estabelecer a fronteira e
    identidade de cada produto

    View full-size slide

  53. C4E: Criação do Modelo Operacional
    Abordagem Recomendada:
    •O monitoramento correto das
    degradações dos serviços criam
    acionamentos preditivos que evitam
    dano ao negócio.
    •O mapeamento visível de
    dependências e relacionamentos
    apoiam na definição de contratos e
    SLAs dos produtos e principalmente
    fornecem Insights para medir e
    acionar em caso de ação necessária
    Blueprint para mapeamento de eventos e métricas

    View full-size slide

  54. C4E: Formação de Equipes para novo modelo operacional
    Abordagem Recomendada:
    •O padrão de SLA e Contratos entre
    as APIs pare endereçar a
    responsabilidade dos serviços com
    autonomia das equipes e menor
    bloqueios e dependencias.
    •O Mapeamento de métricas e
    eventos apoiam também nas escolhas
    sobre o que armazenar, o time que
    produz as informações tem maior
    conhecimento necessário para indicar
    a ingestão necessária.
    Seleção inteligente de gestão de APIS ajuda na definição das equipes

    View full-size slide

  55. C4E: Gestão de Fluxo Automatizado
    Abordagem Recomendada:
    •Mapear os fluxos e Cycle-times para identificar todas as interrupções e trabalhos
    manuais.
    •Estabelecer diretrizes com Building Blocks e Plataformas para apoiar as equipes.
    Guiar o modelo operacional com base no Eliminating Toil

    View full-size slide

  56. C4E: Implementar Loops de Feedback
    Abordagem Recomendada:
    •Criar planos de incidentes e falhas graves para simular e validar.
    •Criar uma cultura de retroalimentar o Discovery com os
    aprendizados do ambiente.
    Planos de resiliência com cultura Postmortem

    View full-size slide

  57. C4E: Operação Efetiva
    Abordagem Recomendada:
    ● Avançar para o maior grau de
    Observabilidade.
    ● Criar um On-call inteligente.
    ● Garantir os acessos e ferramentas integradas
    para os times de atuação
    Garantir um ambiente ágil para o menor MTTR possível

    View full-size slide

  58. C4E: Área Orientada a Produto
    Abordagem Recomendada:
    ● Criar modelo para o time de Produto atuar
    ● Integrar o ecossistema de desenvolvimento como continuação de incidentes.
    Operação com monitoramento e acionamento totalmente automatizados

    View full-size slide

  59. C4E: FinOps gerenciada
    Guiar a FinOps integrando TI com áreas financeiras e contábeis
    Abordagem Recomendada:
    ● Plano de Confiabilidade com
    Checklist de iniciativas FinOps
    endereçando atividades Cross ou
    por Produto em cada iteração.
    ● Redução rápida e eficiente além da
    boa organização dos recursos.
    ● Otimização inteligente sem arriscar
    a operação, medindo a cada
    mudança.

    View full-size slide

  60. O time ProdOps

    View full-size slide

  61. Visualize com Product Deck
    https://produtoreativo.com.br/product-deck/

    View full-size slide

  62. Ato 6: Mergulho no
    Product Delivery

    View full-size slide

  63. Visualize as aplicações que o time mantém
    Reliability Matrix

    View full-size slide

  64. Visualize a maturidade de cada aplicação
    https://produtoreativo.com.br/maturidade-das-capabilidades/

    View full-size slide

  65. Visualize
    https://produtoreativo.com.br/plano-de-confiabilidade/

    View full-size slide

  66. Ciclo de Product Delivery

    View full-size slide

  67. Continuous Delivery First
    Entrega contínua em primeiro lugar

    View full-size slide

  68. Continuous Delivery
    Deployment Speed — Quão rápida é minha Pipeline
    para Deploy em produção?
    Deployment Volume — Qual minha capacidade de
    entregar múltiplos Deployments em uma mesma
    janela de tempo?
    Deployment Failure — Quão precisa é minha Pipeline
    para Deploy em produção?

    View full-size slide

  69. Antipattern: Deploy para ambiente produtivo somente
    quando o trabalho está DONE

    View full-size slide

  70. Antipattern: Deploy manual

    View full-size slide

  71. Release Life Cycle
    Gestão de liberação automatizada

    View full-size slide

  72. Change & Release Management
    Change Lead Time — Qual o tempo que
    levamos para receber uma demanda e
    entregar em produção?
    Change Volume — Quantas
    estórias/features e linhas de código (*)
    nós colocamos em produção por Deploy?

    View full-size slide

  73. Continuous Delivery: Pipeline de Provisionamento no Onboarding

    View full-size slide

  74. Continuous Integration
    Gestão de liberação automatizada

    View full-size slide

  75. Continuous Integration
    Test coverage — Qual o percentual de
    confiança que seu time tem ao mudar código?
    Automated Tests Failure Rate — Qual o esforço
    para garantir a automatização dos testes?
    Code Quality Index (ex: SonarQube) — Qual a
    qualidade interna de sua arquitetura?

    View full-size slide

  76. Continuous API Management
    Gestão contínua da sua API

    View full-size slide

  77. O quanto conseguimos
    aprofundar?
    Entenda as disciplinas que existem

    View full-size slide

  78. Continuous Integration: Hack-Sync-Finish

    View full-size slide

  79. Continuous Integration: Hack

    View full-size slide

  80. Hack: Integração com SCM (Mantenha tudo nele)

    View full-size slide

  81. Sync: Commit e validação frequente

    View full-size slide

  82. Continuous Integration: Feature Branch vs Trunk
    https://trunkbaseddevelopment.com/short-lived-feature-branches/

    View full-size slide

  83. Commit: Usando mensagens significativas

    View full-size slide

  84. Continuous Integration: Finish

    View full-size slide

  85. Finish: Done significa Released

    View full-size slide

  86. Finish: Validate (1º Nível)

    View full-size slide

  87. Finish: Conversação e revisão

    View full-size slide

  88. Continuous Integration: Workflow

    View full-size slide

  89. Continuous Integration: Cycle-time

    View full-size slide

  90. Continuous Integration: Build & Publish

    View full-size slide

  91. Build: Gerenciando dependências

    View full-size slide

  92. Build: Manipulando variáveis de ambiente

    View full-size slide

  93. Build: Double Check de validações (2º)

    View full-size slide

  94. Packaging: Criando o artefato

    View full-size slide

  95. Publish: Registrando sua versão

    View full-size slide

  96. O quanto mais ainda
    aprofundamos?
    Instrumente seu ambiente

    View full-size slide

  97. Quality Checkers
    Architecture and Design,
    Comments,
    Code Duplication,
    Coding Standards,
    Testing (Code Coverage),
    Cyclomatic Complexity,
    Potential Bugs

    View full-size slide

  98. Inadmissível a ausência do Sonar

    View full-size slide

  99. Validação para facilitar Code Review

    View full-size slide

  100. Sonar scan na Pipeline

    View full-size slide

  101. Ajuste no Sonar

    View full-size slide

  102. Unit Test não é sobre testes, é sobre estrutura
    Complexidade
    Acoplamento
    Coesão

    View full-size slide

  103. Code Coverage (Ratio 4:1)
    jest --coverage --coverageReporters="json-summary"
    "total": {
    "lines": { "total": 21777, "covered": 65, "skipped": 0, "pct": 0.3 },
    "statements": { "total": 24163, "covered": 72, "skipped": 0, "pct": 0.3 },
    "functions": { "total": 5451, "covered": 16, "skipped": 0, "pct": 0.29 },
    "branches": { "total": 6178, "covered": 10, "skipped": 0, "pct": 0.16 }
    }

    View full-size slide

  104. No mundo real, para ganhar adesão

    View full-size slide

  105. Static Code Analysis Tools
    (SCAT)
    Metric Tools, Style Checkers, Linters

    View full-size slide

  106. Complexidade
    LOC (Lines of Code),
    NOM (Number of Methods),
    NOA (Number of Attributes),
    DIT (Depth of Inheritance Tree),
    CC (Cyclomatic Complexity),
    WMC (Weight Methods per Class)

    View full-size slide

  107. Complexidade Ciclomática
    ● 1-4: baixa complexidade – Fácil de testar
    ● 5-7: complexidade moderada – tolerável
    ● 8-10: alta complexidade – Refactoring é necessário
    para facilitar o teste
    ● 11 + altíssima complexidade – Muito difícil de testar
    CC = E - N + 2P
    ● E: Número total de arestas (edges)
    ● N: Número total de nós (nodes)
    ● P: Número total de ponts de saída (exit points)
    CC 3

    View full-size slide

  108. Complexidade Ciclomática
    CC = E - N + 2P
    ● E: Número total de arestas (edges)
    ● N: Número total de nós (nodes)
    ● P: Número total de pontos de saída (exit points)

    View full-size slide

  109. Complexidade Ciclomática Barrando

    View full-size slide

  110. Para se amostrar

    View full-size slide

  111. Acoplamento
    RFC (Response for a Class),
    CBO (Coupling between objects)
    WMC (Weighted Methods per Class)
    DIT (Depth of Inheritance Tree)
    NOC (Number of Children)

    View full-size slide

  112. Acoplamento Entre Objetos (CBO)

    View full-size slide

  113. Respostas para uma Classe (RFC)
    RFC = M + R
    M = Número de métodos no objeto
    R = Número de métodos remotos
    chamados pelos métodos no objeto

    View full-size slide

  114. Coesão
    LCC (Loose Class Cohesion)
    LCOM (Lack of Cohesion of Methods)
    TCC (Tight Class Cohesion)

    View full-size slide

  115. Falta de coesão de métodos
    LCOM (Lack of Cohesion of Methods) = Single Responsibility Principle

    View full-size slide

  116. Inveja do Java

    View full-size slide

  117. Bateria de Testes

    View full-size slide

  118. Coverage Sync
    open coverage/lcov-report/index.html

    View full-size slide

  119. Coverage Async

    View full-size slide

  120. Obrigado!
    https://produtoreativo.com.br/

    View full-size slide