Fundamentos de Métricas de Qualidade e Produtividade de Software

Senac, Joinville - Santa Catarina

Alunos: Eduardo Hansen, Gabriel Laufer, João Philippe, José Reche, Kauê Moura, Matheus Soster, Nicolas, Richard, Vinicius, Wesley, William Cardoso, Willian.

22 de novembro de 2024

1 - Fundamentos de Métricas de Qualidade e Produtividade de Software

Métricas de qualidade e produtividade de software são instrumentos indispensáveis para a gestão eficaz de projetos de desenvolvimento de software. Elas oferecem dados quantitativos e objetivos que auxiliam na tomada de decisões, permitindo a identificação de problemas e oportunidades de melhoria. Essas métricas ajudam a garantir que o produto atenda às expectativas de qualidade, maximize a eficiência das equipes e reduza custos ao longo do ciclo de vida do software.

1.1.1 - Objetivo das Métricas

O objetivo das métricas de software é garantir a qualidade e a eficiência no desenvolvimento e manutenção do produto. As principais metas incluem:

1.1.2 - Categorias de Métricas

As métricas podem ser divididas em três categorias principais, cada uma com diferentes focos de análise:

1.2 - Processo de Medição e Análise

O Processo de Medição e Análise é um método sistemático utilizado para garantir que os dados coletados sejam úteis e relevantes, apoiando decisões estratégicas e operacionais no desenvolvimento de software. Este processo é essencial para que as métricas de qualidade e produtividade gerem valor para a organização.

1.2.1 - Etapas do Processo de Medição e Análise

O processo de medição e análise pode ser dividido em diversas etapas, conforme descrito abaixo:

  1. Planejar a Medição:
    • Definição de Objetivos: Identificar o que será medido e como os resultados serão usados.
      Exemplo: "Avaliar a eficiência do processo de desenvolvimento, reduzindo o tempo médio de entrega de histórias."
    • Escolha das Métricas: Selecionar as métricas que melhor representam os objetivos.
      Exemplo: Velocidade de entrega, taxa de defeitos corrigidos por sprint.
  2. Definir a Coleta de Dados:
    • Identificação de Fontes de Dados: Determinar onde e como os dados serão coletados.
      Exemplo: Logs de sistema, repositórios de código, ferramentas de gestão de projetos (como Jira).
    • Estabelecimento de Procedimentos: Definir o processo para capturar os dados com consistência e confiabilidade.
  3. Executar a Coleta de Dados:
    • Implementação da Coleta: Utilizar ferramentas automatizadas ou manuais para reunir dados conforme planejado.
      Exemplo: Scripts para analisar commits ou relatórios gerados por sistemas de integração contínua.
  4. Analisar os Dados:
    • Interpretação das Métricas: Transformar dados brutos em informações úteis.
      Exemplo: Comparar a velocidade de entrega atual com sprints anteriores para identificar tendências.
    • Identificação de Gargalos ou Riscos: Usar os dados para destacar problemas no processo de desenvolvimento.
  5. Relatar os Resultados:
    • Comunicação dos Achados: Criar relatórios e apresentações com os dados analisados.
      Exemplo: Um gráfico que ilustra a redução no tempo médio de entrega ao longo de seis meses.
    • Apoio à Tomada de Decisão: Fornecer insights para ajustar processos ou priorizar ações.
  6. Revisar e Ajustar o Processo:
    • Avaliação Contínua: Validar se as métricas utilizadas ainda são relevantes e, se necessário, ajustar o plano de medição.
    • Lições Aprendidas: Incorporar melhorias no processo de medição e análise para ciclos futuros.

1.2.2 - Benefícios do Processo de Medição e Análise

O processo de medição e análise oferece uma série de benefícios significativos para a gestão e o sucesso de projetos. Entre os principais benefícios, podemos destacar:

Em resumo, o processo de medição e análise não só aprimora a gestão de projetos, mas também contribui para a criação de produtos mais robustos e de maior qualidade.

1.3 - Indicadores-Chave de Desempenho (KPIs)

Os Indicadores-Chave de Desempenho (KPIs) são métricas essenciais para monitorar o progresso de projetos e garantir que os objetivos organizacionais sejam atingidos. Eles servem como um termômetro para avaliar o sucesso das iniciativas e tomar decisões baseadas em dados concretos.

