Fundamentos de Engenharia de SW Métricas de SW Prof. Eber 2015/2 Alguns problemas práticos das fábricas de SW Quanto custa a construção de um produto ? Quanto tempo demora a construção ? Qual é a produtividade de nossa equipe ? Quanto gastamos em retrabalho ? Nossa produtividade está melhorando? Medidas, métricas e indicadores Métrica: Medida: define grau com que um sistema, componente, ou processo possui um determinado atributo [IEEE 93] indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho de alguns atributos de um produto ou processo Indicador: combinação de métricas Métricas de Processo (Grady) Métricas privadas (individuais): taxa de defeitos individuais, por módulos, erros encontrados durante o desenvolvimento, linhas de código ou pontos por função por módulo ou função Métricas públicas (consolidação das métricas privadas): taxa de defeitos por projeto, esforço, tempo consumido em uma visão ampla Exemplos de métricas de Processo Erros remanescentes Defeitos relatados por usuários Produtos entregues Recursos humanos consumidos Tempo consumido Conformidade com os prazos Métricas de Projeto Quem usa: gerente de projeto e equipe de software Para que servc: Estimar de esforço baseado em projetos passados Avaliar progresso (estimado x realizado) Evitar atrasos através da identificação de problemas potenciais e riscos Melhorar qualidade, reduzindo defeitos, retrabalho e custo do projeto Métricas orientadas ao tamanho do SW Registram dados históricos de projetos: Coletam indicadores úteis: linhas de código esforço (pessoas/mês), custo, erros erros e defeitos, custo, erros por pessoa/mês, linhas de código por pessoa/mês, custo por página de documentação e etc. Problemas: Dependente a linguagem de programação empregada Penalizam códigos bem escritos Não adaptáveis a linguagens visuais Dificuldade para estimar projetos Métricas orientadas à funcionalidade Medem a funcionalidade do sistema (valor) Ponto de função (Albrecht) : relação empírica entre tipos de domínio da informação do software e o seu nível de complexidade estimado Pontos de função Criado por Peter Albrecht em 1984 Pressupostos de Albrecht: FPs isolam os fatores intrínsecos do sistema Medida é baseada na visão externa e é independente de tecnologia Medida pode ser feita bem cedo no ciclo do projeto Compreensível por usuários não-técnicos Baixo custo de aplicação Pontos de função Pontos de função (FP) dependem de: Unadjusted function points - UFP parâmetros observáveis pelo usuário Technical Complexity Factor -TCF dificuldades da implementação FP = TCF x UFP Pontos de função não-ajustados -UFP UFP =soma ( função observáveis pelo usuário * complexidade da função) Funções observáveis: arquivos, interfaces, entradas, saídas, consultas Complexidade: simples, média, complexa Pontos de função não-ajustados -UFP Funções observáveis são de dois tipos: Arquivos: internos interface (externos) Transacionais: entradas saídas consultas Mensuração de Software Parâmetro de medição Contagem Fator de Peso por complexidade Total Simples Média Complexa ______x 3 4 6 Número de Entradas de usuário ______x 4 5 7 Número de Saídas de usuário ______x 3 4 6 Número de Consulta de usuário ______x 7 10 15 Número de Arquivos ______x 5 7 10 Número de Interface Externas Total = UFP = número de pontos de função não ajustados Contagem dos arquivos internos Arquivos internos: grupo lógico de dados sob o ponto de vista do usuário. Inclui todos os arquivos lógicos que são gerados, usados ou mantidos pelo sistema. Equivalente a um tipo de entidade conceitual Exemplos: arquivos tabelas do banco de dados Contagem dos arquivos internos Complexidade dos arquivos internos depende de: número de registros lógicos do arquivo número de elementos de dados armazenados R.L. 1 2-5 6+ Elementos de dados 1-19 20-50 S S S M M C 51+ M C C Contagem dos arquivos de interface Interface: Arquivos passados ou compartilhados entre sistemas. Exemplos: arquivos compartilhados bancos compartilhados bibliotecas de rotinas Contagem dos arquivos de interface Complexidade dos arquivos de interface depende de: número de registros lógicos do arquivo número de elementos de dados armazenados R.L. 1 2-5 6+ Elementos de dados 1-19 20-50 S S S M M C 51+ M C C Contagem da entradas Entrada: transação com dados ou controles do usuário que: (i) entram pelam borda externa do sistema (ii) adicionam ou alteram dados num arquivo lógico interno. Exemplos: arquivos de entrada formulários de entrada Contagem da entradas Complexidade de uma entrada é uma função de: -número de elementos de dados que cruzam a interface e atualizam campos dos arquivos internos -número de arquivos lógicos referenciados pela transação. Tabela de complexidade das entradas Arquivos 0-1 2-3 Elementos de dados 1- 4 5 -15 S S S M 16+ M C 4+ M C C Contagem da saídas Saídas: dados ou controles de saída que saem pela interface do sistema após o processamento ter ocorrido. Exemplos: arquivos de saída relatórios de saída: impressos ou em tela, mensagens do sistema e de erro Contagem da saídas Complexidade das saídas é uma função de: número de tipos de elementos de dados distintos apresentados na saída número de arquivos referenciados Tabela de complexidade Arquivos 0-1 2-3 4+ Elementos de dados 1-5 S S M 6-19 S M C 20+ M C C Contagem das consultas Consultas : entrada de dados que causam uma saída imediata. É sempre uma combinação de uma entrada com uma saída. A saída da consulta não deve usar dados derivados. Exemplos: prompts helps Contagem das consultas Complexidade das consultas é escolhida como sendo a maior complexidade entre a sua parte de entrada e sua parte de saída. Tabela de complexidade Arquivos 0-1 2-3 4+ Elementos de dados 1-5 S S M 6-19 S M C 20+ M C C Exemplo de cálculo de PFs Estimativa do sistema: Arquivos: 3 simples Interfaces: 1 simples Entradas: 5 simples, 2 médias, 2 complexas Saídas: 3 simples Consultas: 1 simples, 2 médias Cálculo de pontos Entradas Saídas Arquivos Interface Consultas Total = 5*3+2*4+2*6 = 3*4 =3*7 =1*5 =1*3+2*4 =35 =12 =21 =5 =11 =84 pontos Fator de complexidade técnica (TCF) TCF = 0.65 + 0.01 x Fi A cada um dos 14 fatores de complexidade técnica atribua um valor entre 0 e 5 significando a importância deste fator no sistema. Valor 0 (zero) significa que o fator não se aplica e valor 5 (cinco) significa que tem um peso muito importante. Quais os limites do fator de correção introduzido pelos TCFs ? Fator de complexidade técnica (TCF) Fatores de complexidade técnica F1- Comunicação de dados F2-Processamento distribuído F3-Desempenho F4-Utilização do equipamento F5-Volume de transações F6-Entrada de dados on-line F7-Eficiência do usuário final F8-Atualização on-line F9-Processamento complexo F10-Reutilização de código F11-Facilidade de implantação F12-Facilidade operacional F13-Múltiplos locais F14-Facilidade de alteração Exemplos de medidas baseadas em PFs 1 PF = 100 linhas de código fonte 1.15 número de páginas de documentação = PF número de casos de teste = PF 1.2 defeitos = PF 1.25 prazo do projeto(meses)= PF 0.4 equipe (pessoas)= PF/150 equipe de manutenção= PF/500 (Capers Jones) Pontos de função e linhas de código 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 Medidas de produtividade Planejamento de projeto deve responder: Qual a duração do projeto? Quantas pessoas serão necessárias para a sua execução? Para responder é necessário saber: Quanto trabalho um profissional consegue produzir por unidade de tempo. Medidas de produtividade Porque a estimativa da produtividade é difícil? objetivos conflitantes dos projetos falta de uma especificação detalhada do produto variação no esforço de reuso emergência de novas técnicas, processos e métodos. (Stutzke) Medidas de produtividade Baseadas em linhas de código DSI - “delivered source instructions” NCSS - “non-commented source statements” Baseadas em funcionalidade pontos de função Estimando esforço de desenvolvimento Dados: 1-Uma estimativa para o número de pontos de função de um sistema. (NPF) 2-Uma estimativa da produtividade da equipe em Pontos de função / homem.mês (PR) ( obtida a partir do histórico da empresa) Calcular a distribuição de probabilidade para a variável “esforço”(E) : E= NPF/PR Estimando esforço Fatores do esforço necessário para uma atividade E = Esforço (Pessoas.Mes ou PM) S= Tamanho da atividade (p.ex. M2) P = Produtividade da equipe (p.ex. M2/PM) E = S/P Bibliografia 1-Jones, C.; "Applied software measurement", McGraw-Hill, 1991 2-International Function Point Users Group - Function Point Counting Practices Manual (Release 4.0), January, 1994 (www.bannister.com/ifpug/home/docs/docs.html) 3- Symons, C. Function Point Analysis: Difficulties and improvements; IEEE Transactions on Software Engineering (TSE), Volume 14. Volume 14, Number 1, January 1988