Baixe o app para aproveitar ainda mais
Prévia do material em texto
Métrica de Software Prof. Wilson M Yonezawa UNESP – FC – Bauru Depto. Computação yonezawa@fc.unesp.br Engenharia Software I Sobre a medição “Você tem algum conhecimento sobre o que você fala quando pode medir e expressar isso em números, mas quando não pode medir, quando não pode expressar isso em números, seu conhecimento é fraco e insatisfatório: pode ser o princípio do conhecimento, mas você mal avançou em seus pensamentos para o estágio de uma ciência” Lord Kelvin Sobre a medição “Medição é o processo pelo qual números ou símbolos são associados aos atributos de entidades do mundo real de modo que os determinem de acordo com regras claramente definidas” Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Medidas, métricas e indicadores • Medida fornece uma indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho de algum atributo de um produto ou processo • Medição é o ato de determinar uma medida. Métrica é o ato de determinar grau em que um sistema, componente ou processo possui um determinado atributo • Uma métrica de software relaciona as medidas individuais de algum modo • Um engenheiro de software coleta medidas e desenvolve métricas de modo que indicadores sejam obtidos • Um indicador é um métrica ou combinação de métricas que fornece profundidade na visão do processo de software, projeto de software ou produto em si Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Princípios de medição • Atividades: – Formulação: A derivação de medidas e métricas de software adequadas para representação do software que está sendo considerado – Coleta: Mecanismo usado para acumular os dados necessários para derivar as métricas formuladas – Análise: Cálculo de métricas e aplicação das ferramentas matemáticas – Interpretação: Avaliação das métricas em um esforço para ganhar profundidade na visão da qualidade de representação – Realimentação: Recomendações derivadas da interpretação das métricas de produto transmitidas à equipe de software Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Métricas - Características • Uma métrica deve ter propriedades matemáticas desejáveis? • Quando uma métrica representa uma característica de software que aumenta quando acontecimentos positivos ocorrem ou diminui quando acontecimentos indesejáveis são encontrados, o valor da métrica deve aumentar ou diminuir do mesmo modo • Cada métrica deve ser validada, empiricamente em uma ampla variedade de contextos antes de ser publicada ou usada para tomar decisões Ana Highlight Ana Highlight Atributos de métrica de software efetivas • Simples e computáveis • Empíricas e intuitivamente persuasivas • Consistentes e objetivas • Consistentes no uso de unidades e dimensões • Independentemente da linguagem de programação Ana Highlight Para que serve a medição? • A medição nos permite obter entendimento do processo e projeto, dando-nos um mecanismo para avaliação objetivo • Medição pode ser aplicada ao processo de software com o objetivo de melhorá-lo de forma contínua • Pode ser usado ao longo de um projeto de software para auxiliar na estimativa no controle de qualidade, na avaliação de produtividade e no controle de projeto • Pode ser usada pelos engenheiros de software para ajudar a avaliar a qualidade dos produtos do trabalho e a auxiliar na tomada de decisões táticas, à medida que o projeto evolui Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Razões para medirmos • Para caracterizar em um esforço a fim de obter entendimento de “processos, produtos, recursos e ambientes, e para estabelecer referências para comparação futuras avaliações” • Para avaliar “a fim de determinar o estado em relação aos planos” • Para prever pela “obtenção de entendimento de relacionamentos entre processos e produtos e construção de modelos desses relacionamentos” • Para aperfeiçoar pela “identificação de bloqueios, causas fundamentais, ineficiências e outras oportunidades para melhorar a qualidade do produto e desempenho do processo” Medição é ferramenta de gestão Ana Highlight Ana Highlight Ana Highlight Ana Highlight Ana Highlight Métricas de processo e de produto • Métricas de processo: – Coletadas no decorrer de todos os projetos durante longos períodos – Objetiva fornecer um conjunto de indicadores de processo que leva ao aperfeiçoamento do processo de software • Métricas de projeto – Avaliam o estado de um projeto em andamento – Acompanham os riscos potenciais – Verificam áreas-problemas antes que se tornem “reais e críticas” – Ajudam o fluxo de trabalho ou tarefas – Avaliam a capacidade da equipe de projeto de controlar a qualidade dos produtos do trabalho de software • Medidas coletadas e depois convertidas em métricas • O aperfeiçoamento de qualquer processo depende de capacidade de se medir atributos específicos e com essas medidas desenvolver métricas significativas • As métricas são baseadas nas saídas que são derivadas do processo, como por exemplo: erros descobertos antes da entrega do software, cumprimento do cronograma, etc • Muitas vezes, o aperfeiçoamento do processo de software deve começar no nível individual • Métricas podem ser privadas ou públicas Métricas de processo e de produto Métricas de processo e de produto Medição de software • Dois modos de medidas: direta e indiretas • Métrica de projeto podem ser consolidadas para criar métricas de processo • Métricas podem ser normalizadas • Métricas: – Orientadas a tamanho – Orientadas à função – Orientadas a objetos – Orientadas a casos de uso – De projeto de engenharia da Web Ana Highlight Métricas orientadas a tamanho • Consideram o tamanho do software que foi produzido • LOC (lines of code) é um valor de normalização utilizado nas métricas orientada a tamanho • LOC não são universalmente aceitos como o melhor modo de medir o processo de desenvolvimento de software Ana Highlight Ana Highlight Ana Highlight Métricas orientadas a tamanho Métricas orientadas à função • Utilizam uma medida de funcionalidade entregue pela aplicação como valor de normalização • FP (Function Point) é a métrica mais amplamente utilizada • Cálculo dos pontos de função é baseado em características do domínio de informação e complexidade do software Ana Highlight Ana Highlight Ana Highlight Métricas orientadas à função Tabela Reconcilização de LOC e FP Métricas orientadas a objetos • Lorens e Kidd (1994) sugerem: – Número de scripts de cenário – Número de classes-chave – Número de classes de apoio – Número médio de classes de apoio por classe-chave – Número de subsistemas Ana Highlight Ana Highlight Ana Highlight Ana Highlight Outras métricas • Métricas orientadas a casos de uso • Métricas de projeto de engenharia Web Medicação de qualidade • Correção • Manutenibilidade • Integridade • Usabilidade Integração de métricas no processo de software • A maioria dos desenvolvedores não medem • Problema cultural (por que precisamos fazer isso??) • É preciso medir para podermos determinar se estamos melhorando ou não • Medição torna o projeto mais gerenciável Integração demétricas no processo de software • Uma questão de referência para as métricas – Os dados precisam ser razoavelmente precisos – Dados devem ser coletados por tantos projetos quanto possível – Dados devem ser consistentes, uma linha de código deve ser interpretada uniformemente ao longo de todos os projetos para os quais os dados são coletados – As aplicações devem ser análogas ao trabalho que precisa ser estimado Ana Highlight Ana Highlight Ana Highlight Ana Highlight Processo de coleta de métricas Métricas para pequenas organizações • “Torne simples” • Medidas facilmente coletáveis: – Tempo transcorrido entre o momento em que o pedido é feito – Esforço (pessoa-hora) para realizar a avaliação, Waval – Tempo transcorrido desde o término da avaliação até a atribuição da ordem de modificação ao pessoal, taval – Esforço necessário para fazer a modificação, Wmodificação – Tempo necessário para fazer a modificação, tmodificação – Erros descobertos durante o trabalho para fazer a modificação, Emodificação – Defeitos descobertos depois que a modificação é entregue ao cliente, Dmodificação Métricas para pequenas organizações • Quais as métricas derivadas de tais medidas? • Ex: DRE = Emodificação / (Emodificação + Dmodificação) Como estabelecer um programa de métrica de software? 1. Identifique suas metas de negócio 2. Identifique o que você deseja saber ou aprender 3. Identifique suas submetas 4. Identifique as entidades e atributos relacionados a suas submetas 5. Formalize suas metas de medição 6. Identifique questões quantificáveis e os indicadores correlacionados que você pode usar para ajudá-lo a atingir suas metas de medição 7. Identifique os elementos de dados que você vai coletar para construir os indicadores que ajudam a responder a suas perguntas 8. Defina as medidas a ser usadas e torne essas definições operacionais 9. Identifique as ações que você executará para implementar as medidas 10. Prepare um plano para implementar as medidas Ana Highlight Ana Highlight Métricas de produtos • Métricas para o modelo de análise: – Funcionalidade entregue, tamanho do sistema e qualidade da especificação • Métricas para o modelo de projeto: – Métrica arquitetural, métrica no nível de componente, métricas de projeto de interface e métricas especializadas em projeto OO • Métricas para código-fonte: – Métricas de Halstead, métricas de complexidade e métricas de comprimento • Métricas de teste: – Métricas de cobertura de comando e desvio, métricas relacionadas a defeito, métricas em processo Métricas para modelo de análise • Métricas baseadas em função (ex: FPA) – Estimar o custo ou esforço necessário para projetar, codificar e testar o software – Prever o número de erros que vão ser encontrados durante o teste – Prever o número de componentes e/ou o número de linhas de código projetadas no sistema implementado Métricas baseadas em Função • Pontos de função são derivados usando uma relação empírica baseada em medidas de contagem (direta) do domínio de informação do software e avaliação da complexidade do software • Valores do domínio: – Número de entradas externas (EIs) – Número de saídas externas (EOs) – Número de consultas externas (EQs) – Número de arquivos lógicos internos (ILFs) – Número de arquivos de interface externa (EIFs) FP = Contagem total x [0,65 + 0,01 x Σ (Fj)] Métricas baseadas em Função Métricas de qualidade de especificação • Especificidade • Completeza • Correção • Inteligibilidade • Verificabilidade • Consistência • Atingibilidade • Concisão • Rastreabilidade • Precisão • Reusabilidade • Nr = Nf + Nnf, onde: – Nr = requisitos – Nf = requisitos funcionais – Nnf = requisitos não funcionais • Q1 = Nui / Nr, onde: – Q1 = Especificidade – Nui = Requisitos para os quais os revisores têm interpretações idênticas Métricas para o modelo de projeto • Focalizam a arquitetura do programa e na efetividade dos módulos ou componentes dentro da arquitetura • Card e Glass definem três medidas de complexidade para um Projeto Arquitetural: – Complexidade estrutural: • S(i) = f2out(i) onde fout(i) é o fan-out do módulo i – Complexidade de dados: • D(i) = V(i) / [fout(i) + 1] onde V(i) é o número de variáveis de entrada e saída passadas para o módulo i – Complexidade de sistema: C(i) = S(i) + D(i) Métricas para o modelo de projeto • Métricas morfológicas: Métricas para o modelo de projeto • Métricas morfológicas: – S1 = Número total de módulos definidos na arquitetura do programa – S2 = Número de módulos cujo funcionamento correto depende da fonte de entrada de dados ou que produz dados a serem usado em outro lugar – S3 = Número de módulos cujo funcionamento correto depende do processamento anterior – S4 = Número de itens na base de dados – S5 = Número total de itens únicos na base de dados – S6 = Número de segmentos da base de dados (registros ou objetos individuais diferentes) – S7 = Número de módulos com uma única entrada e saída Métricas para o modelo de projeto • Métricas morfológicas: – DSQI (Design Structure Quality Index) da USAF • DSQI = Σ wiDi onde: • D1 = Estrutura do programa (D1 = 0 ou 1) • D2 = Independência modular (D2 = 1 – (S2 / S1) • D3 = Módulos não-dependentes de processamento anterior (D3 = 1 – (S3 / S1) • D4 = Tamanho da base de dados (D4 = 1 – (S6 / S4) • D5 = Compartimentalização da base de dados (D5 = 1 – (S6 / S4) • D6 = Característica de entrada/saída do módulo (D6 = 1 – (S7 / S1) Métricas de código-fonte • A teoria de Halstead propôs as primeiras “leis” analíticas para software de computador • Halstead associou leis quantitativas ao desenvolvimento de software de computador, usando um conjunto de medidas primitivas que podem ser originadas após o código ser gerado • Medidas: – n1 = Número de operadores distintos que aparece em um programa – n2 = Número de operandos distintos que aparece em um programa – N1 = Número total de ocorrências de operador – N2 = Número total de ocorrências de operando • Halstead mostra que o tamanho N de um programa e V o volume podem ser estimado como: – N = n1 log2 n1 + n2 log2 n2 – V = N log2 (n1 + n2) – L = 2/n1 x n2 / N2 Métricas de manutenção • IEEE Std. 982.1-1988, sugere um índice de maturidade de software (SMI) – SMI = [MT – (Fa + Fc + Fd)] / MT, onde: • MT = número de módulos na versão corrente • Fc = número de módulos na versão corrente que foram modificados • Fa = número de módulos na versão corrente que foram adicionados • Fd = número de módulos na versão anterior que foram descartados na versão corrente
Compartilhar