Benefícios dos KPIs:

Em resumo, os KPIs são ferramentas cruciais para a gestão de projetos, permitindo acompanhamento contínuo e proporcionando insights valiosos para ajustes e melhorias ao longo do processo.

1.3.1 - Exemplos Práticos de KPIs

Os KPIs são ferramentas essenciais para avaliar o desempenho de um projeto, e a seguir apresentamos alguns exemplos práticos de KPIs que podem ser aplicados para medir a eficiência e a qualidade de diferentes aspectos do desenvolvimento de software:

1. Taxa de Defeitos

2. Tempo Médio para Resolução de Bugs

3. Velocidade da Equipe (Team Velocity)

4. Satisfação do Cliente (Customer Satisfaction)

Esses exemplos ilustram como KPIs podem ser usados para medir o desempenho em várias áreas críticas do processo de desenvolvimento de software, proporcionando insights valiosos para a melhoria contínua.

1.3.2 - Implementação de KPIs

A implementação eficaz de KPIs é crucial para garantir que o desempenho do projeto esteja alinhado aos objetivos estratégicos. A seguir, detalhamos algumas etapas chave para a implementação bem-sucedida de KPIs:

1. Alinhar KPIs aos Objetivos de Negócio

Cada KPI deve refletir um aspecto crítico do sucesso do projeto. Certifique-se de que os indicadores escolhidos estejam diretamente relacionados aos objetivos de negócio da organização e aos resultados esperados. Por exemplo:

2. Definir Limiares de Sucesso

Estabeleça metas claras e mensuráveis para cada KPI, garantindo que as expectativas sejam bem definidas. Isso permitirá que a equipe saiba quando o objetivo foi alcançado e, caso contrário, onde melhorar. Exemplos incluem:

3. Monitorar e Revisar Periodicamente

Acompanhe os KPIs de forma contínua e revise-os periodicamente para garantir que ainda reflitam as prioridades e o contexto do projeto. Ajustes podem ser necessários caso haja mudanças nos objetivos de negócio, recursos ou abordagens do projeto. Algumas práticas recomendadas incluem:

Seguindo essas etapas, a implementação dos KPIs será mais eficaz, fornecendo dados valiosos que ajudam na tomada de decisões informadas e no ajuste contínuo dos processos do projeto.

1.4 - Automação de Métricas em CI/CD

Com a popularização das práticas DevOps, como Integração Contínua (CI) e Entrega Contínua (CD), a automação de métricas se tornou um elemento essencial para o monitoramento e a melhoria contínua de projetos de software. Essas práticas permitem que métricas sejam coletadas em tempo real, proporcionando uma visão clara e contínua do progresso e estado do desenvolvimento.

A automação de métricas em pipelines de CI/CD oferece uma vantagem significativa ao permitir que os times detectem problemas rapidamente, melhorem a qualidade do código e otimizem processos, tudo isso sem depender de intervenções manuais. Abaixo, exploramos algumas métricas essenciais que podem ser automatizadas dentro do fluxo de CI/CD.

1.4.1 - Exemplos de Métricas Automáticas

A automação de métricas é vital para garantir que as práticas de desenvolvimento sejam eficientes e eficazes. Abaixo estão alguns exemplos de métricas comumente automatizadas dentro de pipelines de CI/CD:

1. Cobertura de Testes Automatizados

Definição: Percentual de código coberto por testes automatizados, indicando a eficácia dos testes em garantir a estabilidade do código.

Ferramentas: Jest, Mocha, SonarQube.

Objetivo: Garantir que partes críticas do código estejam protegidas contra regressões, aumentando a confiança nas entregas de software.

2. Tempo de Build

Definição: Duração média necessária para compilar o código e gerar artefatos de software, como executáveis ou pacotes.

Ferramentas: Jenkins, GitHub Actions, GitLab CI/CD.

Impacto: Tempos longos de build podem indicar problemas de configuração ou código excessivamente complexo. A otimização dos tempos de build é essencial para uma entrega ágil.

3. Taxa de Sucesso de Builds

