Cap 4 – Métricas do Processo e Projeto de Software Ricardo L Schneider FES
Medidas, métricas e indicadores “… provêem uma indicação quantitativa de uma extensão, quantia, dimensão, capacidade, ou tamanho de um produto ou processo” Ex: “número de erros encontrados em uma revisão de código”
Medidas, métricas e indicadores “… são medidas quantitativas do grau em que um sistema, componente ou processo possui um determinado atributo” Ex: a média do número de erros encontrados por revisão
Medidas, métricas e indicadores “… são métricas ou combinação de métricas que provêem uma percepção interna do processo, projeto ou produto de software. Permite que o técnico ou gerente tome decisões apropriadas” Ex: Seleção do método de teste, com base no resultado da experimentação de dois métodos diferentes
Métricas de processo Produto Caracteristicas Condições do cliente de negócios Pessoas Tecnologia Ambiente de desenvolvimento
Métricas de Projeto Métricas de processo são usadas com objetivos estratégicos Métricas de projeto são usadas com objetivos objetivos táticos: Estimativas de tempo e esforço com base em experiências anteriores Aumento da qualidade e redução de defeitos Redução dos custos
Medidas de software Medidas diretas: Medidas indiretas LOC (Lines Of Code) Velocidade de execução Tamanho de memória utilizada, … Medidas indiretas Funcionalidade Qualidade Complexidade Confiabilidade, …
Métricas orientadas ao tamanho Número de linhas de código (LOC/KLOC) Erros por KLOC Defeitos por KLOC $ por KLOC Páginas de documentação por KLOC Erros por HM (homem.mês) KLOC / HM
Métricas orientadas a funções Pontos de Função [Albrecht 1979] “relação empírica entre medidas diretas de informações do domínio do software e a complexidade do desenvolvimento do software”
Cálculo dos “Pontos de Função” Pesos Medidas Contagem Simples Médio Complexo Total Entradas 20 16 15 3 4 6 214 Saídas 12 25 18 5 7 299 Consultas 25 15 12 207 Arquivos 5 12 8 10 15 275 Interfaces 3 2 0 29 ContTotal 1024
Ajuste dos FPs FP = ContTotal x [0,65 + 0,01 x S(Fi)] Fi (i = 1 a 14) >> (0 .. 5) Fatores de complexidade FP >> 65% a 135% de ContTotal
Fatores de ajuste: Sistema precisa backup? Comunicação de dados? Processamento distribuido? Performance é crítica? Compartilha SO c/outros sistemas? Precisa entrada on-line? Usa múltiplas telas para cada entrada de dados? Os arquivos mestres são atualizados on-line? As entradas, saidas, arquivos ou consultas são complexas? Processamento interno complexo? Código reutilizável? Conversão/instalação incluidas no projeto? Instalações múltiplas? Facilidade de mudanças?
Métricas relacionadas a FP Erros por FP Defeitos por FP $ por FP Páginas de documentação por FP FP por homem x mês ….
Extensões dos FPs Pontos de Características (Feature Points) Aplicados em sistemas e engenharia Contabiliza “algorítmos” Pontos de Função 3D (Boeing) Sistemas de tempo real e engenharia Dados, Funções e Controle
Reconciliação das métricas: Linguagem LOC/FP (média) - Assembler 320 - C 128 - COBOL 106 - FORTRAN 106 - Pascal 90 - C++ 64 - ADA95 53 - Visual Basic 32 - Smalltalk 22 - Powerbuilder 16
Métricas de qualidade de software Qualidade em “tempo real”! Medidas técnicas para avaliar a qualidade de forma objetiva Força propulsora é medir erros e defeitos: Erros por FP Erros descobertos por hora de revisão Erros descobertos por hora de teste
Fatores que afetam a qualidade [McCall & Cavano – 1978] Operação do produto (usando-o) Revisão do produto (modificando-o) Transição do produto (modificando-o para trabalhar em outro ambiente – “portando-o”)
Medindo a qualidade Correção – defeitos por KLOC – defeito == verificação de falta de conformidade com a especificação Manutenibilidade – facilidade com que um programa pode ser corrigido, se um erro for encontrado – medidas indiretas: MTTC (mean time to change) ou Estrago – custo para corrigir defeito depois do software entregue
Integridade – habilidade do sistema em resistir a ataques intencionais ou acidentais – ameaça >> probabilidade de ocorrência de um ataque num determinado tempo; – segurança >> probabilidade que um ataque seja repelido integridade = S[(1–ameaça)x(1–segurança)]
Usabilidade == amigabilidade Habilidade física ou intelectual necessária para entender o sistema Tempo necessário para se tornar eficiente no uso do sistema O aumento líquido de produtividade obtido por quem domina o sistema Avaliação subjetiva das atitudes dos usuários
DRE (defect removal efficiency) DRE = E / (E + D) E > erros encontrados antes da entrega D > erros encontrados depois da entrega do produto DREi = Ei / (Ei + Di+1)
Métricas integradas com o processo de software Projeto Coleta de dados Medidas Produto Métricas Computação das métricas Indicadores Avaliação das métricas
Controle estatístico do processo Erros / hora de revisão 15 12 9 6 3 +1dp -1dp 1 3 5 7 9 11 13 15 17 19 21 23 Projetos
Programa de métricas de software Identificar os objetivos do negócio Identificar o que é necessário saber Identificar os sub-objetivos Identificar as entidades e atributos relacionados com os sub-objetivos Formalizar os objetivos de medições
Identificar questões quantificáveis e indicadores relacionados para atender aos objetivos Identificar os elementos de dados para atender os indicadores Definir as medidas a serem usadas Identificar as ações para implementar as medidas Preparar o plano para implementar as medidas