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
Download

Estimando Esforço de Projetos de Software