Definição: Percentual de builds que são concluídos com sucesso, sem erros, em relação ao total de builds executados.

Objetivo: Monitorar a estabilidade do código e a eficácia das práticas de versionamento. A alta taxa de sucesso garante que o código implementado seja estável e pronto para integração.

4. Tempo Médio para Deploy (Lead Time for Changes)

Definição: Tempo médio entre o commit inicial de uma mudança e sua implantação em produção.

Impacto: Essa métrica mede a eficiência do pipeline de CI/CD em levar alterações ao mercado. Quanto menor o tempo, mais ágil e responsivo é o processo de entrega.

Essas métricas são fundamentais para garantir que a automação no ciclo de vida do software seja eficaz e eficiente. A coleta e análise desses dados ajudam a melhorar o processo de desenvolvimento, reduzindo riscos e aumentando a produtividade da equipe.

1.4.2 - Benefícios da Automação de Métricas em CI/CD

A automação de métricas em pipelines de CI/CD oferece uma série de vantagens que impulsionam a eficiência e a qualidade do processo de desenvolvimento. Abaixo estão alguns dos principais benefícios:

1. Monitoramento em Tempo Real

Definição: As métricas são automaticamente atualizadas após cada commit, build ou deploy, permitindo que os desenvolvedores acompanhem o progresso em tempo real.

Benefícios: Este monitoramento contínuo permite identificar problemas precocemente, antes que eles impactem os usuários finais, garantindo uma resposta mais rápida a falhas e falhas críticas.

2. Consistência e Precisão

Definição: A automação elimina o risco de erros humanos associados à coleta manual de dados.

Benefícios: Garante que as métricas sejam coletadas de forma consistente e precisa, permitindo comparações mais confiáveis entre diferentes projetos e equipes. A uniformidade nos métodos de medição é crucial para a tomada de decisões informadas.

3. Eficiência Operacional

Definição: A automação reduz o esforço necessário para coletar e analisar métricas manualmente.

Benefícios: Isso libera tempo para a equipe focar em atividades mais estratégicas, como a melhoria contínua do produto e a implementação de novas funcionalidades, aumentando a produtividade geral.

1.4.3 - Desafios e Boas Práticas

A automação de métricas, embora seja extremamente benéfica, apresenta alguns desafios que devem ser gerenciados adequadamente. Além disso, seguir boas práticas pode maximizar os benefícios dessa automação.

1. Desafios

2. Boas Práticas

1.5 - Estimativa por Pontos de Função

A Estimativa por Pontos de Função (Function Point Analysis - FPA) é uma técnica amplamente utilizada para medir o tamanho funcional de um software, com o objetivo de estimar esforço, custo e prazos em projetos de desenvolvimento e manutenção. Ela fornece uma abordagem objetiva e independente de tecnologia, sendo aplicável a sistemas web, desktop, mobile e integrados.

1.5.1 - Conceito

A FPA mede o software com base nas funcionalidades entregues ao usuário, focando no "o que o sistema faz" em vez de "como" ele faz isso. Essa técnica é independente de plataforma e tecnologia, tornando-a aplicável a qualquer tipo de sistema.

Exemplo: Em um sistema de gerenciamento de pedidos, a entrada de dados de clientes é medida como uma função, independentemente da tecnologia usada para implementá-la, seja Java, Python ou outro ambiente.

1.5.2 - Componentes Funcionais

Os componentes funcionais são as unidades básicas para o cálculo dos pontos de função. Eles representam as interações entre o sistema e os usuários ou outros sistemas. Os componentes funcionais são classificados conforme sua complexidade e atribuem um peso numérico correspondente. Os principais componentes são:

1.5.3 - Processos de Cálculo

O cálculo dos Pontos de Função é feito em várias etapas, desde a identificação das funcionalidades até o cálculo do valor ajustado. As etapas principais são:

  1. Identificação: Liste todas as funcionalidades (EE, SE, CE, ALI, AIE) com base nos requisitos do sistema.
  2. Classificação: Avalie a complexidade de cada componente funcional (baixa, média, alta).
  3. Pontos Brutos: Multiplique cada componente pelo peso correspondente à sua complexidade.
  4. Fator de Ajuste: Ajuste o cálculo considerando características específicas do sistema, como segurança ou performance.
  5. Resultado: Obtenha os Pontos de Função Ajustados, que representam o tamanho funcional total do sistema.

