Engenharia de Software Métricas de Software Márcio Campos - [email protected] Motivação Métrica é fundamental para qualquer disciplina de engenharia. A métrica possibilita uma avaliação objetiva e matemática para a avaliação de software. Métricas podem ser de controle ou preditivas. Medição, Métrica e Indicador Medição. É o ato de se determinar a medida. Métrica ou medida Correlaciona duas medidas de alguma forma ou com algum padrão. Prove uma indicação quantitativa da extensão, volume, dimensão, capacidade ou tamanho de algum atributo de um produto ou de um processo. Indicador. É uma combinação de métrica ou de medições que provê algum conhecimento sobre o processo, o produto ou sobre o projeto. Aplicação Métrica podem ser aplicadas tanto para a avaliação do processo ou projeto quanto para a avaliação do produto. Métricas podem ser aplicadas para estimativas, produtividade, controle de qualidade. Possibilitam a criação de modelos em que são estabelecidos critérios para avaliação da qualidade. Tipos de Medição Diretas ou primitivas De processo: custo e esforço. De produto: linhas de código, velocidade de execução. Indiretas ou derivadas Funcionalidade, complexidade, eficiência etc. Característica da métrica Internas dizem respeito aos atributos internos ao software tais como manutenibilidade. Externas dizem respeito ao atributos externos, vistos pelos usuários finais Processo de medição Escolhas as medições a serem feitas Selecione os componentes a serem avaliados Meça estes componentes. Identifique as características anômalas. Analise os componentes anômalos. Métricas de Software Métricas de produto Linhas de código Forma direta de se medir código Controvérsias Vantagem: facilidade de medição. Desvantagens: Dependentes da linguagem de programação. Penaliza programas bem estruturados e projetados. Para o uso de estimativas deve-se entrar em um nível de detalhe muito grande. O que é uma linha de código? Lines of Code (LOC)/Direta P r o je toE s fo r ç o $ K L O CD O CE r r o sP e s s o a s a p ó s1 /m e s (x 1 0 0 ) a n o 1 3 0 1 7 0 1 3 ,7 3 0 0 2 9 3 2 5 0 5 4 0 3 1 ,4 1 3 0 0 9 2 9 3 3 5 3 3 0 2 0 ,6 2 0 0 0 6 0 6 Produtividade=KLOC/(Pessoas/mes) Q u a l i d a d e = D e f e i t o s / K L O C C u s t o = $ / K L O C Comparação P r o je to P r o d u tiv id a d e Q u a lid a d e C u sto 1 4 ,5 7 2 ,1 2 K L O C /P Me r r o s/K L O C 1 2 ,4 1 $ /K L O C 2 3 ,4 5 2 ,9 3 K L O C /P Me r r o s/K L O C 1 7 ,2 0 $ /K L O C 3 3 ,4 3 2 ,9 1 K L O C /P Me r r o s/K L O C 1 6 ,0 2 $ /K L O C Análise de Pontos por Função/indireta Concentra-se na funcionalidade ou utilidade dos sistemas. Baseados em: Entradas do usuário (telas). Saídas do usuário (telas e relatórios) Consultas (telas). Arquivos. Arquivos de Interface. Pontos por Função Não Ajustados, Cálculo F u n çõ es P eso s(sim p les, m éd io ,co m p lex o ) E n tra d a s _ _ x3 _ _ x4 _ _ x6 S a íd a s _ _ x4 _ _ x5 _ _ x7 C o n su lta s _ _ x3 _ _ x4 _ _ x6 A rq u iv o s _ _ x7 _ _ x1 0_ _ x1 5 In terfa ces _ _ x5 _ _ x7 _ _ x1 0 T o ta lP Fn ã oa ju sta d o(P F ) T o ta is Pontos por Função/indireta P r o je toE s fo r ç o $ (x 1 0 0 ) P F D O CE r r o sP e s s o a s a p ó s1 /m e s a n o 1 3 0 1 7 0 5 0 3 0 0 2 9 3 2 5 0 5 4 0 1 0 0 1 3 0 0 9 2 9 3 3 5 3 3 0 7 0 2 0 0 0 6 0 6 Produtividade=PF/(Pessoas/m es) Q u a l i d a d e = D e f e i t o s / P F C u s t o = $ / P F Comparação P r o je to P r o d u tiv id a d e Q u a lid a d e C u sto 1 1 6 ,7P F /P M 0 ,5 8e r r o s/P F 3 4 0$ /P F 2 1 1 ,1P F /P M 0 ,0 5e r r o s/P F 5 4$ /P F 3 1 1 ,6P F /P M 0 ,8 5e r r o s/P F 4 7 1$ /P F Ajuste dos Pontos de Função São considerados 14 itens (graus de influência), dentre os quais: Necessidade de backup, Comunicação de dados Processamento distribuído, Desempenho crítico. Entrada de dado on-line, Reutilização de código. São avaliados atribuindo-se um valor de 0 a 5 a cada um dos ítens (ajuste) Ajuste dos Pontos de Função (II) PFA = PF x (0,65 + (0,01 x ajuste)) Os graus de influência afetam em +/- 35% do tamanho do sistema. Produtividade = PF/PM. Qualidade = PF rejeitados/PF aceitos. Custo = $ / PF. Características Vantagens independente da linguagem. considera a tecnologia como fator de tamanho do sistema influência no Desvantagens aplicado somente a sistemas de informação. não considera sistemas multimídia, hipertexto, orientado a objeto. só a partir de uma definição completa do sistema que se tem a real idéia do seu tamanho PF e LOC LinguagensdeProgram ação LOC/PF Assem bly 320 Visual Basic 32 SQL 12 Pascal 90 ADA 70 OO 30 L4G 20 Análise de Pontos por Caso de Uso Baseia-se na medição dos casos de uso de uma aplicação. Consiste na medição de: atores (Unadjusted actor weight): baseado no tipo de ator. casos de uso (unadjusted use case weight): baseado no número de transações de um caso de uso. Unadjusted use case points = UAW e UUCW Considera-se dois tipos de ajustes: técnicos e de ambiente technical complexity factor (13 fatores) = 0.6 + (0.1 x Tfactor) environmental complexity factor (8fatores) = 1.4 + (-0.03 x Efactor) use case points = UUCP x TCF x ECF Análise de Pontos por caso de uso Modelo geral da Análise de Pontos por Caso de Uso Outras métricas de produto Correção. Defeitos/KLOC Manutenibilidade. Tempo médio de mudança. Usabilidade. Habilidades intelectuais e operacionais necessárias. Tempo necessário para se tornar eficiente. Aumento de produtividade associado. Avaliação subjetiva. Métricas de Software Métricas de projeto Métricas de projetos interativos Indicadores de gerenciamento progresso: trabalho e progresso despesa: orçamento e despesas rotatividade: alocação e rotatividade da equipe Indicadores de qualidade establidade: fluxo de mudanças e estabilidade modularidade: fragmentação e modularidade adaptabilidade: retrabalho e adaptabilidade maturidade: tempo médio entre falhas e maturidade Métricas de Software Métricas de Processo Métricas de Processo Tempo gasto para um processo em particular ser concluído. Recursos requeridos para um processo particular Número de ocorrências de um evento em particular. Métricas de processo Estabelecendo uma referência. Um conjunto de métricas. Considerando... Relativa acurácia das informações. Obtida de vários projetos. As métricas devem ser consistentes. As aplicações devem ser similares (mesmo domínio). Métricas de Software Goal, Question & Metric http://www.gqm.nl/ https://www.goldpractices.com/practices/gqm/ O modelo https://www.goldpractices.com/practices/gqm/ https://www.goldpractices.com/practices/gqm/ Sumário Métricas são importantes para a construção de sólidos princípios pautados por modelos confiáveis e decisões isentas. Pode-se medir o produto, o processo o projeto. Deve-se estabelecer modelos de qualidade pautados em indicadores consistentes. Deve-se praticar a medição a partir de modelos e de processos de medição estabelecidos como o GQM e ami. Métricas de Software. Dúvidas? Márcio Campos - [email protected]