1. O documento apresenta a técnica de Pontos de Função para estimativa e medição de projetos de software.
2. A técnica envolve contar as funções do software, divididas em funções de dados e transações, e atribuir pesos de acordo com a complexidade para calcular os Pontos de Função.
3. Os Pontos de Função podem ser usados para estimar o tamanho, custo e esforço de projetos de software de forma independente da tecnologia.
1. 1
Estimativas e Medição em
Projeto de Software
Métrica com Pontos de
Função (PF)
Cláudio Roberto Martins
claudiomartins2000@gmail.com
Gerência de Projetos de Informática
2. 2
Objetivos
• Apresentar os conceitos de Estimativas e
Medição em Projeto de Software
• Apresentar a técnica de Pontos de
Função para estimativa de medição de
projeto de software.
3. 3
O problema
• Dado um projeto de desenvolvimento de
software, estabelecer:
– Tamanho e perfil da equipe
– Prazos
– Custos
4. 4
Conceitos Básicos
• Métrica
– Uma medida quantitativa do grau que um sistema,
componente, ou processo possui um
determinado atributo (IEEE Std 610.12-1990).
– As métricas vão permitir que um processo ou um
produto do ciclo de desenvolvimento de um
sistema seja analisado da mesma forma que um
objeto físico pode ser caracterizado através do
seu tamanho, cor ou peso.
5. 5
Métricas de Projeto
• Primeiro uso: nas estimativas
• Após: monitoração e controle
• Objetivo:
– minimizar (e prever) o prazo de desenvolvimento
– medir a qualidade do produto
6. 6
Métricas de Projeto
• Cada projeto deve medir:
– Entradas (recursos, pessoal, ambiente),
– Saídas (medida dos produtos intermediários
durante o processo de Eng.Software), e
– Resultados (indicam a efetividade dos
produtos finais)
7. 7
Tipos de Medidas
• Medidas diretas (Ex: comprimento do
parafuso), e
• Medidas indiretas (Ex: qualidade dos
parafusos produzidos).
8. 8
Medidas Em Relação ao Software...
• Diretas - linhas de código (LOC)
produzidas, velocidade de execução,
defeitos relatados.
• Indiretas: funcionalidade, qualidade,
complexidade, confiabilidade,
manutenibilidade.
9. 9
Métricas Orientadas a Tamanho
• Consideram o tamanho do software
produzido.
• Referem-se a todas as atividades da
Engenharia (análise, projeto, codificação,
teste).
– Ex: Linhas de código (LOC)
10. 10
Linhas de código (LOC)
• Cada projeto pode obter as seguintes
métricas a partir das linhas de código:
– Erros por KLOC (K = milhares)
– Defeitos por KLOC
– $ por LOC
– Páginas de documentação por KLOC
– Erros por pessoa/mês
– LOC por pessoa/mês
– $ por pagina de documentação
12. 12
Linha de Código - Observações
• Não é muito utilizada como parâmetro de
estimativa, pois requer um nível de
detalhes difícil de alcançar:
– Padronização na forma de codificar
– Manter apenas uma linguagem de
programação
– Não diferencia linhas de código geradas por
ferramentas CASE daquelas criadas
manualmente
13. 13
Métricas Orientadas por Função
• Consiste em um método para medição de software do
ponto de vista do usuário
• Tem a funcionalidade como fator de normalização.
• Dimensiona um software, quantificando a funcionalidade
proporcionada ao usuário a partir do seu desenho
(projeto) lógico e não dos detalhes de implementação.
• A medida é PONTO por FUNÇÃO (FP – Function
Point).
– Pontos de Função (FP) definem uma relação empírica baseada
em medidas de contagem do domínio de aplicação do software
(requisitos) e à avaliação da complexidade do software.
14. 14
Objetivo da análise de PF
• A análise considera as várias formas com que
os usuários interagem com o sistema, com os
seguintes objetivos:
1. Fornecer medidas consistentes;
2. Medir funcionalidades que o usuário solicita ou
recebe;
3. Independência da tecnologia;
4. Método simples.
15. 15
O Processo de Contagem de PF
1
Determinar tipo
de Contagem
2
Identificar escopo da contagem
e fronteira da aplicação
3.1
Contar funções do
tipo dados
3.2
Contar funções do
tipo transação
4
Totalizar PF não
ajustados (3.1 + 3.2)
5 (opcional)
Determinar valor do
fator de ajuste
6
Calcular os PF
ajustados (5 + 4)
16. 16
Elementos da contagem de PF
Fronteira da
Aplicação
Entradas Externas
(EE)
Consultas Externas
(CE)
Arquivos de
Interfaces
Externas
(AIE)
Saídas Externas
(SE)
Arquivos Lógicos
Internos
(ALI)
17. 17
Tipo de Contagem
• São três:
– Contagem de um projeto de desenvolvimento
(incluindo migração)
– Contagem de um projeto de melhoria
– Contagem de uma aplicação em produção
(ou baseline)
18. 18
Escopo da Contagem
• O escopo define se a contagem
abrangerá um ou mais sistemas ou
apenas parte de um sistema.
• Por exemplo:
– Todas as funcionalidades disponíveis
– Apenas as funcionalidades efetivamente
utilizadas pelo usuário
– Apenas algumas funcionalidades específicas
(relatórios, transações cadastrais, etc.)
19. 19
Fronteira da Aplicação
• É a interface conceitual que delimita o
software que será medido e o mundo
exterior (os atores de interface)
– Ator = pessoa ou sistema que interage com a
aplicação, recebendo ou enviando dados
20. 20
Algumas regras para identificar as
fronteiras
• Deve ser feita com base no Ponto de Vista do
Usuário (que ele pode entender e descrever)
• Baseada na separação das funções relacionadas
pelos processos do negócio, não considerando
tecnologias (banco de dados, p. ex.)
• Obter a documentação do sistema
• Verificar como os grupos de dados são mantidos
• Identificar as entidades (dados) e processos
(casos de uso, por exemplo)
21. 21
Funções do Tipo Dado
• Representam a funcionalidade oferecida
ao usuário para cumprir requisitos de
dados
• Podem ser de dois tipos:
– Arquivo Lógico Interno (ALI)
– Arquivo de Interface Externa (AIE)
• O nome “arquivo” refere-se a grupos de dados
logicamente correlatos e não à sua implementação
física
22. 22
Arquivo Lógico Interno (ALI)
• Um grupo lógico de dados ou de informações de
controle, identificável pelo usuário, mantido
dentro da fronteira da aplicação que está sendo
contada.
• Armazena dados mantidos por um ou mais
processos (transações) da aplicação em
questão.
– Ex: tabelas de banco de dados atualizadas pela
aplicação (não considerar chaves primárias do tipo
identificador, como “id” ou “seqüência”).
23. 23
Arquivo de Interface Externa (AIE)
• Um grupo lógico de dados ou informações de
controle, identificável pelo usuário, mantido fora
da fronteira da aplicação que está sendo
contada.
• Exemplos:
– tabelas de banco de dados lidas pela aplicação, mas
mantidas por outra
– Arquivos externos (gerados externamente)
– Mensagens de dados (em um protocolo) gerados
externamente
24. 24
Atribuindo complexidade a um ALI/AIE
• Identificar os TERs e TEDs
– TER – Tipo de elemento de registro
• Subgrupo de dados dentro de um ALI/AIE
reconhecível pelo usuário
– TED – Tipo de elemento de dado
• Campo único, não repetitivo e reconhecível pelo
usuário
27. 27
Funções de transação
• Representam a funcionalidade oferecida
ao usuário para processar dados da
aplicação
• Podem ser de três tipos:
– Entrada Externa (EE)
– Saída Externa (SE)
– Consulta Externa (CE)
28. 28
Entrada Externa (EE)
• Cada transação de entrada é contada.
• A transação deve atualizar uma base de
dados com inclusão, alteração ou
exclusão.
– Transação pode ser interpretada como uma
rotina/processo que executa um conjunto de
ações atômicas que produz um resultado
visível e de valor ao usuário do sistema.
– Pode ser mapeado em telas, formulários (em
janelas), páginas, etc.
29. 29
Saída Externa (SE)
o Relatórios, telas, mensagens de erros e
qualquer processo que é visível
externamente ao sistema (caso de uso).
o Deve obrigatoriamente calcular ou criar
dados derivados como detalhes de
subtotais, arquivos intermediários internos
ou alterar o resultado do comportamento
do sistema.
30. 30
Consulta Externa (CE)
o É uma funcionalidade de consulta
simples, que através de uma solicitação
do usuário (uma entrada on-line), resulta
na geração de uma resposta imediata sob
a forma de uma saída on-line.
o Exemplo: consulta ao cadastro de
clientes.
31. 31
Atribuindo complexidade a uma Função
de Transação
• Identificar os TARs e TEDs
– TAR – Tipos de arquivos referenciados
• Quantidade de ALI/ AIE mantidos (exceto CE) ou
referenciados pela função de transação
– TED – Tipos de elementos de dados
• Campos reconhecíveis pelo usuário, que cruzam a
fronteira da aplicação durante a função de
transação
32. 32
Tabela de referência - Complexidade de
EE’s
Pontuação
• Para cada Entrada Externa será atribuído um número de Pontos de
Função, de acordo com a sua complexidade funcional relativa:
– BAIXA (SIMPLES COMPLEXIDADE): 3 (três) Pontos por Função;
– MÉDIA COMPLEXIDADE: 4 (quatro) Pontos por Função;
– ALTA (COMPLEXA): 6 (seis) Pontos por Função.
33. 33
Complexidade de Saídas Externas
ITENS DE DADOS REFERENCIADOS (TED)
Nº DE ARQUIVOS
REFERENCIADOS
(TAR)
1 A 5 6 A 19 20 OU MAIS
Apenas 1 SIMPLES SIMPLES MÉDIA
De 2 ou 3 SIMPLES MÉDIA COMPLEXA
4 ou mais MÉDIA COMPLEXA COMPLEXA
Pontuação
• Para cada Saída Externa será atribuído um número de Pontos de
Função, de acordo com a sua complexidade funcional relativa:
– SIMPLES: 4 (quatro) Pontos por Função;
– MÉDIA: 5 (cinco) Pontos por Função;
– COMPLEXA: 7 (sete) Pontos por Função.
34. 34
Complexidade de Consultas Externas
ITENS DE DADOS REFERENCIADOS
(TED)
Nº DE ARQUIVOS
REFERENCIADOS
(TAR)
1 A 5 6 A 19 20 OU MAIS
Apenas 1 SIMPLES SIMPLES MÉDIA
De 2 a 3 SIMPLES MÉDIA COMPLEXA
4 ou mais MÉDIA COMPLEXA COMPLEXA
Pontuação
• Para cada Consulta Externa será atribuído um número de Pontos
por Função, de acordo com a sua complexidade funcional relativa:
– SIMPLES: 3 (três) Pontos por Função;
– MÉDIA: 4 (quatro) Pontos por Função;
– COMPLEXA: 6 (seis) Pontos por Função
36. 36
Resumo do Cálculo dos PF não ajustados
Contagem total - Pontos por função (não ajustado)
EE – Entradas Externas
SE – Saídas Externas
CE – Consultas Externas
ALI – Arquivos Lógicos Internos
AIE – Arquivos de interfaces ext.
Parametro de Medição
3
4
3
7
5
Contagem
Fator de peso da Complexidade
baixa media alta
4
5
4
10
7
6
7
6
15
10
=
=
=
=
=
X
X
X
X
X
37. 37
Etapa 5: Determinar o Fator de Ajuste
• Fator de Ajuste de Valor (VAF)
– 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
38. 38
Fator de Ajuste
• O IFPUG (International Function Point Users
Group), órgão responsável pela técnica,
tornou o fator de ajuste opcional para
adequar-se ao padrão ISO/IEC.
• O objetivo do fator é ajustar os pontos de
função não-ajustados em ± 35% de acordo
com a influência de 14 características
gerais.
• No processo aqui apresentado, não será
utilizado no cálculo final.
39. 39
Cálculo do Fator de Ajuste
• Características não funcionais interferem
na complexidade do produto.
• Calcular o Fator de Ajuste:
– Avaliar o impacto de cada uma das quatorze
características (próximo slide)
• atribuir a cada característica um peso de 0 a 5.
– Calcular o nível de influência:
• Somando-se os pesos de cada uma das
características.
– Aplicar a fórmula de cálculo do fator de ajuste
(variação de + − 35%).
40. 40
Cálculo do Fator de Ajuste
Características Gerais:
1. Comunicação de Dados
2. Processamento de Dados Distribuído
(Funções Distribuídas)
3. Desempenho
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
É atribuída uma nota de 0 à 5
a cada uma das
Características Gerais do
Sistema correspondendo ao
seguinte critério: (nenhuma
influência, influência
incidental, moderada, média,
significante, essencial)
Fator de Ajuste:
Nt(total) = Nt
VAF = 0,65 + (0,01 X Nt(total))
(0,65 <= VAF <= 1,35)
14
i=1
44. 44
Aplicações da Técnica FPA
• 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
45. Qual o valor / preço de um ponto
de função (R$/PF)?
• O valor R$/PF irá variar de acordo com as
funcionalidades do software,
considerando:
– a produtividade e experiência da equipe nas
tecnologias e padrões;
– o grau de qualidade solicitado pelo cliente;
– a complexidade do software,
– a quantidade de entregáveis (artefatos, documentos,
modelos, etc).
45
FONTE: http://www.fattocs.com.br/blog/index.php/2012/04/569?lang=pt
46. Qual o preço de um PF?
• Em resumo, tudo aquilo que afeta custo
de forma significativa mas que não tem
relação direta com o tamanho medido
pela APF acaba sendo computado no
preço do ponto de função.
46
47. Qual o preço de um PF em uma
tecnologia específica?
• As tecnologias disponíveis para desenvolvimento de
sistemas podem influenciar diretamente na
produtividade (tanto positivamente quanto
negativamente)
• Assim, é bastante comum no mercado a diferenciação
do valor do PF (R$/PF) de acordo com a plataforma
tecnológica (mainframe, web, cliente-servidor, etc) e a
linguagem de programação (Cobol, C, Java, .net, etc).
47
48. Licitações públicas com PF
• O Governo Federal aplica PF em contratos para
desenvolvimento e manutenção de software
(por recomendação do Tribunal de Contas da
União).
– PF são usados como medição para o pagamento e
verificação dos serviços.
• Na tabela http://www.fattocs.com.br/editais.asp,
há exemplos de editais e valores.
– Pode-se observar que a variação dos números é
muito significativa, com valores na faixa de
R$100/PF a R$1.000/PF.
48
50. 50
Estudo de Caso: Sistema de Controle de
Ponto
• O sistema tem por objetivo registrar a
entrada e saída de funcionários de uma
determinada empresa.
• O exemplo serve para ilustrar a técnica de
PF. Portanto, o sistema é uma
simplificação de um sistema real.
• A seguir, é apresentada uma pequena
documentação necessária para
compreensão do sistema e serve de base
para o cálculo dos PF.
51. 51
Descrição do Sistema
• No sistema de controle de pontos, um
trabalhador registra suas entradas e saídas do
ambiente do trabalho.
• Caso o trabalhador esqueça o cartão de ponto,
ele pode justificar tal ocorrência.
• O trabalhador também pode acompanhar a sua
freqüência, onde o sistema apresenta os totais
de horas trabalhadas em um determinado
período.
• Cada trabalhador pode ter acesso apenas às
suas informações.
• Além disso, o gerente pode emitir um relatório
com as informações de freqüência de todos os
funcionários de seu departamento.
53. 53
Casos de Uso
Registrar freqüência Permite ao trabalhador inserir, alterar, excluir as
informações de entrada e saída em uma data.
Registrar justificativa O trabalhador insere uma justificativa em caso de
alteração ou exclusão de horário.
Acompanhar freqüência Exibe ao trabalhador o acompanhamento de seus
registros de ponto em um período escolhido.
Emitir relatório de
freqüência
Permite ao gerente acompanhar o registro de
presença dos trabalhadores em um determinado
período informado.
Efetuar Logon Permite que o funcionário (trabalhador ou
gerente) efetue a autenticação no sistema e, a
partir deste ponto, escolher as opções disponíveis
para acesso ao sistema dependendo do perfil do
usuário.
54. 54
Diagrama de Classes de Domínio
Observar que a classe
Funcionário faz parte de
outro sistema (Controle de
Segurança) e a aplicação de
controle de ponto apenas faz
referência a ela.
55. 55
Modelo de Banco de Dados (ER)
Observe que a classe Justificativa (do
modelo de classes) foi mapeada para duas
tabelas: JUSTIFICATIVA e LINHAS.
56. 56
Transações (Campos e Arquivos
Referenciados)
Transação
(Tela/Rel)
Campos Arquivo (Tabela)
Logon Matricula, Senha, Mensagens, Comando Funcionário
Registro de Ponto Indicador de entrada e saída, Mensagens,
Comando
Apontamento (Ponto)
Consultar Freqüência Data do ponto, Horário de entrada, Hora de
saída, Mensagens, Comando
Apontamento
Registrar (incluir)
freqüência com
Justificativa
Indicador de entrada ou saída, Horário,
Justificativa, Mensagens, Comando
Apontamento, Justificativa
Excluir Apontamento Mensagens, Comando Apontamento, Justificativa
Alterar Apontamento Horário anterior, Horário novo, Justificativa,
Mensagens, Comando
Apontamento, Justificativa
Acompanhar
Freqüência
Data inicial, Data final, Total de horas no
período, nome do funcionário, data do ponto,
horário do ponto, indicador de ent/saída,
justificativa, Mensagens, Comando
Apontamento, Justificativa,
Funcionário
Emitir Relatório de
Freqüência
Data Inicial, Data final, Matricula, Nome, Total
de horas, Quantidade de Justificativas, Total de
horas geral, Mensagens, Comando
Apontamento, Justificativa,
Funcionário
57. 57
Contagem: Entradas Externas
Descrição da função TAR TED
Compl
ex.
PF
Registro de Ponto 1 3 S 3
Registrar (incluir) freqüência
com Justificativa
2 5 M 4
Excluir Apontamento 2 2 S 3
Alterar Apontamento 2 5 M 4
TOTAL (EE) 14
58. 58
Contagem: Saídas Externas
Descrição da função TAR TED
Compl
ex.
PF
Logon 1 4 S 4
Acompanhar Frequencia 3 10 M 5
Emitir Relatório de Frequencia 3 9 M 5
TOTAL (SE) 14
63. 63
Exercício 1
• Utilizando a definição do sistema para o
consultório odontológico (ver material anexo):
– Elabore a documentação dos
requisitos/funcionalidades do sistema;
– Calcule os pontos de função não ajustados do
sistema;
– Calcule os pontos de função considerando os fatores
de ajuste: sistema on-line (na web), desenvolvido
para alta disponibilidades, prevendo o reuso de
componentes, com poucas transações e
desempenho médio.
64. 64
Exercício 2
• Considere a tela para uma aplicação de
cadastro (ver figura no próximo slide)
• Aplique a técnica de estimativa de pontos
de função para calcular os PF não
ajustados.
• Para calcular os PF não ajustados você
terá que modelar o banco de dados a
partir da tela em questão. Considere um
modelo de dados normalizado.
68. 68
Exercício resolvido.
Estimativas
• Considere um projeto estimado em 100 PF
• Numa fase que corresponde a 20% do Projeto
• Numa equipe de 4 pessoas
• Considerando uma produtividade média de 20 horas/PF
• Considerando uma jornada de 6 horas diárias
• Considerando um valor de R$35,00 o valor de 1h de
Trabalho
– Calcule os valores
• Do tamanho em PF dos 20% do projeto
• Do Esforço total em horas
• Do Prazo em dias
• Do Custo em R$
69. 69
Estimativas. Resolução
• 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
70. 70
Referências
• Paula Filho, Wilson de Pádua.
Engenharia de Software -
Fundamentos, Métodos e Padrões.
2ª. edição. LTC, 2003.
• Carlos Eduardo Vasquez, Guilherme
Siqueira Simões, Renato Machado
Albert. ANÁLISE DE PONTOS DE
FUNÇÃO: medição, estimativas e
gerenciamento de projetos de
software. Érica, 2003.
– http://www.fattocs.com.br/citacao-livro-apf.asp