Uso de Métricas na Melhoria do Processo de Software Mauricio Aguiar, CFPS [email protected] Brazilian Function Point Users Group Presidente www.bfpug.com.br International Function Point Users Group Director www.ifpug.org 23 de outubro de 2000 Objetivos “Não se consegue controlar o que não se consegue medir¹” ¹ Tom DeMarco, Controlling Software Projects, Yourdon Press, 1982. Objetivos “Na maioria das disciplinas, é assumida uma forte relação entre medição e controle. Contudo, temo que esta idéia seja novidade para os gerentes de software; estes, embora sejam pessoas racionais com relação a outros assuntos, mantém uma ilusão de controle, embora nunca meçam nada.¹” ¹ Tom DeMarco, Controlling Software Projects, Yourdon Press, 1982. Agenda Tópicos • Medidas Funcionais de Tamanho de Software • Pontos de Função • Estimativas de Esforço e Prazo • Pontos de Função e o CMM • Cuidados na Contratação de Software com Base em Pontos de Função Medindo Software Por Que Medir¹ •Visão dos processos •Identificação e gerenciamento de risco •Identificação e resolução de problemas (antes que se tornem críticos) •Comunicação (na equipe e na organização) •Avaliação do desempenho da organização •Justificativas objetivas para as decisões “Conduz a organização do gerenciamento a partir do sentimento ao gerenciamento com base em fatos” - Carol Dekkers ¹ Staley, M.J., Clark, B., Managing Software Projects With Metrics, SEI, 1999 Medidas de Tamanho Funcionais x Não Funcionais Linha de Código¹ (LOC) - Medida não funcional de tamanho Ponto de Função² (PF) - Medida funcional de tamanho ¹ Park, R., Software Size Measurement: a Framework for Counting Source Statements, CMU/SEI-92-TR-020, 1992. ² IFPUG, Counting Practices Manual, Version 4.1, IFPUG, 1999. Medidas Funcionais •Medem a funcionalidade entregue ao usuário, independentemente da forma de implementação •Independem de plataforma ou linguagem de programação •Independem do estilo de programação utilizado •Permitem comparações entre empresas, linguagens, etc. O padrão ISO/IEC 14143-1:1998 trata da definição dos conceitos referentes às medidas funcionais de tamanho de software Algumas Medidas Funcionais de Tamanho •Pontos de Função do IFPUG do International Function Point Users Group •Mark II Function Points de Charles Symons •Full Function Points (Cosmic) de Alain Abran •3D Function Points da BOEING •Bang de Tom DeMarco Pontos de Função •Medem o software através da quantificação da funcionalidade solicitada e adquirida pelo cliente, tendo como base primária o projeto lógico •Medem o desenvolvimento e manutenção de software independentemente da tecnologia utilizada na implementação •Medem o desenvolvimento e manutenção de software consistentemente em todos os projetos e organizações Pontos de Função Entrada Externa Saída Externa Consulta Externa Arquivos de Aplicativo Sendo Considerado Interface Externa Arquivo Lógico Interno Entrada Externa Saída Externa Consulta Externa Outros Aplicativos © Copyright 1999. International Function Point User Group 1999 Gerenciando Mudanças nos Requisitos Aplicativo Entregue Projeto Funcional Requisitos 100 PFs 120 PFs Tela de entrada do código do estado alterada (3 PFs) Acrescentado arquivo interface A (10 PFs) Consulta a A e ao código do estado acrescentadas (7 PFs) Projeto Detalhado 130 PFs • Nova tabela legal acrescentada (10 PFs) 135 PFs • Relatório resumo incluído (5 PFs) Impacto Esforço Cronograma Custo + 1 mês + 2 semanas + $5000 + 0.5 meses + 2 semanas + $2500 + 0.25 meses + 2.5 dias + $1250 © Copyright 1999. International Function Point User Group 1999 Produzindo Estimativas Estimativa Para o Projeto Baseada em Dados Históricos e/ou Ferramenta Tamanho em PF Variáveis do Projeto Projeto A – 100 PFs • • • • On-line/database Novo desenvolvimento C++ Desenvolvedores altamente experientes Esforço = 5 meses Cronograma = 3 meses Custo (a $5000) = $25000 KLOC = 6 Defeitos Entregues = 25 Produtividade = 20 PF/Mês. Projeto B – 100 PFs • • • • Batch Melhoria Cobol Desenvolvedores medianamente experientes Esforço = 20 meses Cronograma = 6 meses Custo (a $5000) = $100000 KLOC = 10 Defeitos Entregues = 100 Produtividade = 5 PF/Mês © Copyright 1999. International Function Point User Group 1999