Medir as métricas DORA
Recolha de dados: manual vs. automatizada
A recolha automatizada de dados é a melhor forma de evitar métricas imprecisas, que, por sua vez, conduzem a decisões empresariais erradas. No entanto, a automatização de todos os parâmetros envolvidos no cálculo de uma métrica pode não ser possível devido a restrições. Nesses casos, deve-se chegar a um acordo sobre uma abordagem manual que seja razoável e esteja em conformidade com as normas do setor.
Prazo de entrega:
Medido com base no tempo que uma funcionalidade demora a passar da fase de pedido da empresa para a produção. Isto pode ser medido através da utilização de várias ferramentas em cada etapa.
- Automatizar testes e implementações(pipelines de CI/CD).
- Reduzir o tamanho dos lotes(mudanças menores e mais frequentes).
- Melhorar os processos de revisão e aprovação de código.
- Monitorizar pontos de estrangulamento(por exemplo, QA demorados, aprovações manuais)
Método manual:
Quando as ferramentas ou plug-ins necessários para o cálculo automático do tempo de execução não estiverem disponíveis, pode ser adotada uma abordagem manual. É possível calcularmanualmente o tempo de execuçãono Azure DevOps (ADO) ou em sistemas semelhantes , utilizando extrações de dados brutos. Aqui está um guia passo a passo:
Extração de dados
- Fonte: Consulta de itens de trabalho ADO ou API.
Âmbito:
- Filtrar porfuncionalidades/histórias de utilizador marcadascomoconcluídas (ou seja, implementadas em produção).
Extrato:
- Data de criação(quando o item de trabalho foi solicitado).
- Data de encerramento/conclusão(quando marcado como «Concluído»).
Fórmula para o tempo de execução de uma funcionalidade/história de utilizador:
- Prazo de entrega ( por artigo) = Data de encerramento - Data de criação
Fórmula para a média ao nível do projeto
- Prazo médio de entrega = Soma (Prazo de entrega por artigo) ÷ Número total de artigos
* Nota: Nos casos em que as funcionalidades planeadas são criadas antecipadamente, a métrica do tempo de preparação não refletirá a realidade; nessas situações, o tempo de ciclo pode ser utilizado como métrica alternativa.
Frequência de implementação:
- Conte o número de implementações em produção durante um determinado período (por exemplo, por dia, semana ou mês).
Extração de dados:
- Utilize ferramentas de CI/CD (por exemplo, GitHub Actions) para registar o número de implementações.
Fórmula para a frequência de implementação:
- Número total de implementações/Número de meses
Fórmula para a média ao nível do projeto:
- Número de implementações do projeto / Número de meses
*Nota: De acordo com a definição do setor, as implementações de hotfixes não são incluídas na contagem de implementações.
Taxa de falhas na troca:
O que se considera uma «implementação falhada»?
- Revertidas (revertendo uma versão devido a problemas).
- Correções de emergência (correções urgentes após a implementação).
Método de rastreamento:
- Integrar com falhas de implementaçãodo pipeline de CI/CD (por exemplo, Jenkins, GitHub Actions) para sinalizar essas falhas.
- Utilizar ferramentas de gestãode incidentes (por exemplo, ADO, Jira, ServiceNow).
Fórmula para calcular a taxa de falhas na mudança:
- Número de alterações com falha ÷ Número total de alterações × 100.
Método manual:
Para calcular o número de alterações com falhas, pode-se utilizar o número de incidentes de suporte classificados como «Errode software». Ao dividir este valor pelo número total de alterações lançadas, obtém-se o CFR.
As organizações precisam de classificar os incidentes periodicamente para que a métrica seja precisa.
Tempo médio de reparação (MTTR):
O que se considera «tempo de recuperação»?
- Início:Quando a falha é detetada (alerta acionado).
- Fim:Quando o sistema estiver totalmente restaurado (por exemplo, reversão concluída, correção de emergência implementada).
Método de rastreamento:
- Ferramentas de gestão de incidentes(por exemplo, ADO, Jira).
- Sistemas de monitorização(por exemplo, CloudWatch, Prometheus) para registar os tempos de resolução.
Fórmula para calcular o MTTR:
- Soma dos tempos de recuperação ÷ Número de falhas
Método manual:
A soma dos tempos de restauração pode ser calculada com base nos incidentes de suporte classificados como«Erro de software». A diferença entre a «Data de criação» e a «Data de encerramento», expressa em dias, pode ser utilizada como numerador.
O número de incidentes classificados como«Erro desoftware»pode ser utilizado como denominador.
Ligar o ADO, o CI/CD e os sistemas de monitorização
A recolha periódica destas métricas e a sua otimização ajudam as organizações a alcançar eficiência na forma como lançam software.
Dispor de ferramentas e plugins eficazes e integrá-los ajuda a automatizar a maioria destas tarefas, a gerar métricas e a tomar as decisões adequadas.
O Azure DevOps (ADO) fornece os metadata necessários para capturar os dados brutos para o cálculo destas métricas. A equipa de DevOps necessita de uma avaliação cuidadosa, tendo em conta as necessidades futuras do negócio.
Ferramentas de visualização e painéis
O Azure DevOps (ADO) oferece funcionalidades de painel com estes metadata e widgets para capturar algumas dessas métricas. No entanto, garantir que metadata atualizados para cada item de trabalho é essencial para gerar métricas precisas.
Podem ser utilizadas ferramentas alternativas , como o Power BI e o Grafana, para melhorar a visualização e a elaboração de relatórios destinados às partes interessadas.
Desafios e considerações para as organizações
Recolha de dados e utilização de ferramentas
Integridade dos dados e limitações das ferramentas
Desafios:
- Fontes de dados inconsistentes:os pipelines de DevSecOps extraem dados de ferramentas díspares (sistemas de CI/CD, scanners, sistemas de acompanhamento de incidentes), o que leva a cronologias incompatíveis, falsos positivos ou lacunas.
- Viés de relato manual:as métricas compiladas manualmente (por exemplo, relatórios de incidentes) carecem frequentemente de padronização, o que distorce tendências comoo MTTR(Tempo Médio de Recuperação).
Solução:
- Garantir a rastreabilidade:utilize metadata imutáveis metadata por exemplo,IDs de pipeline do Azure DevOps, commits do Git) para extrair dados relacionados com alterações no código.
- Validar através da correlação entre ferramentas:Combinar dados do SonarQube (qualidade do código), do ADO para identificar anomalias e de normas do setor para validar dados métricos
Disponibilidade de ferramentas e plug-ins
Desafio:
- As organizações podem não ter acesso a ferramentas integradas de DevSecOps (por exemplo, scanners SAST/DAST, sistemas de acompanhamento de implementação) ou enfrentar dificuldades com os custos de licenciamento.
Solução:
- Aproveiteo Azure DevOps Marketplacepara obter plug-ins (por exemplo,OWASP ZAP,SonarQube).
- Recorra aalternativas de código aberto quando os orçamentos forem limitados.
Configurar o ADO para a captura Metadata
Desafio:
- Os dados brutos do ADO (compilações, lançamentos, itens de trabalho) requerem uma etiquetagem/ligação adequada para gerar métricas comoo tempo de execuçãooua frequência de implementação.
Solução:
- Impor campos obrigatóriosnos itens de trabalho e nas atualizações periódicas
- Utilizeas vistas do ADO Analyticsouos conectores do Power BIpara consultar metadata do pipeline.
Atualizações efetivas sobre alterações no estado dos itens de trabalho
Desafio:
- As atualizações manuais de estado (por exemplo, Concluído → Aprovado) atrasam métricas comoo Tempo de Ciclo.
Solução:
- Automatize transiçõesutilizandowebhooksADO ouAzure Functions(por exemplo, atualização automática quando os PRs são fundidos).
- Associar os estados aospontos de controlo do DevSecOps(por exemplo, o estado de revisão de segurança antes da implementação).
Dados insuficientes para gerar métricas
Desafio:
- Dados escassos (por exemplo, implementações pouco frequentes, baixo número de incidentes por projeto) distorcem as tendências.
Solução:
- Definir limites mínimos(por exemplo, «Monitorizar apenas se >5 incidentes da categoria de erros de software»).
Métricas que não são conclusivas para a tomada de decisões
Desafio:
- As métricas de vaidade (por exemplo, «MTTR de 120 dias») não levam à ação.
Solução:
- Concentre-se emindicadores orientados para os resultadose apoiados por dados suficientes
Resistência organizacional e uso indevido
Resistência organizacional
Desafios:
- Medo da exposição:as equipas podem resistir à adoção de métricas que revelem ineficiências (por exemplo,umaelevadataxa de falhas nas alteraçõesdevido a rejeições por motivos de segurança).
- Sobrecarga de ferramentas:A introdução de novas ferramentas de DevSecOps, metadata capturar e plug-ins (por exemplo, scanners SAST) pode suscitar resistência se for vista como perturbadora ou desnecessária.
- Incentivos desajustados:a liderança privilegia um indicador em detrimento de outro. O «tempo de execução», por si só, pode induzir em erro
Estratégias de mitigação:
- Métricas de estrutura como ferramentas de melhoria:
- Saliente como estes indicadores ajudam a organização a longo prazo e permitem comparar ou avaliar o desempenho
- Métricas do projeto-piloto:
- Comece por projetos não críticos para demonstrar o valor antes da implementação em toda a organização e concentre-se em métricas que ofereçam valor comercial.
Objetivos a longo prazo da organização vs. resultados derivados de métricas
Desafio:
- Desalinhamento:A otimização de métricas a curto prazo (por exemplo, melhorara frequência de implementação) pode entrar em conflito com os objetivos a longo prazo (por exemplo, redução da dívida técnica, maturidade em matéria de conformidade).
- Métricas de vaidade vs. criação de valor:as equipas podem dar prioridade a métricas que parecem boas em detrimento de resultados significativos.
Solução:
Relacionar métricas com temas estratégicos:
- Relacione os indicadores (por exemplo,o tempo de execução) aos objetivos empresariais (por exemplo, «Redução do tempo de lançamento no mercado para produtos essenciais em termos de conformidade»).
Desafio:
Armadilha das métricas na definição do roteiro: concentrar-se excessivamente numa única métrica (por exemplo,o MTTR) pode levar a ignorar problemas sistémicos (por exemplo, uma automação de testes inadequada).
Solução:
Carteiras métricas ponderadas:
- Equilibre os indicadores com os objetivos a longo prazo da organização (por exemplo, frequência de implementação), a estabilidade (taxa de falhas nas alterações) e o tempo de execução
Equilibrar os indicadores com a cultura da equipa
Os riscos culturais do excesso de métricas
Desafios:
- Medo da avaliação:as equipas podem interpretar as métricas como uma forma de vigilância, o que pode causar stress e esgotamento.
- Manipular o sistema:a pressão para cumprir metas (por exemplo,a frequência de implementação) pode incentivar atalhos (por exemplo, ignorar verificações de segurança).
- Sufocamento da inovação:uma ênfase excessiva nas métricas pode desencorajar a experimentação (por exemplo, o receio de que implementações mal sucedidas afetema taxa de falhas nas alterações).
Solução:
- A segurança psicológica em primeiro lugar:
- Saliente que os indicadores sãoferramentas de diagnóstico, não avaliações de desempenho.
- Valorize a «aprendizagem com os erros» (por exemplo, análises pós-incidente que melhoramo MTTR).
- Concepção de métricas liderada pela equipa:
- Envolva os engenheiros na seleção das métricas (por exemplo, deixe-os escolher entreo tempo de execuçãoouo tempo de ciclocomo prioridade em detrimento da taxa de falhas nas alterações).
Métricas vs. Capacidade da equipa e necessidades de formação
Lacunas nas capacidades que impedem a medição
Desafio:
As equipas não possuem as competências necessárias para melhorar os indicadores-chave (por exemplo,tempos de execuçãolentos devido à falta de familiaridade com as ferramentas de segurança)
Soluções:
- Segmentação métrica baseada em competências:
- Exemplo: Acompanhar separadamenteo tempo de respostadas equipas que adotam novas ferramentas SAST
- Formação «Just-in-Time»:
- Automatizar os gatilhos de formação (por exemplo, sea taxa de falhas no pipeline devido a questões de segurançafor superior a 15%, atribuir formação modular).
- Indicadores de mentoria:
- Medir a percentagem de sessões de programação em parespara promover a partilha de conhecimentos.
Métricas que ignoram o crescimento da equipa
Desafio:
- A ênfase excessiva nas métricas de resultados (por exemplo,a frequência de implementação) subestima a importância do desenvolvimento de capacidades.
Soluções:
- Equilibrar os indicadores de resultados e de crescimento:
- Relacionara frequência de implementaçãocom a percentagem da equipa que contribui para o código do pipeline.
- Indicadores de percurso profissional:
- Exemplo: Acompanhar a percentagem de engenheiros que lideram revisões de segurançapara incentivar o sentido de responsabilidade.
Referências
- Accelerate, de Forsgren, Humble e Kim
- Documentação do Azure DevOps
- Relatórios de Investigação e Avaliação de DevOps (DORA)