1. C A R L O S A U G U S T O D E S O U Z A L I M A
J O S É C O R R Ê A V I A N A
Análise por Pontos de Função
APF
2. OBJETIVOS
Medir funcionalidade do sistema de acordo com a
perspectiva do usuário;
Medir o desenvolvimento e manutenção do software
independente da tecnologia utilizada;
Comparar a produtividade entre diferentes ambientes de
desenvolvimento (P=PF/Esforço);
Prover uma forma para estimativa de software;
Fornecer um padrão para medição de software;
3. BENEFÍCIOS
Auxilia na análise Make or buy;
Apóia no gerenciamento do projeto de escopo
(aumento ou diminuição do escopo);
Completa o gerenciamento de requisitos (torna-se
mais sólido e completo);
Meio para fundamentar a negociação de contratos.
5. ETAPA 1: DETERMINAR O TIPO DE CONTAGEM
Existem três tipos de contagem:
Contagem de um projeto de desenvolvimento: usado para a
primeira instalação do software, um novo software;
Contagem de um projeto de melhoria: contagem para
manutenção, exclusão, alteração ou inclusão de
funcionalidades (CRUD);
Contagem de uma aplicação (ou baseline): mede a
funcionalidade de uma aplicação já instalada, fornecendo uma
medida atual da funcionalidade obtida pelo usuário da
aplicação.
6. ETAPA 2: IDENTIFICAR O ESCOPO DA CONTAGEM E A
FRONTEIRA DA APLICAÇÃO
Escopo da Contagem
Define a funcionalidade que será incluída em uma particular
contagem de pontos de função;
Define quais funções serão incluídas na contagem, podendo
abranger:
Todas as funcionalidades disponíveis;
Apenas as funcionalidades efetivamente utilizadas pelo usuário;
Algumas funcionalidades específicas;
Se abrangerá um ou mais sistemas ou apenas parte de um sistema.
7. ETAPA 2: IDENTIFICAR O ESCOPO DA CONTAGEM E A
FRONTEIRA DA APLICAÇÃO
Fronteira da Aplicação
Define o que é externo à aplicação;
Interface conceitual entre a aplicação “interna” e o mundo
“externo” do usuário;
Dependente da visão de negócio do usuário;
Independente de considerações tecnológicas.
8. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Arquivo Lógico Interno (ALI):
Grupo de dados ou informações de controle;
Identificáveis pelo usuário;
Mantidos dentro da fronteira de aplicação;
A principal intenção de um ALI é armazenar dados mantidos
por meio de um ou mais processos elementares da aplicação.
9. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Arquivo de Interface Externa (AIE):
Grupo de dados ou informações de controle;
Identificáveis pelo usuário;
Mantido dentro da fronteira de outra aplicação (referenciado pela
aplicação);
A principal intenção de um AIE é armazenar dados referenciados por
meio de um ou mais processos elementares dentro da fronteira da
aplicação;
Um AIE deve ser um ALI de outra aplicação.
10. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Passo Ação Como Fazer
1 Identificar os ALI’s Aplicar as regras de identificação de
ALI’s
2 Identificar os AIE’s Aplicar as regras de identificação de
AIE’s
3 Determinar a complexidade
dos ALI’s e AIE’s e suas
contribuições
Seguir os procedimentos para calcular
a complexidade e a contribuição para
contagem não ajustada de pontos de
função
11. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Tabela de complexidade funcional dos ALI e AIE:
Um ALI contendo 45 tipos de dados e 1 tipo de registro é
de complexidade baixa e outro AIE contendo 55 tipos de
dados e 1 tipo de registro é de complexidade média.
####### < 20 20 – 50 > 50
1 Baixa Baixa Média
2 - 5 Baixa Média Alta
> 5 Média Alta Alta
Tipos de dados
TiposdeRegistros
12. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Cada ALI ou AIE deve ser classificado de acordo com
sua complexidade, com base em:
Número de Tipos de Dados (TD);
Número de Tipos de Registros (TR);
13. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Determinação da Contribuição dos PF não ajustados:
Tipo de Função Baixa Média Alta
Arquivo Lógico Interno (ALI) 7 PF 10 PF 15 PF
Arquivo de Interface Externa (AIE) 5 PF 7 PF 10 PF
14. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Tipos de Dados: são campos reconhecidos pelo usuário como únicos e
não repetidos, incluindo atributos de chave estrangeira, mantidos no
arquivo.
Tipos de Registros: são subgrupos de dados contidos dentro de um ALI
ou AIE. Subgrupos são tipicamente representados em um DER como
entidades de Subtipos. São classificados em:
Opcionais: usuário tem a opção de não informar no processo
elementar que cria ou adiciona dados ao arquivo;
Obrigatórios: usuário requer que sejam sempre utilizados para criar
ou adicionar dados ao arquivo
15. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
Exemplo entidade de Subtipos:
Designam entidades cujas ocorrências herdam atributos de
uma super-entidade e que possuem atributos específicos às
ocorrências dessa mesma sub-entidade;
Endereço Comercial e Endereço Residencial são Subtipos
de Endereço (que é um Supertipo).
Endereço
Endereço
Comercial
Endereço
Residencial
16. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
EXEMPLO
Exemplo:
CD de Música;
CD: Cantor, Grupo, Gravadora, Nome, Data e Músicas;
Música: Nome da Música, Compositor e Tempo de Duração;
ALI: 1 (O CD de música);
Tipo de Dado (TD): 9 (Campos únicos) ;
Tipo de Registro (TR): 2 (Grupo CD e Grupo Música).
17. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
EXEMPLO
Exemplo:
Pessoa (AIE): matrícula, nome, senha criptografada e tipo
(gerente ou trabalhador);
Apontamento (ALI): matrícula, data, horário de entrada,
horário de saída;
Justificativa (ALI): matrícula, data, texto.
Descrição Tipo TD TR Complexidade
Pessoa AIE 4 1 BAIXA
Apontamento ALI 4 1 BAIXA
Justificativa ALI 3 1 BAIXA
Controle de Ponto – Análise de Pontos de Função – pág. 96
18. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
EXEMPLO
Porque complexidade baixa? Lembre-se da tabela de
complexidade:
###### < 20 20 – 50 > 50
1 Baixa Baixa Média
2 - 5 Baixa Média Alta
> 5 Média Alta Alta
Tipos de dados
TiposdeRegistros
Descrição Tipo TD TR Complexidade
Pessoa AIE 4 1 BAIXA
Apontamento ALI 4 1 BAIXA
Justificativa ALI 3 1 BAIXA
19. ETAPA 3: CONTAGEM DAS FUNÇÕES DE DADOS
EXEMPLO
Tipo de Função Complexidade
Funcional
Totais por Tipo
de
Complexidade
Totais por Tipo
de Função
ALI 2 (BAIXA) x 7
0 (MÉDIA) x 10
0 (ALTA) x 15
= 14
= 0
= 0
14
AIE 1 (BAIXA) x 5
0 (MÉDIA) x 7
0 (ALTA) x 10
= 5
= 0
= 0
5
Tipo de Função Baixa Média Alta
Arquivo Lógico Interno (ALI) 7 PF 10 PF 15 PF
Arquivo de Interface Externa (AIE) 5 PF 7 PF 10 PF
Utilização da Tabela de Contribuição para chegar ao total de PF não ajustados
20. CONTAGEM DAS FUNÇÕES DE DADOS NÃO AJUSTADOS
EXEMPLO
• Internal Logical File (ILF): Arquivo Lógico Interno (ALI);
•External Interface File (EIF): Arquivo de Interface Externa (AIE).
21. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Representam a funcionalidade fornecida ao usuário
para atender às suas necessidades de
processamentos de dados pela aplicação.
São classificadas em:
Entradas Externas (EE);
Saídas Externas (SE);
Consultas Externas (CE).
22. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Entradas Externas (EE):
Processo elementar;
Processa dados ou informações de controle recebidos de fora
da fronteira de aplicação;
Principal intenção é manter (incluir, alterar ou excluir dados)
um ou mais ALI e/ou manter o comportamento do sistema.
23. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Entradas Externas (EE) – Exemplos:
Transações que recebem dados externos utilizados na
manutenção de ALI’s;
Janela que permite adicionar, excluir ou alterar registros
arquivos contribui com 3 entradas externas.
25. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Saída Externa (SE):
Processo elementar;
Envia dados ou informações de controle para fora da fronteira de
aplicação;
Principal intenção é apresentar informação para o usuário através de
lógica de processamento, ou seja, conter ao menos uma fórmula
matemática ou cálculo;
Criar dados derivados;
Manter um ou mais ALI’s e/ou alterar o comportamento do sistema.
26. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Saída Exerna (SE) – Exemplos:
Relatórios com totalização de dados;
Consultas com cálculos ou apresentação de dados derivados;
Informações em formato gráfico;
28. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Consulta Externa (CE):
Processo Elementar;
Envia dados ou informações de controle para fora da fronteira da aplicação;
Apresentar informação ao usuário por meio de uma simples recuperação de
dados ou informações de controle de ALI’s ou AIE’s;
A lógica de processamento não contém fórmulas matemáticas ou cálculos;
Não cria dados derivados;
Não altera o comportamento do sistema.
29. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Consulta Externa (CE) – Exemplos:
Informações em formato gráfico;
Menus gerados dinamicamente com base em configuração da
aplicação.
31. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
TERMOS UTILIZADOS
Processo Elementar: menor quantidade de
unidade significativa para o usuário final;
Inclusão, alteração, consulta e exclusão são os mais aplicados;
Regras de negócio podem alterar um registro;
“Alterar dados” por exemplo; pode contemplar os vários
processos de negócios existentes.
32. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
TERMOS UTILIZADOS
Informação de Controle: dados que influenciam um
processo elementar da aplicação que está sendo
controlada;
Especificam o quê, quando ou como os dados devem ser
processados; são parâmetros;
Exemplos:
O quê: determinado campo especifica que o cálculo da parcela deve
contemplar somente o valor vencido ou o valor corrigido com juros e
multa;
33. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
TERMOS UTILIZADOS
Quando: Uma enquete pode ter um fechamento automático
(votações finalizadas) definido pela data de seu encerramento;
Como: durante a compra de uma passagem aérea, o cliente informa
em um campo como deseja receber a confirmação da compra: por e-
mail, torpedo SMS ou fax.
Em uma loja de comércio eletrônico, a operação de
compra possui uma informação de controle – forma de
pagamento – que determina como o processo ocorrerá:
emissão de boleto, débito na conta ou cartão de crédito;
Cada forma de pagamento possui um tratamento
diferenciado.
34. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
TERMOS UTILIZADOS
Dado Derivado: Informação criada a partir de dados
existentes, gerado através de ALI ou AIE;
Dado apresentado pelo sistema, porém não está
armazenado em um arquivo lógico;
Criado através de uma lógica de processamento, como
cálculo por exemplo;
Total de faturamento, tempo médio entre falhas,
participação em % de um produto em uma venda.
35. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
TERMOS UTILIZADOS
Lógica de Processamento:
37. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Determinação da Complexidade:
Cada EE, SE ou CE é classificada em relação à sua
Complexidade baseado no número de Arquivos Referenciados
(AR) e no número e Tipos de Dados (TD);
Determinadas as quantidades de AR’s e TD’s sua complexidade
pode ser medida pelas seguintes tabelas:
38. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
< 5 5 – 15 > 15
< 2 BAIXA BAIXA ALTA
2 BAIXA MÉDIA ALTA
> 2 MÉDIA ALTA ALTA
Arquivos
Referenciados
(AR’s)
Tipos de Dados (TD’s)
< 5 5 – 15 > 15
< 2 BAIXA BAIXA ALTA
2 BAIXA MÉDIA ALTA
> 2 MÉDIA ALTA ALTA
Arquivos
Referenciados
(AR’s)
Tipos de Dados (TD’s)
Tabela de complexidade para entradas externas (EE’s)
Tabela de complexidade para saídas externas (SE’s) e consultas extenas (CE’s)
39. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Arquivo Referenciado (AR)
É um ALI lido ou mantido pela função do tipo de transação;
OU
AIE lido pela função do tipo de transação.
• Tipo de Dado (TD): Campo único, reconhecido pelo
usuário, não repetido.
40. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Após a determinação da complexidade, se calcula a
contribuição através da seguinte tabela:
TIPO DE FUNÇÃO BAIXA MÉDIA ALTA
Entrada Externa (EE) 3 PF 4 PF 6 PF
Saída Externa (SE) 4 PF 5 PF 7 PF
Consulta Externa (CE) 3 PF 4 PF 6 PF
Tabela de contribuição dos pontos de função não ajustados das funções do tipo de transação
41. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Exemplo de contribuição de Funções do Tipo de
Transação:
Tipo de
Função
Complexidade
Funcional
Totais por Tipo
de
Complexidade
Totais por Tipo
de Função
EE
2 (BAIXA) x 3
2 (MÉDIA) x 4
0 (ALTA) x 6
= 6
= 8
= 0
14
SE
1 (BAIXA) x 4
2 (MÉDIA) x 5
0 (ALTA) x 7
= 4
= 10
= 0
14
CE
1 (BAIXA) x 3
0 (MÉDIA) x 4
0 (ALTA) x 6
= 3
= 0
= 0
3
42. ETAPA 4: CONTAGEM DAS FUNÇÕES TRANSACIONAIS
Observa-se que as EE contribuem com 14 pontos de
função não ajustados para a aplicação, as SE com 14
pontos de função não ajustados e as CE com 3 pontos
de função não ajustados.
45. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
O Valor de Fator de Ajuste é baseado em 14
características gerais de sistema (CGS):
1. Comunicação de Dados;
2. Processamento de Dados Distribuído (Funções
Distribuídas);
3. Performance;
4. Configuração do equipamento;
5. Volume de Transações;
6. Entrada de Dados On-Line;
7. Interface com o usuário;
8. Atualização On-Line;
9. Processamento Complexo;
10. Reusabilidade;
11. Facilidade de Implantação;
12. Facilidade Operacional;
13. Múltiplos Locais;
14. Facilidade de mudanças.
46. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
Cada característica possui um nível de influência
sobre a aplicação que pode variar de um intervalo de
0 a 5:
0. Nenhuma influência;
1. Influência Mínima;
2. Influência Moderada;
3. Influência Média;
4. Influência Significativa;
5. Grande Influência.
47. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
O Valor Fator de Ajuste (VFA) é calculado pela
fórmula:
VFA = (TDI x 0,01) + 0,65
TDI = somatório dos níveis de influência das
características gerais
48. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
Exemplo: Em um sistema apurou-se que o nível de
influência de cada uma das características gerais é o
seguinte:
CGS Peso
Comunicação de Dados 5
Processamento
Distribuído
2
Performance 2
Configuração Altamente
Utilizada
2
Volume de Transações 2
Entrada de Dados Online 5
Eficiência do Usuário
Final
2
CGS Peso
Atualização Online 5
Complexidade de
Processamento
2
Reusabilidade 0
Facilidade de
Instalação
1
Facilidade de
Operação
2
Múltiplos Locais 2
Facilidade de
Mudanças
2
49. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
Logo, o nível de influência será: TDI = 34.
E o fator de ajuste: VAF = (34 x 0,01) + 0,65 = 0,99.
50. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
Fórmula para contagem inicial da aplicação:
AFP = ADD x VAF
AFP: Valor dos pontos de função ajustados;
ADD: Valor total dos Pontos de Função não ajustados;
VAF: Valor do fator de ajuste da aplicação.
51. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Calcule os pontos de função para um sistema que mantém
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
EE = 01 (Processo de inclusão)
SE = 01 (Listagem por ordem alfabética)
CE = 01 (Exportação de Arquivo Texto)
52. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Nesse exemplo considera-se que todos os tipos de
função tem complexidade BAIXA;
ADD = 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 (Pontos de função não ajustados)
53. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Contado-se os fatores de ajuste segundo os níveis
de influência temos, considerando-se TDI
(somatório) = 45, temos:
VAF = 0,65 + (0,01*45 ) = 1,1 (Fator de Ajuste)
AFP = VAF x ADD = 1,1 x 17 = 18,7
54. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Estimando custo, tempo e prazo:
Produtividade no desenvolvimento = Horas por PF
Esforço de desenvolvimento = Produtividade(H/PF) *
Tamanho(PF)
Custo de software = Tamanho (PF) * Custo(R$/PF)
55. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
1. Considerando que uma produtividade média de 10 hrs
/ PF;
2. Considerando que a média de jornada de trabalho é de
6 horas;
Possuem 4 pessoas alocadas ao desenvolvimento da
aplicação;
3. Considerando que o valor de uma hora de trabalho é
de R$ 25,00.
56. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Concluímos que :
Esforço = 10hs / PF = 10 x 18,7 = 187 horas
Prazo = 187 h / ( 4 x 6 ) = 7,8 dias
Custo = 187 h x R$ 25,00 = R$ 4.675,00
57. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Algumas aplicações da APF:
Produtividade no desenvolvimento: Horas por PF
Esforço de desenvolvimento: Produtividade (H/PF) * Tamanho
(PF)
Custo de software: Tamanho (PF) * Custo (R$/PF)
Taxa de produção de software: PF/Mês; PF/Ano
Taxa de manutenção de software: PF manutenção / PF aplicativo
58. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Influências:
Linguagem de codificação;
Tamanho do sotware;
Exeperiência da equipe;
Métodos estruturados;
Ambiente de desenvolvimento;
Qualidade de expansão/manutenção;
Reutilização de código;
Métodos de remoção de erros;
Organização da equipe.
59. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Vantagens:
Uma ferramenta para determinar o tamanho de um pacote de aplicação comprado contando
todas as funções incluídas no pacote;
Uma ferramenta para ajudar os usuários a determinar o benefício de um pacote de aplicação
para a sua organização contando funções que especificamente atendam seus requisitos;
Uma ferramenta para medir as unidades de um produto de software para apoiar a análise de
qualidade e produtividade;
Um veículo para calcular custos e recursos requeridos para desenvolvimento e manutenção de
software;
Um fator de normalização para comparação de softwares.
60. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
Limitações e/ou 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 mais segurança);
Utilização de pesos para definir a classificação das
funções.
61. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
International Function Point Users Group:
http://www.ifpug.org/
IFPUG -Function Point Counting Practices Manual
BFPUG Brazilian Function Point Users Group:
http://www.bfpug.com.br/
“Análise de Pontos de Função – Medição, Estimativas e
Gerenciamento de Projetos de Software”, Carlos Eduardo
Vazquez
http://www.analisetotal.hpg.ig.com.br/Material/APFTexto.pdf
www.cin.ufpe.br/~if720/slides/Pontos-de-funcao.ppt
62. ETAPA 5: DETERMINAR O FATOR DE AJUSTE
EXEMPLO
OBRIGADO!
Carlos Augusto de Sousa Lima:
carloslima_2008@hotmail.com
José Corrêa Viana
jcorreavian@hotmail.com