« Volta | Home »
Pontos de Função
Análise por Pontos de Função (APF)
Perguntas Frequentes
O que são Pontos
de Função?
-
Pontos de função são uma
medida funcional
de tamanho de software, introduzida em 1979 por Alan
Albrecht da IBM e aberto à comunidade em 1984.
-
Medida funcional de tamanho de software
é um conceito definido pelo padrão ISO/IEC 14143-1:1998 e
refere-se à medição do tamanho do software considerando-se
apenas a funcionalidade solicitada e recebida pelos
respectivos usuários. Nesse sentido, uma medida funcional de
tamanho é uma medida externa, pois mede somente
aquilo que é percebido pelos usuários do produto de
software, independentemente da forma de implementação
escolhida.
-
FPA - Function Point Analisys
-
O termo original em inglês é
FPA - Function Point Analisys, podendo ser traduzido
como "Análise por Pontos de Função" ou "Análise de
Pontos de Função".
Quem padroniza a APF?
-
A contagem dos pontos de função
é regulamentada pelo
International Function Point Users Group (IFPUG),
organização internacional sem fins lucrativos sediada nos
Estados Unidos da América,
composta por pessoas e empresas de diversos países cuja
finalidade é promover um melhor gerenciamento dos processos
de desenvolvimento e manutenção de software através do uso
da APF.
-
O IFPUG publica o Counting
Practices Manual (Manual de Práticas de Contagem),
atualmente em sua versão 4.2.1, que estabelece os padrões
para o cálculo dos pontos de função. Para garantir a
padronização dos procedimentos de contagem, o IFPUG oferece
certificação na técnica e divulga os profissionais
certificados através de seu site na Internet –
www.ifpug.org.
-
O Brazilian
Function Point Users Group (BFPUG) é a representação
oficial do IFPUG no Brasil.
-
Como obter
o Manual de Práticas de Contagem do IFPUG?
O Manual de
Práticas de Contagem (Counting Practices Manual - CPM) é
fornecido pelo IFPUG. Os filiados ao IFPUG podem fazer download gratuitamente.
Os não
filiados podem adquiri-lo junto ao IFPUG.
A versão original do manual do IFPUG está em idioma Inglês.
Há versões em Português, Espanhol, Italiano, Francês,
Coreano e Chinês.
Há alguma relação
entre
APF e gestão de projetos?
-
Não, a APF é utilizada na área de
desenvolvimento de softwares como um método para medição do
tamanho funcional, quantificando as funcionalidades que o
software fornece aos usuários.
-
De qualquer modo, a técnica pode ser uma
ferramenta que o gerente de projetos de software pode usar,
uma vez que o processo de medição, assim como o resultado da
medição, ajuda a trazer visibilidade a diversos aspectos do
projeto, como requisitos e escopo.
A associação entre o tamanho funcional e outras grandezas,
como esforço, custo, quantidade de defeitos, possibilita a
geração de indicadores úteis no acompanhamento do
desempenho, produtiidade e qualidade. O indicador de
produtividade é muito empregado para a geração de
estimativas (baseadas em pontos de função) para o projeto.
No que se baseia a contagem dos Pontos
de Função?
-
A contagem dos pontos de função é realizada com base em
cinco tipos de componentes de software: arquivos internos,
arquivos externos, entradas, saídas e consultas. Esses
termos possuem um sentido específico na FPA - Function
Point Analysis (Análise de Pontos de Função) e a
identificação e classificação dos componentes exige
conhecimento especializado.
-
Os pontos de função são utilizados como fator normalizador
do tamanho do software, permitindo o estabelecimento de
métricas tais como produtividade (pontos de função
produzidos por pessoa-mês), taxa de entrega
(homens-hora para a produção de um ponto de função), densidade de defeitos (defeitos encontrados por ponto de
função) e outras. A taxa de entrega também pode ser
denominada
produtividade, o que pode causar confusão. A melhor
opção é deixar clara a nomenclatura utilizada em cada caso.
-
Vem crescendo a utilização, pelas empresas brasileiras, dos
pontos de função nos contratos de fornecimento de software,
seja através da cotação de preços por ponto de função, ou
através da quantificação dos serviços através de medições de
pontos de função.
-
No mundo, os pontos de função do IFPUG são utilizados pela
grande maioria das organizações que realizam algum tipo de
medição funcional de tamanho de software.
-
Os Pontos de
Função medem as horas necessárias ao desenvolvimento de um projeto?
Embora
exista uma forte relação entre o tamanho funcional de um
software (medido em Pontos de Função) e o esforço gasto no seu
desenvolvimento (medido em pessoas-hora), os Pontos de Função não
medem diretamente o esforço de desenvolvimento. Nesse sentido, os
Pontos de Função são semelhantes ao metro quadrado na construção
civil: embora o metro quadrado influa consideravelmente no esforço
de construção e no custo de um imóvel, outros fatores poderão
contribuir tanto ou mais quanto o metro quadrado. Exemplos de
fatores são a localização do imóvel, a idade, o material utilizado
na construção e acabamento, o prestígio do arquiteto, etc.
Da mesma
forma, dois sistemas podem ter a mesma medida em Pontos de Função e
preços totalmente diferentes. Por exemplo, um sistema pode ser
monousuário, implementado em uma ferramenta como o Access; o outro
pode ser uma aplicação web com várias camadas, envolvendo um
mainframe e sofisticados dispositivos de segurança. Neste caso,
certamente a quantidade de horas e o preço de cada um desses
sistemas será completamente diferente. A conclusão é que o tamanho
em Pontos de Função é apenas um dos fatores que influem sobre o
esforço de desenvolvimento e sobre o custo de um sistema. Outros
importantes fatores são a confiabilidade desejada para o software, a
metodologia de desenvolvimento utilizada, o nível de testes
requerido, a complexidade dos algoritmos, a dificuldade da
plataforma computacional, o estilo de interface com o usuário, o
grau de reutilização desejado, a capacidade e experiência da equipe,
a disponibilidade de ferramentas de software adequadas e outros.
Como os Pontos de
Função são contados?
-
A contagem de Pontos de Função é efetuada com base na
especificação do sistema, complementada por informações dos
usuários e analistas.
-
I.
COMPONENTES CONSIDERADOS
-
São contados os
seguintes componentes, conforme definidos na Análise de
Pontos de Função :
Arquivos Lógicos Internos – Correspondem aos arquivos
mantidos e utilizados pelo sistema sendo contado.
-
Arquivos de
Interface Externa – Correspondem aos arquivos utilizados
pelo sistema sendo contado, porém mantidos por outros
sistemas.
-
Entradas Externas
– Correspondem a transações cujo objetivo é a manutenção de
arquivos ou a alteração do comportamento do sistema.
-
Consultas Externas – Correspondem a transações cujo
objetivo é a apresentação de informações aos usuários,
provenientes dos arquivos, sem a geração de dados derivados,
atualização de arquivos ou a utilização de
cálculos/fórmulas.
-
Saídas Externas – Correspondem a transações cujo
objetivo é a apresentação de informações aos usuários, não
necessariamente proveniente de arquivos, podendo ocorrer a
geração de dados derivados, atualização de arquivos e a
utilização de cálculos/fórmulas.
II. ETAPAS DO PROCESSO DE CONTAGEM
-
Inicialmente os componentes são identificados, o que
exige a aplicação de uma série de regras,
específicas para cada um deles. Esta é a etapa mais
difícil e que exige a maior prática do Analista de
Pontos de Função – equivale, em dificuldade, à
Modelagem de Dados.
-
Complexidade e Contribuição
-
Após a identificação, a cada um dos componentes é
atribuída a complexidade baixa, média ou alta,
conforme o número de campos no caso dos arquivos, ou
o número de campos e referências a arquivos no caso
das transações. Com base na complexidade e em
tabelas específicas, a cada componente é atribuída
uma quantidade de pontos de função, denominada
contribuição do componente à contagem.
Pontos de Função Não Ajustados
A soma das contribuições de todos os componentes resulta
na quantidade de pontos de função não ajustados.
Pontos de Função Ajustados
Os pontos de
função ajustados, resultado final da contagem, são
obtidos a partir da aplicação de 14 fatores, denominados
Características Gerais dos Sistemas (CGS), os
quais alteram a contagem anterior em –35% a +35% do
valor inicial não ajustado.
III. APLICAÇÃO DA CONTAGEM
A contagem de pontos de função é realizada para medir o
tamanho funcional de um sistema, independentemente de
sua forma de implementação. Podem ser medidos:
-
Um projeto de sistema
– neste caso, a contagem inclui tanto o sistema entregue ao
final, quanto as modificações efetuadas ao longo do projeto
e os programas destinados especificamente à implantação.
-
Uma alteração
em sistema
– neste caso, a contagem inclui os novos componentes
incluídos, os alterados e, também, os removidos do sistema
original.
-
Um sistema
– esta contagem é efetuada exclusivamente sobre o sistema
entregue aos usuários, medindo o tamanho do sistema
propriamente dito.
-
A técnica utilizada na contagem é a mesma em cada caso; a
diferença está no que é considerado em cada um.
-
Existe alguma
tabela onde eu possa obter a produtividade de um projeto, conhecida
a linguagem de desenvolvimento?
No
passado a empresa
SPR - Software Productivity Research
- disponibilizava gratuitamente uma tabela de linguagens de
programação na internet. Essa tabela atribuía a cada linguagem um
nível, sendo fornecidos intervalos de produtividade estimados para
cada nível de linguagem. Além disso, a chamada "Tabela da SPR"
fornecia estimativas para a razão Linhas de Código Fonte / Ponto de
Função, para cada linguagem (também chamada Fator de
Backfiring). Essa tabela, embora contivesse dados estatísticos
interessantes para pesquisas, foi muitas vezes indevidamente
utilizada como base em relacionamentos comerciais. A própria SPR
optou por primeiro retirar a tabela do ar e depois traze-la de
volta, desta vez como um serviço pago.
É bom lembrar que a linguagem de programação é apenas um dos
fatores que afetam a produtividade. Conforme explicado em outra
pergunta, também são fatores importantes: a confiabilidade desejada
para o software, a metodologia de desenvolvimento utilizada, o nível
de testes requerido, a complexidade dos algoritmos, a dificuldade da
plataforma computacional, o estilo de interface com o usuário, o
grau de reutilização desejado, a capacidade e experiência da equipe,
a disponibilidade de ferramentas de software adequadas e outros.
Existe alguma
tabela onde eu possa saber a quantidade média de linhas de
código-fonte (SLOC) por Ponto de Função?
A quantidade de
linhas de código por PF varia bastante e com diversos fatores, além
da linguagem de programação utilizada. Por exemplo, a antiga Tabela
da SPR (ver pergunta sobre produtividade acima) registrava a média
de
53 SLOC/PF para a linguagem JAVA. A Tabela da QSM
registra 63 SLOC/PF para o JAVA e o David
Consulting Group sinaliza com 80 SLOC/PF. Em uma
pesquisa realizada com 8 projetos JAVA em um banco brasileiro, a
mediana encontrada foi 33 SLOC/PF. Nossa
recomendação é que sejam medidos alguns projetos, para poder
determinar o valor médio da razão SLOC/PF em cada caso específico.
Ainda assim, você pode ter uma ideia dos valores consultando a
Tabela da QSM.
Referências complementares
|