Eng.Software-Métricas

4.165 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.165
No SlideShare
0
A partir de incorporações
0
Número de incorporações
35
Ações
Compartilhamentos
0
Downloads
272
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Eng.Software-Métricas

  1. 1. Fundamentos de Engenharia de Software Métricas
  2. 2. Para que Medir? <ul><ul><li>Avaliar </li></ul></ul><ul><ul><ul><li>produtividade do processo </li></ul></ul></ul><ul><ul><ul><li>qualidade do produto </li></ul></ul></ul><ul><ul><li>Gerenciar o processo </li></ul></ul><ul><ul><ul><li>Planejamento (estimar custos e prazos) </li></ul></ul></ul><ul><ul><ul><li>Controle de qualidade e produtividade </li></ul></ul></ul><ul><ul><ul><li>Eficácia Gerencial (nível 4 CMM) </li></ul></ul></ul><ul><ul><li>Melhorar (processo e produto) </li></ul></ul>
  3. 3. Medidas, métricas e indicadores <ul><li>Métrica: </li></ul><ul><ul><li>grau com que um sistema, componente, ou processo possui um determinado atributo [IEEE 93] </li></ul></ul><ul><li>Medida: </li></ul><ul><ul><li>indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho de alguns atributos de um produto ou processo </li></ul></ul><ul><li>Indicador: </li></ul><ul><ul><li>combinação de métricas </li></ul></ul>
  4. 4. Domínios das Métricas <ul><li>Produto (software) </li></ul><ul><li>Processo (produção de software) </li></ul><ul><li>Projeto (uma instância de processo e produto) </li></ul>
  5. 5. Métricas de Processo <ul><li>Qualidade e Produtividade dependem de: </li></ul><ul><li>Complexidade do produto </li></ul><ul><li>Capacidade e Motivação </li></ul><ul><li>Tecnologia </li></ul><ul><li>Condições do negócio (regras, prazos) </li></ul><ul><li>Características do cliente (comunicação, nível técnico) </li></ul>
  6. 6. Métricas de Processo <ul><li>Exemplos de medidas </li></ul><ul><ul><li>Erros descobertos antes da entrega </li></ul></ul><ul><ul><li>Defeitos relatados por usuários </li></ul></ul><ul><ul><li>Produtos entregues </li></ul></ul><ul><ul><li>Recursos humanos consumidos </li></ul></ul><ul><ul><li>Tempo consumido </li></ul></ul><ul><ul><li>Conformidade com os prazos </li></ul></ul>
  7. 7. Métricas de Processo (Grady) <ul><li>Métricas privadas (individuais): </li></ul><ul><ul><li>taxa de defeitos individuais, por módulos, erros encontrados durante o desenvolvimento, </li></ul></ul><ul><li>Métricas públicas (consolidação das métricas privadas): </li></ul><ul><ul><li>taxa de defeitos por projeto, esforço, tempo consumido </li></ul></ul>
  8. 8. Etiqueta das Métricas <ul><li>Recomendações: </li></ul><ul><ul><li>Usar bom senso para interpretar os dados </li></ul></ul><ul><ul><li>Prover feedback e metas claras para a equipe </li></ul></ul><ul><ul><li>Nunca utilizar métricas para avaliar indivíduos, muito menos intimidá-los </li></ul></ul><ul><ul><li>As métricas devem ser avaliadas em conjunto </li></ul></ul><ul><ul><li>Métricas são meramente um indicador de processo e não devem ser vistas de forma negativa </li></ul></ul>
  9. 9. Métricas de Projeto <ul><li>Usados pelo gerente de projeto e equipe de software </li></ul><ul><li>Primeira aplicação: estimativas de esforço e tempo (baseado em projetos passados) </li></ul><ul><li>Avaliação do estimado x realizado </li></ul><ul><li>Métricas de produção </li></ul><ul><li>Evitar atrasos através da identificação de problemas potenciais e riscos </li></ul><ul><li>Melhorar qualidade, reduzindo defeitos, retrabalho e custo do projeto </li></ul>
  10. 10. Medição de Software <ul><li>Medidas Diretas: </li></ul><ul><ul><li>Custo e esforço </li></ul></ul><ul><ul><li>Linhas de código </li></ul></ul><ul><ul><li>Velocidade de execução </li></ul></ul><ul><ul><li>Tamanho da memória </li></ul></ul><ul><ul><li>Defeitos reportados (num dado período) </li></ul></ul>
  11. 11. Medição de Software <ul><li>Medidas Indiretas </li></ul><ul><ul><li>Funcionalidade </li></ul></ul><ul><ul><li>Qualidade </li></ul></ul><ul><ul><li>Complexidade </li></ul></ul><ul><ul><li>Eficiência </li></ul></ul><ul><ul><li>Confiabilidade </li></ul></ul><ul><ul><li>Manutenibilidade </li></ul></ul>
  12. 12. Medição de Software <ul><li>Normalização das métricas (métricas de porte) </li></ul><ul><ul><li>Linha de código (LOC, KLOC) </li></ul></ul><ul><ul><ul><li>(Métrica orientada a tamanho) </li></ul></ul></ul><ul><ul><li>Ponto de função </li></ul></ul><ul><ul><ul><li>(Métrica orientada a funcionalidade) </li></ul></ul></ul><ul><ul><li>Ponto por objeto </li></ul></ul><ul><ul><ul><li>(vinculado ao COCOMO) </li></ul></ul></ul>
  13. 13. Medição de Software <ul><li>Exemplo de métricas normalizadas </li></ul><ul><li>Erros por KLOC, defeitos por KLOC, $ por KLOC, Pag. Doc. por KLOC </li></ul><ul><li>Erros por pessoa-mês, KLOC por pessoa-mês, $ por pag. doc. </li></ul>6 64 256 1050 314 43 20.200 gama 5 86 321 1224 440 62 27.200 beta 3 29 134 365 168 24 12.100 alfa pessoas defeitos erros pg. doc $ Esforço LOC projeto
  14. 14. Medição de Software <ul><li>Exemplo de métricas normalizadas </li></ul><ul><li>Erros por KLOC, defeitos por KLOC, $ por KLOC, Pag. Doc. por KLOC </li></ul><ul><li>Erros por pessoa-mês, KLOC por pessoa-mês, $ por pag. doc. </li></ul>6 64 256 1050 314 43 20.200 gama 5 86 321 1224 440 62 27.200 beta 2 29 134 365 168 24 12.100 alfa pessoas defeitos erros pg. doc $ Esforço LOC projeto
  15. 15. Medição de Software 15,54 16,17 13,88 $/LOC 3,2 3,2 2,4 Def./ LOC 12,67 11,80 11,07 Erros/LOC 6 64 256 1050 314 43 20.200 gama 5 86 321 1224 440 62 27.200 beta 2 29 134 365 168 24 12.100 alfa pessoas defeitos erros pg. doc $ Esforço LOC projeto
  16. 16. Medição de Software <ul><li>Problemas: </li></ul><ul><ul><li>Dependente a linguagem de programação empregada </li></ul></ul><ul><ul><li>Penalizam códigos bem escritos </li></ul></ul><ul><ul><li>Não adaptáveis a linguagens visuais </li></ul></ul><ul><ul><li>Dificuldade para estimar projetos </li></ul></ul>
  17. 17. Medição de Software <ul><li>Métricas orientadas a funcionalidade </li></ul><ul><ul><li>Mede a funcionalidade do sistema (valor) </li></ul></ul><ul><ul><li>Ponto de função (Albrecht) : </li></ul></ul><ul><ul><ul><li>relação empírica entre tipos de domínio da informação do software e o seu nível de complexidade estimado </li></ul></ul></ul>
  18. 18. Medição de Software <ul><li>Tipos do domínio de informação </li></ul><ul><ul><li>Entradas de usuário </li></ul></ul><ul><ul><li>Saídas de usuário </li></ul></ul><ul><ul><li>Consultas de usuário </li></ul></ul><ul><ul><li>Arquivos Internos </li></ul></ul><ul><ul><li>Arquivos de Interface Externa </li></ul></ul>
  19. 19. Medição de Software Total = UFP = número de pontos de função não ajustados
  20. 20. Contagem dos arquivos internos <ul><li>Arquivos internos: grupo lógico de dados sob o ponto de vista do usuário. </li></ul><ul><li>Inclui todos os arquivos lógicos que são gerados, usados ou mantidos pelo sistema. </li></ul><ul><li>Exemplos: </li></ul><ul><li>arquivos </li></ul><ul><li>tabelas do banco de dados </li></ul>
  21. 21. Contagem dos arquivos internos <ul><li>Complexidade dos arquivos internos depende de: </li></ul><ul><li>número de registros lógicos do arquivo </li></ul><ul><li>número de elementos de dados armazenados </li></ul><ul><ul><ul><li>R.L. Elementos de dados </li></ul></ul></ul><ul><ul><ul><li>1-19 20-50 51+ </li></ul></ul></ul><ul><ul><ul><li>1 S S M </li></ul></ul></ul><ul><ul><ul><li>2-5 S M C </li></ul></ul></ul><ul><ul><ul><li>6+ M C C </li></ul></ul></ul>
  22. 22. Medição de Software <ul><li>FP = [0,65 + 0,01*  F i ]*UFP </li></ul><ul><li>Fatores de Ajuste (F i ) </li></ul><ul><li>Cada fator recebe uma ponderação entre 0 e 5 </li></ul><ul><li>Backup confiável </li></ul><ul><li>Comunicação de Dados </li></ul><ul><li>Processamento Distribuído </li></ul><ul><li>Desempenho </li></ul><ul><li>Ambiente Operacional </li></ul><ul><li>Entrada de Dados On-line </li></ul><ul><li>Eficiência da entrada de dados </li></ul><ul><li>Atualização on-line </li></ul><ul><li>Transações complexas </li></ul><ul><li>Processamento complexo </li></ul><ul><li>Reusabilidade </li></ul><ul><li>Conversão e Instalação </li></ul><ul><li>Configuração múltipla </li></ul><ul><li>Facilidade de mudança </li></ul>
  23. 23. DFD para a Casa Segura usuário usuário sensores Subsistema monitoração Dados de Configuração senha Consulta sobre zona Consulta sobre sensor Botão de pânico ativar / desativar teste estabelecimento de zona mensagem estado do sensor ativar / desativar alerta
  24. 24. Medição de Software Se  (F i ) = 46, então: FP = 50 x [0.65 + 0.01 x 46] = 56
  25. 25. Medição de Software <ul><li>Aspectos de pontos de função </li></ul><ul><li>Positivos </li></ul><ul><ul><li>Independente de linguagem de programação </li></ul></ul><ul><ul><li>Ideal para aplicações que utilizam linguagens convencionais e não-procedurais </li></ul></ul><ul><ul><li>dados podem ser coletados no início do projeto, facilitando a estimativa </li></ul></ul><ul><li>Negativos Subjetividade ainda presente falta de significado físico direto </li></ul>
  26. 26. Medição de Software <ul><li>Pontos de função e linhas de código </li></ul>Linguagem de Programação Média de Linhas de Código/pontos de função Assembly 320 C 128 COBOL 106 FORTRAN 106 Pascal 90 C++ 64 Ada95 53 Visual Basic 32 Smalltalk 22 Powerbuilder 16 SQL 12
  27. 27. Métricas para Qualidade de Software Propostas por Gilb [GIL88] <ul><li>Correção : verifica se o software executa seus requisitos funcionais. Métrica mais comum é: “defeitos/KLOC”. </li></ul>Defeitos são problemas apontados pelo usuário depois de o programa entrar em produção.
  28. 28. <ul><li>Manutenibilidade: facilidade com que um software pode ser corrigido se um erro for encontrado, se o ambiente mudar ou se o usuário resolver mudar algo. </li></ul><ul><li>Métrica simples orientada a tempo é mean-time-to-change (MTTC).( tempo entre a análise da solicitação até a distribuição para o usuário) </li></ul>Métricas para Qualidade de Software
  29. 29. <ul><li>Integridade: habilidade do sistema em resistir a ataques externos. </li></ul><ul><ul><li>Risco ( Threat ) - probabilidade de um ataque ocorrer em um dado tempo. </li></ul></ul><ul><ul><li>Segurança ( Security ) - probabilidade do referido ataque ser repelido. </li></ul></ul><ul><ul><li>Integridade = (1- Risco x (1 – Segurança)) </li></ul></ul>Métricas para Qualidade de Software
  30. 30. <ul><li>Integridade: habilidade do sistema em resistir a ataques externos. </li></ul><ul><ul><li>Risco ( Threat ) - probabilidade de um ataque ocorrer em um dado tempo. </li></ul></ul><ul><ul><li>Segurança ( Security ) - probabilidade do referido ataque ser repelido. </li></ul></ul><ul><ul><li>Integridade = (1- Risco x (1 – Segurança)) </li></ul></ul><ul><ul><ul><li>Se Risco = 0,25 e Segurança = 0,95 então Integridade = 0,99 </li></ul></ul></ul><ul><ul><ul><li>Se Risco = 0,5 e Segurança = 0,25 então Integridade = 0,63 </li></ul></ul></ul>Métricas para Qualidade de Software
  31. 31. <ul><li>Usabilidade: mede o quanto o sistema é amigável. </li></ul><ul><ul><li>Habilidades físicas e intelectuais requeridas para aprender o sistema. </li></ul></ul><ul><ul><li>Tempo necessário para utilização do sistema de forma moderadamente eficiente. </li></ul></ul><ul><ul><li>O aumento de produtividade medido quando o sistema é utilizado por pessoas moderadamente eficientes na sua utilização. </li></ul></ul><ul><ul><li>Avaliação subjetiva dos usuários em relação ao sistema. </li></ul></ul>Métricas para Qualidade de Software
  32. 32. Métricas para Qualidade de Software DRE = E/(E + D) O valor ideal do DRE é 1. DRE também pode ser utilizado para avaliar a capacidade da equipe de descobrir erros antes que se comece outra fase. DRE i = E i /(E i + E i+1 ) DRE (defect removal efficiency): uma métrica da eficiência na remoção de defeitos.
  33. 33. MODELOS EMPÍRICOS DE ESTIMATIVA <ul><li>Modelos regressivos </li></ul><ul><li>COCOMO </li></ul>
  34. 34. MODELOS EMPÍRICOS DE ESTIMATIVA <ul><li>modelo: E = A + B x (ev) C </li></ul><ul><ul><li>onde E = Esforço, ev = variável da estimativa (LOC ou FP) e A, B e C são constantes </li></ul></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><li>KLOC E = 5.2 x (KLOC) 0.91 (Walton-Felix) </li></ul></ul><ul><ul><li>E = 5.5 + 0.73 x (KLOC) 1.16 (Bailey-Basili) </li></ul></ul><ul><ul><li>E = 3.2 x (KLOC) 1.051 (Walton-Felix) </li></ul></ul><ul><ul><li>E = 5.288 x (KLOC) 1.047 (Doty para KLOC > 9) </li></ul></ul><ul><ul><li>FP E = -91.4 + 0.355 FP (Albretch e Gaffney) </li></ul></ul><ul><ul><li>E = -37 + 0.96 FP (Kemerer) </li></ul></ul><ul><ul><li>E = -12.88 + 0.405 FP (pequenos projetos) </li></ul></ul>
  35. 35. O MODELO COCOMO II <ul><li>MODELOS </li></ul><ul><ul><li>composição de aplicação </li></ul></ul><ul><ul><ul><li>estágio inicial – prototipagem das interfaces </li></ul></ul></ul><ul><ul><li>primeiro estágio de projeto </li></ul></ul><ul><ul><ul><li>requisitos estabilizados </li></ul></ul></ul><ul><ul><li>estágio após a arquitetura </li></ul></ul><ul><ul><ul><li>durante a construção </li></ul></ul></ul>
  36. 36. MODELO DE COMPOSIÇÃO DA APLICAÇÃO <ul><li>estima o número total de pontos por objeto (NOP) </li></ul>8 5 2 Relatório 10 Componente 3 2 1 Tela Difícil Média Simples Peso da Complexidade Tipo de objeto
  37. 37. MODELO DE COMPOSIÇÃO DA APLICAÇÃO <ul><li>PROD = NOP / pessoa- mês </li></ul><ul><li>Esforço estimado = NOP / PROD </li></ul>50 25 13 7 4 PROD muito alta alta normal baixa muito baixa Maturidade/capacidade do ambiente muito alta alta normal baixa muito baixa Experiência/capacidade do desenvolvedor

×