1.5.4 - Benefícios

A Estimativa por Pontos de Função oferece diversos benefícios, tornando-se uma ferramenta essencial para o planejamento e controle de projetos de software. Os principais benefícios incluem:

1.5.5 - Limitações

Apesar de seus benefícios, a Estimativa por Pontos de Função apresenta algumas limitações que devem ser consideradas:

1.5.6 - Aplicações

A Estimativa por Pontos de Função tem várias aplicações práticas no gerenciamento de projetos de software:

1.5.7 - Conclusão

A Estimativa por Pontos de Função é uma abordagem confiável e eficaz para medir o tamanho funcional de sistemas. Sua aplicação ajuda a reduzir incertezas no desenvolvimento de software, fornecendo uma base sólida para planejamento, monitoramento e controle de projetos, além de facilitar a tomada de decisões gerenciais e técnicas.

1.6 - Estimativa por Pontos de Caso de Uso

A Estimativa por Pontos de Caso de Uso é uma abordagem estruturada e útil para medir o esforço necessário no desenvolvimento de software, mas exige cuidado na aplicação e depende da qualidade dos requisitos para produzir resultados precisos.

1.6.1 - O que são Pontos de Caso de Uso?

Os Pontos de Caso de Uso (PCU) são uma técnica usada para estimar o esforço de desenvolvimento de software com base na análise dos casos de uso de um sistema. Cada caso de uso representa uma funcionalidade ou interação importante entre o sistema e os atores envolvidos, sendo avaliado em termos de complexidade e número de transações. Este método fornece uma métrica objetiva para mensurar o tamanho funcional de um sistema, permitindo uma previsão mais precisa do esforço necessário para o desenvolvimento.

1.6.2 - Como calcular Pontos de Caso de Uso?

O cálculo de Pontos de Caso de Uso segue uma abordagem estruturada, envolvendo várias etapas essenciais:

  1. Identificação dos Atores:

    Classifique os atores do sistema (usuários ou sistemas externos) em três categorias:

    • Simples: Sistemas externos interagindo via APIs ou protocolos simples.
    • Médio: Usuários que interagem por meio de interfaces usuais, como formulários.
    • Complexo: Usuários ou sistemas com interações avançadas ou sofisticadas.
  2. Classificação dos Casos de Uso:

    Avalie os casos de uso de acordo com o número de transações:

    • Simples: Menos de 4 transações.
    • Médio: De 4 a 7 transações.
    • Complexo: Mais de 7 transações.
  3. Cálculo dos Pontos Brutos de Caso de Uso (PBCU):

    Multiplique o número de atores e casos de uso pelo peso correspondente a cada nível de complexidade e some os resultados.

  4. Aplicação dos Fatores de Ajuste:

    Considere fatores técnicos (como desempenho, segurança e reusabilidade) e fatores ambientais (como experiência da equipe e ferramentas disponíveis) para ajustar os PBCU.

  5. Conversão em Esforço:

    Os PCU ajustados são traduzidos em esforço (horas de trabalho ou custos), com base em benchmarks de produtividade.

1.6.3 - Etapas do processo de estimativa

O processo de estimativa por Pontos de Caso de Uso é composto por diversas etapas essenciais para garantir a precisão na previsão do esforço de desenvolvimento. Essas etapas são:

  1. Coleta de requisitos: Identificar todos os casos de uso e atores do sistema.
  2. Classificação: Categorizar os atores e os casos de uso de acordo com sua complexidade.
  3. Cálculo dos Pontos Brutos: Determinar o total de pontos, considerando os pesos atribuídos a cada ator e caso de uso.
  4. Ajuste: Incorporar fatores técnicos e ambientais que possam impactar o projeto, como desempenho e segurança.
  5. Conversão em esforço estimado: Utilizar fatores de produtividade ou históricos de projetos anteriores para estimar o esforço total necessário.

1.6.4 - Vantagens da Estimativa por Pontos de Caso de Uso

Este método apresenta várias vantagens, tornando-o uma abordagem valiosa para estimativas de esforço em projetos de desenvolvimento de software:

