Estimando Esforço de Projetos de Software utilizando pontos de Função Carlos Antônio Menezes de Albuquerque [email protected] Recife, Julho de 2003 Agenda Métricas Histórico Objetivos Vantagens Etapas Exemplo Estimativas Desvantagens e limitações Comparações “Não se pode controlar aquilo que não se consegue medir” Tom DeMarco¹ ¹ Tom DeMarco, Controlling Software Projects, Yourdon Press, 1982. Métricas Não Funcionais x Funcionais • Linha de Código (LOC) - Medida não funcional de tamanho • Ponto de Função (PF) - Medida funcional de tamanho Histórico • Allan Albrecht da IBM, em uma conferência da Guide/Share (1979) • Refinados em uma metodologia formal e publicados no domínio público (1984) • Grupo Internacional de Usuários de Pontos de Função (1986) – Manual de Práticas de Contagem (CPM, atualmente na versão 4.1) • Criação de um grupo de trabalho na ISO sobre Medidas Funcionais de Tamanho (1994) • Padrão Internacional ISO/IEC 20926 (2002) Objetivos • Medição de Funcionalidade de Sistemas de acordo com a perspectiva do usuário • Comparação da produtividade entre ambientes de desenvolvimento (P=PF/Esforço) • Melhoria de estimativas de projetos de desenvolvimento de softwares • Criação de uma unidade padrão de medida de software Vantagens • Transparência para o usuário final • Estimar os prazos e custos de desenvolvimento e manutenção mais precisamente • Melhorar a qualidade dos contratos de terceirização • Ajudar a entender o aumento do escopo (Comparação durante o ciclo de vida do Projeto) • Relacionamento com outras métricas(ex. Defeitos por PF) Etapas 1. Identificar as funções do sistema. 2. Classificar cada função quanto à complexidade funcional relativa como: simples, média ou complexa. 3. Calcular os Pontos de Função brutos através da aplicação dos pesos de acordo com a tabela específica 4. Avaliar as 14 características gerais do sistema 5. Determinar o Fator de Ajuste 6. Calcular os Pontos de Função ajustados. Etapas • Determinar o Tipo de Contagem – – – • • Identificar fronteiras da Aplicação(Quais as funções que o software deve executar?) Contar os tipos de Funções de Dados – – • Desenvolvimento Aplicação Melhoria ALI (Arquivo Lógico Interno) AIE (Arquivo de Interface Externa) Contar os tipos Funções de Transação – – – EE (Entrada Externa) SE (Saída Externa) CE (Consulta Externa) Funções de Dados • ALI (Arquivo Lógico Interno) – – – – • Entidade lógica e persistente Manter os dados que sofrem manutenção Dentro da Fronteira da Aplicação Equivale à um Depósito de Dados em um DFD ou à uma entidade em um MER. AIE (Arquivo de Interface Externa) – – – Entidade lógica e persistente Mantido dentro da fronteira de outra aplicação Um AIE contado por uma aplicação deve ser um ALI em outra aplicação. Tabela ALI Tipos de Registro Lógico Campos de Dados 1 - 19 20 - 50 51 + 1 S S M 2- 5 S M C 6+ M C C Funções de Transação • EE (Entrada Externa) – – – Processo lógico do negócio que mantém os dados em um ou mais arquivos lógicos internos Contada com base no número de campos de dados do usuário envolvidos e na soma dos ALI e AIE participantes do processo Um exemplo de EE seria"Incluir empregado" em um aplicativo de recursos humanos Funções de Transação • SE (Saída Externa) – – • é um processo lógico do negócio que gera dados para um usuário ou para outro aplicativo externo ao software Exemplos típicos de saídas externas incluem relatórios de usuários, disquetes ou fitas CE(Consulta Externa) – – Consiste em um par gatilho-resposta (ou pergunta-resposta) através do qual a pergunta ou solicitação de dados entra no aplicativo vinda de fora(Geralmente usuário ou outro Aplicativo) O processamento lógico não contém nenhuma fórmula matemática ou cálculo, ou cria dados derivados, o comportamento do sistema não é alterado. Componentes Pontos de Função Brutos • Identificação dos Pontos de Função Brutos Tipo de Função Baixa Média Alta EE 3x 4x 6x SE 4x 5x 7x CE 3x 4x 6x ALI 7x 10x 15x AIE 5x 7x 10x Fator de Ajuste • Fator de Ajuste de Valor (FAV) – Passo final na contagem de pontos de função – Avalia restrições de negócio adicionais do software não consideradas pelos cinco tipos de funções. – Todas as funções avaliadas na contagem de Pontos de Função são funções do software – Baseado na influência de 14 Características Gerais do Sistema Caracteristicas Gerais • É atribuída uma nota de 0 à 5 às Características Gerais do Sistema chamada (nenhuma influência, influência incidental, moderada, média, significante, essencial) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Comunicação de Dados Processamento de Dados Distribuído (Funções Distribuídas) Performance Configuração do equipamento Fórmula de Cálculo: Volume de Transações 14 Entrada de Dados On-Line NI(total) = i=1 NI Interface com o usuário FAV = 0,65 + ( 0,01 X Atualização On-Line Processamento Complexo (0,65 <= Reusabilidade PF = FAV X PFB Facilidade de Implantação Facilidade Operacional Múltiplos Locais Facilidade de mudanças NI) Fa <= 1,35) Exemplo • Calcule os pontos de função para um sistema que faça um Cadastro de Clientes onde é possível tirar uma listagem por ordem alfabética e exportar o cadastro para outro sistema através de um arquivo texto. Contagem: ALI = 01 (Arquivo de Clientes) AIE = 0 SE = 01 (Listagem por ordem alfabética) EE = 01 (Processo de inclusão) CE = 01 (Arquivo Texto) Exemplo • Todos os tipos de função podem ser considerados de complexidade BAIXA nesse exemplo. PFB = ALI x 7 + AIE x 5 + EE x 3 + SE x 4 + CE x 3 = 1 x 7 + 0 x 5 + 1 x 3 + 1 x 4 + 1 x 3 = 17 • Contado-se os fatores de ajuste segundo os níveis de influência temos: FAV = (45 * 0,01) + 0,65 = 1,1 (Pontos de Função ajustados) PF = FAV x PFB = 1,1 x 17 = 18,7 Estimativas O que fazer agora? • • • Pouco frustrante para empresas recém-criadas Comparar com projetos anteriores, planejar e estimar melhor o novo desenvolvimento Obtendo o número de Pontos de Função pode-se estimar o esforço de projeto por fases de desenvolvimento Estimativas Maculêlê Software • Imaginemos um projeto no qual obtemos um total de 100 PF • Numa fase que utilize 20% do Projeto • Numa equipe de 4 pessoas • Considerando uma produtividade média de 20hs/PF • Considerando uma jornada de 6 horas diárias • Considerando um valor de R$35,00 o valor de 1 Hora de Trabalho Estimativas • • • • 20% de 100 PF = 20 PF Esforço - 20hs/PF então: 20hs/PF x 20PF = 400h Prazo - 400h/ (4 x 6) = 16,7 Dias Custo - 400h x R$ 35,00 = R$ 14.000,00 Certificação • CFPS – Certifield Function Point Specialist: é a certificação conferida pelo International Function Point Users Group às pessoas aprovadas no exame de certificação Empresa • SERPRO – – – Gerência de subcontratação de software Seleção de fornecedores baseado em estimativas por pontos de função Acompanhamento do projeto Planejado x Realizado Limitações e Desvantagens • • • • • Para ter uma boa utilização é necessária uma base histórica É necessário ter uma boa visão(Profundidade do sistema para poder estimar com menos insegurança) Não é muito boa para medir esforço de manutenção (Correção de problemas) Utilização de pesos para definir a classificação das funções Várias variações das métricas, é preciso saber qual a versão da métrica, quando se vai medir tamanho do software Comparações Características Linha de Código Software Science Cocomo Feature Points Putman Pontos por Função 1. Produção de resultados aceitáveis sim sim sim sim sim sim 2. Avaliação por usuários sem conhec. da ling. programação não não não não não sim 3. Significado para o Usuário final não não não sim não sim 4. Utilizado em estimativas sim não sim sim sim sim 5. Contabilização automática sim sim sim sim sim sim Análise de Pontos por Função para Aplicações Orientadas a Documentos - DOUGLAS JOSÉ PEIXOTO DE AZEVEDO Dúvidas? Referências •International Function Point Users Group http://www.ifpug.org/ •BFPUG Brazilian Function Point Users Group http://www.bfpug.com.br/ •Análise de Pontos por Função para Aplicações Orientadas a Documentos - DOUGLAS JOSÉ PEIXOTO DE AZEVEDO •IT Measurement: Practical Advice from the Experts, IFPUG, Ed Yourdon – Com publicação de um trabalho do Márcio Silveira PUCRJ •Function Point Analisys, David Garmus, Addison-Wesley