Métricas de Software Plácido Antônio de Souza Neto 1 1 Gerência Educacional de Tecnologia da Informação Centro Federal de Educação Tecnologia do Rio Grande do Norte 2006.1 - Planejamento e Gerência de Projetos
Introdução Pergunta Por que medir? Obter auto conhecimento (interno); Atender a uma pressão imediata (externa); Preparar-se para o futuro (tendências).
Introdução Pergunta Obter auto conhecimento? Se não sabemos onde estamos... Não conseguimos...... Saber para onde se quer ir.... Saber o que será feito. É importante ter saber o que se tem, o que se está produzindo e aonde se quer chegar.
Introdução Pergunta Atender a uma pressão imediata? Saber o que fazer em uma necessidade a curto prazo. Ex.: Ser aprovado na concorrência de um projeto de desenvolvimento de software. É importante saber o que se deve fazer HOJE.... Saber para onde caminhar. Se o ambiente de desenvolvimento não tiver uma estrutura concreta de produção, como serão os próximos projetos?
Introdução Possíveis Riscos... Se não se consegue MEDIR...... Não se consegue... Controlar; Gerenciar; Melhorar; Trabalhar.
Introdução Pergunta Até onde medir? Alinhar os objetivos dos projetos (necessidades) com os objetivos da empresa. Estabelecer um programa de métricas: Adequado; Fundamentado; Gradual. Não medir mais do que é necessário
Introdução Pergunta Mas... Quais as vantagens de utilizar métricas no desenvolvimento de sistemas? Diminuir: Defeitos; Prazo de entrega; Disperdício; Custo; Aumentar: Satisfação do cliente; Produtividade dos recursos; Visibilidade das ações; Qualidade do gerenciamento; Qualidade do produto.
Tipos de Ambiente Figura: Painel Comparativo.
Ambientes para Aplicaçãode Métricas Figura: Possibilidades de Métricas.
Tipos de Métricas Pergunta Como podemos classificas as métricas em um projeto? Métricas Primárias (1a Ordem); Métricas Secundárias (2a Ordem);
Métricas Primárias (1a Ordem) Apontamentos dos fatos (reais) -> MEDIDAS; Informações objetivas da realidade; Exemplo: defeitos, horas trabalhadas, custo, reclamações,... ; Tendência à expressão numérica.
Riscos Processo de captura -> credibilidade; Meio de captura -> facilidade, entendimento, objetividade; independência da análise -> confiabilidade.
Métricas Secundárias (2a Ordem) Indicadores (expressam um comportamento além dos números); Resultado de uma relação de: Métrica / Fator; Informações objetivas da realidade; Exemplo: densidade de defeitos (defeitos por fase do projeto,...).
Riscos Processo de definição e análise cos dados -> corretude; Processo de uso -> utilidade, poder de explicação, relevância.
Estruturas e Objetivos Objetiva o Processo e suas atividades e os projetos e suas atividades; Medições Operacionais: Processo; Projeto; Atividades; Objetiva o ambiente de desenvolvimento, mudanças e tendências; Medições táticas: Tendências; Impactos (Tradeoffs); Atributos;
Estruturas e Objetivos Objetiva comparações com outras organizações e melhorias contínuas; Medições estratégicas: Benchmarking; Melhoria Contínua; Avaliação Econômica;
Possibilidades de Métricas em Software Tamanho do software; Quantidade de defeitos; Complexidade do software; Acesso e segurança; Qualidade do produto; Utilidade do produto; Usabilidade do produto; Estimativa de durabilidade; Comportamento dos defeitos; Taxa de inovação: novas funcionalidades (Entre versões); Dentre outras... como... Medir a quantidade de funcionalidades incluídas em um software -> tamanho do produto
Métodos para medir tamanho do produto Linhas de código - lines of code (Kloc); Análise de Pontos de função (APF); Constructive Cost Model (COCOMO); Metodologias ágeis; Pontos de casos de uso.
Métodos para medir tamanho do produto Métricas para Planejamento e Gerenciamento Dimensão dos produtos: Modelos, protótipos, documentos e software; Esforço de produção: Pessoas necessárias em um periodo de tempo; Produtividade: Quantidade produzida por esforço; Defeitos: Número de erros encontrados; Custo de produção: Valor do esforço de produção e correçao de erros.
Métodos para medir tamanho do produto LOC - Linha de Código Fonte: Mede todo o esforço necessário para entregar um código correto, sem erro; Depende da linguagem. Funções: Determinada pela funcionalidade do sistema; Independe da linguagem. Para qualquer abordagem é importante: Ter experiência; Utilizar dados históricos.
Métodos para medir tamanho do produto MÉTRICAS Linhas de Código (LOC) Pontos por Função (PF) LOC/FP Pessoa/Mês (PM) Pessoa-Mês/LOC Defeitos/LOC Custo/LOC OBJETIVOS Dimensão do Produto Dimensão do Produto Dimensão do Produto Esforço Humano Produtividade Linear Qualidade Custo Tabela: Outros tipos de métricas
Estimativa Estimar a dimensão do programa; Calcular o esfoço humano; Aplicar penalidades de produtividade; Realizar ajustes; Calcular Reuso; Identificar e corrigir defeitos. OBS.: Muito importante ter base histórica de desenvolvimento
Calculando Dimensão do programa Pontos por Função Depende da funcionalidade; Baseado nos dados empíricos e o software a ser desenvolvido; É definido a partir de: No de entradas do usuário; No de saídas do usuário; No de consultas do usuário; No de interfaces;...
Exemplo PF Suponha que será construido um sistema se submissão de artigos: Foram identificados dados de acordo com os requisitos coletados inicialmente: FP = (25*4)+(15*5)+(7*5)+(10*4) = 250FP Número Fator de conversão Entradas 25 4 Saídas 15 5 Consultas 10 4 Interfaces 5 7 Tabela: Exemplo
Calculando Dimensão do programa Esforço Humano Determina o número de pessoas para realizar uma atividade num período de tempo; Exemplo: Construir um programa com 50 KLOC == 50.000 LOC; Produtividade linear dos programadores: 2,4 Pessoa-mês/KLOC. O esforço depende do tamanho do software; A produtividade diminui em equipes maiores, principalmente deviso à necessidade de comunicação e interação. Tamanho Equipe Esforço Prazo total 1 150 Pes.Mes 150 meses 10 150 Pes.Mes 15 meses 100 150 Pes.Mes 1,5 meses Tabela: Exemplo RH
Variação entre as Linguagens O número de linhas de códigos e a produtividade variam de acordo com a linguagem utilizada. Linguagem de Programação LOC por PF C++ 53 Java 46 Delphi 18 VB 24 HTML 14 Tabela: LOC por PF
Exemplo Calculando LOC e Esforço Humano Pergunta Suponha que o sistema de submissão de artigos está sendo análisado (Sistema feito em Java); Com base na tabela de LOC-por-PF, tem-se 46 LOC por PF, para programas feito em Java; O Esforço humano tem como base PRODUTIVIDADE x No LOC; Considerando que é produtividade para o sistema de submissão de artigos seja de 3,1 Pes.Mes/LOC e que existem 280 PF a partir da análise prévia. Qual será o esforço para produzir este sistema? Qual quantidade de linhas de código?
Exemplo Calculando LOC e Esforço Humano Resposta LOC = FP*(LOCporFP) LOC = 280*46 LOC = 12,88 KLOC (12.880 LOC) - Esforço = Produtividade*KLOC Esforço = 3,1 * 12,88 Esforço = 39,928 PM
Exemplo Calculando LOC e Esforço Humano Resposta Com 7 membros na equipe a quantidade de meses para construir o sistema é? QtdMES = Esforço / No Membros QtdMES = 39,928 PM / 7 QtdMES = 5,7 Meses
Aplicando Penalidades Determinou-se empiricamente que a produtividade diminui com o aumento do tamanho do software; Esta produtividade depende do tipo de sistema de acordo com a tabela abaixo; Tipos de Sistema Fator de Penalidade Sistema Web 1,030 Sistema Militar 1,072 Sistema embutido 1,110 Tabela: Fator Exponencial de Penalidade
Exemplo Calculando Fator de Penalidade Resposta Esforço = Produtividade*KLOC Esforço = 3,1 * 12,88 Esforço = 39,928 PM EsforçoPEN = (Esforco) (fator) EsforçoPEN = (39,928) (1,030) EsforçoPEN = 44,598 PM - QtdMES = 44,598 PM PM / 7 QtdMES = 6,37 Meses
Aplicando Penalidades O custo e os prazos é calculado em função do esforço, da equipe e do custo da mão de obra; Custo de mão de obra (CM) é dado em Valor/PM; Exemplo: Programa com 12,88 KLOC; Esforço de 44,598 PM; Com uma equipe de 7 programadores; Salário mensal é R$ 1780,00. Esforço Custo MO Equipe Prazo Custo Mensal Custo Total 44,598 R$ 1780,00 7 6 Meses R$ 12.460,00 R$ 74.760,00 44,598 R$ 450,00 7 6 Meses R$ 3.150,00 R$ 18.900,00 Tabela: Exemplo Custo
Conclusão É importante ter saber o que se tem, o que se está produzindo e aonde se quer chegar. É importante estabelecer um programa de métricas; Métricas são classificadas em: Métricas Primárias (1a Ordem); Métricas Secundárias (2a Ordem); As métricas são utilizadas para: Estimar a dimensão do programa; Calcular o esfoço humano; Aplicar penalidades de produtividade; Realizar ajustes; Calcular Reuso; Identificar e corrigir defeitos.