1.6.5 - Limitações e desafios

Apesar das vantagens, a Estimativa por Pontos de Caso de Uso apresenta algumas limitações e desafios que devem ser considerados ao utilizá-la:

1.7 - CMMI (Capability Maturity Model Integration)

O Capability Maturity Model Integration (CMMI) é um modelo de referência amplamente utilizado para a melhoria de processos organizacionais. Criado pelo Software Engineering Institute (SEI), seu objetivo é promover práticas que aumentem a eficiência, reduzam riscos e garantam a entrega de produtos e serviços de alta qualidade. O CMMI oferece um guia para identificar lacunas nos processos e propor ações corretivas, visando a integração de diversas disciplinas, como engenharia de software e gerenciamento de projetos.

1.7.1 - O que é CMMI?

O CMMI é um modelo de maturidade que proporciona uma estrutura para aprimorar os processos organizacionais. Com foco em eficiência, controle de qualidade e mitigação de riscos, ele orienta as organizações a melhorar seus processos de maneira contínua, integrando práticas de diferentes áreas como desenvolvimento de software e gerenciamento de projetos.

1.7.2 - Níveis de maturidade

O CMMI classifica a maturidade organizacional em cinco níveis sequenciais, cada um com características próprias que indicam a evolução dos processos da organização:

Esses níveis fornecem um caminho claro para o avanço da maturidade organizacional, permitindo o aprimoramento gradual dos processos e melhores resultados.

1.7.3 - Áreas de processo

O CMMI abrange diversas áreas de processo, que são agrupadas em categorias principais, cada uma com práticas específicas para melhorar os processos organizacionais:

Cada área de processo descreve práticas que ajudam as organizações a atingir seus objetivos e a aprimorar seus processos continuamente.

1.7.4 - Como funciona?

O CMMI pode ser implementado de duas maneiras principais:

Ambas as abordagens exigem a análise dos processos existentes, a identificação de lacunas e a execução de melhorias alinhadas com os objetivos organizacionais.

1.7.5 - Benefícios do CMMI

A implementação do CMMI traz diversos benefícios para as organizações, incluindo:

Esses benefícios tornam o CMMI uma ferramenta estratégica para organizações que buscam excelência operacional e desejam ganhar vantagem competitiva no mercado.

1.8 - MPS-BR

O MPS-BR (Modelo de Processos de Software Brasileiro) é uma iniciativa brasileira criada pelo Ministério da Ciência, Tecnologia e Inovações (MCTI) com o objetivo de promover a melhoria de processos em empresas de software no Brasil. Ele se apresenta como uma alternativa ao modelo internacional CMMI (Capability Maturity Model Integration), oferecendo uma abordagem mais acessível e adaptada à realidade das empresas brasileiras de diferentes portes.

O MPS-BR define sete níveis de maturidade, que são:

A escala de maturidade começa no nível G e progride até o nível A, permitindo que as organizações avancem em sua jornada de melhoria de processos.

O MPS-BR é coordenado pela Associação para Promoção da Excelência do Software Brasileiro (SOFTEX), com o apoio do Ministério da Ciência, Tecnologia e Inovações e Comunicações (MCTIC). Seu principal objetivo é promover a cultura da qualidade, especialmente nas micro, pequenas e médias empresas brasileiras. Além disso, ele busca melhorar a capacidade de desenvolvimento de software, serviços e práticas de gestão de recursos humanos (RH) na indústria de Tecnologia da Informação e Comunicação (TIC).

O MPS-BR é dividido em três modelos específicos:

Até hoje, mais de 900 empresas brasileiras foram avaliadas nesses modelos, e mais de 800 delas estão avaliadas no MR-MPS-SW, como pode ser verificado no site do MPS.

1.8.1 - Benefícios

A obtenção da certificação MPS-BR traz diversos benefícios para as empresas, incluindo:

Em resumo, a certificação MPS-BR proporciona um diferencial significativo para as empresas, fortalecendo sua posição no mercado e aumentando a segurança dos clientes ao contratar seus serviços.

Um exemplo de empresa que possui a certificação MPS-BR é a Fácil Sistemas, uma referência dentro de seu segmento e também em outros setores.