O mito da Tabela de Produtividade do Ponto de Função para Estimar o Esforço
Na busca por uma resposta por qual a produtividade do ponto de função para estimar o esforço, o mais comum é procurar uma Tabela de Produtividade com a quantidade de HH (homem-hora) / PF (Ponto de Função). Como por exemplo a Tabela de Produtividade a seguir obtida do Roteiro de Contagem do SERPRO:
Plataforma de Desenvolvimento | Baixa | Média | Alta |
---|---|---|---|
ACCESS | 10 | 8 | 6 |
ASP | 16 | 11 | 6 |
ASPNET | 11 | 8 | 5 |
ASSEMBLER | 18 | 12 | 8 |
BASIC | 18 | 12 | 8 |
C | 24 | 18 | 12 |
C# | 17 | 12 | 7 |
C++ | 18 | 12 | 8 |
CKAN | 18 | 14l8 | |
CLIPPER | 12 | 8 | 6 |
COBOL | 14 | 10 | l6 |
COMPONENTE – CÓDIGO PROPRIETÁRIO | 26 | 19 | 12 |
COMPONENTE – CÓDIGO ABERTO | 26 | 19 | 12 |
CSP | 16 | 10 | 8 |
Dardo /Netuno | 18 | 14 | 12 |
DATA DISCOVERY | 16 | 12 | 6 |
DELPHI | 12 | 8 | 6 |
Dot Net (.Net) | 14 | 12 | 10 |
DW OUTRAS (apenas OLAP) – Microstrategy, PowerCenter e etc | 14 | 10 | 5 |
DW OUTRAS (Extração e OLAP) - Microstrategy, PowerCenter e etc | 16 | 12 | 6 |
DW PENTAHO (Apenas OLAP) | 16 | 10 | 6 |
DW PENTAHO (Extração e OLAP) | 18 | 12 | 8 |
EXCEL | 6 | 5 | 4 |
FORMS/REPORTS/ORACLE | 16 | 12 | 6 |
HTML | 10 | 8 | 4 |
JAVA | 14 | 10 | 6 |
Java AndroMDA | 15 | 10 | 5 |
Java Demoiselle V 1.0 | 16 | 11 | 6 |
Java Demoiselle V 2.0 | 19 | 13 | 7 |
Java Flex | 15 | 12 | 8 |
Java Script | 16 | 12 | 8 |
Java Web não Distribuída | 16 | 11 | 6 |
JCUPIM | 41 | 28 | 15 |
Joomla | 18 | 14 | 8 |
LASER XEROX | 30 | 20 | 16 |
LIFERAY | 16 | 12 | 8 |
LIGHTBASE | 18 | 12 | 6 |
LOTUS NOTES | 8 | 6 | 4 |
LTD | 18 | 13 | 8 |
MIDDLEWARE | 26 | 19 | 12 |
MOBILE - ANDROID | 18 | 14 | 12 |
MOBILE - ANDROID E IOS | 18 | 14 | 12 |
MOBILE - HTML 5 e JQUERY MOBILE | 18 | 14 | 12 |
MOBILE - IOS | 18 | 14 | 12 |
MOBILE - PHONEGAP | 18 | 14 | 12 |
MOBILE – WINDOWS PHONE | 18 | 14 | 12 |
NATURAL (Batch e On-Line) | 12 | 10 | 8 |
Oracle Designer 2000 | 12 | 6 | 4 |
PENTAHO (Projetos PENTAHO Não BI) | 7 | 6 | 5 |
PHP | 15 | 10 | 5 |
PL/SQL de demais SGBDs | 11 | 9 | 7 |
PROJETOS DE GEOPROCESSAMENTO | 27 | 19 | 11 |
PROJETOS DE GEORREFERENCIAMENTO | 27 | 19 | 11 |
PROJETOS DE WORKFLOW | 24 | 18 | 16 |
PYTHON | 18 | 14 | 8 |
RUBY ON RAILS | 18 | 14 | 8 |
UNIX SHELL SCRIPTS | 18 | 14 | 8 |
VB-SCRIPT | 16 | 14 | 8 |
VISUAL BASIC /Crystal Reports | 12 | 8 | 6 |
VISUAL C++ | 16 | 14 | 7 |
VISUAL GEN | 10 | 8 | 6 |
VISUAL INTERDEV | 24 | 14 | 8 |
WEBSERVICE | 26 | 19 | 12 |
ZOPE PLONE | 17 | 11 | 5 |
A desconstrução da Tabela de Produtividade
Inicialmente, você pode perceber haver alguns problema no uso dessa Tabela de Produtividade dificultando a sua utilização.
Por exemplo, coloque no campo de pesquisa o texto “WebService”. Veja que se apresenta um resultado com uma taxa de entrega entre 26 HH / PF e 12 HH / PF com uma taxa de entrega média de 19 HH / PF.
O que isso quer dizer?
Por exemplo, se elementos da arquitetura que suporta funcionalidades do usuário utilizam-se de webservices, então esses elementos da arquitetura devem ser medidos como funções e o esforço apropriado de maneira direta ao estimar o esforço?
Claro, que não.
Em seguida, coloque no mesmo campo Java. Observe, que em resposta lhe é apresentado um resultado com sete classes. Se um desenvolvimento envolve a codificação do front-end usando Java Script e o back-end usa Java, então eu devo ter duas medições: uma para o front-end e cujo esforço é estimado com a taxa de entrega do Java Script e outra para o back-end e cujo esforço é estimado com a taxa de entrega do Java?
Claro, que não.
Por fim, o que está incluído nessas horas componentes do indicador de produtividade; ou seja nas horas / ponto de função? Em outros termos qual o escopo de atividade incluído? Variações nesse escopo de atividades podem explicar as diferenças, que apenas pela tecnologia de desenvolvimento não se explica.
Estimativa e preço e a Tabela de Produtividade
Um artigo bastante relacionado à Tabela de Produtividade do Ponto de Função para Estimar o Esforço é sobre o preço do ponto de função. Se quiser mais informações não deixe de consultar o material a seguir:
Benchmarking Externo
O ISBSG (International Software Benchmarking Standards Group) é uma das principais fontes de referência sobre a produtividade em pontos de função. No entanto, usar essas fontes desconsiderando o contexto de como aqueles números foram obtidos e o contexto de sua própria organização é um erro grave. Estimativas obtidas dessa maneira dificilmente terão a confiabilidade necessária ou alguma utilidade prática.
A melhor forma de obter indicadores de produtividade que realmente sejam úteis nas estimativas com pontos de função é apurar esse indicador através dos projetos desenvolvidos pela organização. Mas como fazer isto?
Benchmarking Interno
O primeiro passo é recuperar dos desenvolvimento passados as duas grandezas que compõe o indicador de produtividade: o tamanho (em pontos de função) e o esforço (horas). Com estes dois dados, tem-se de forma direta a produtividade daquele desenvolvimento. Mas se cada desenvolvimento tiver um número de produtividade diferente, qual deve ser empregado no projeto a ser estimado?
Certamente que cada desenvolvimento pode apresentar um número distinto, mas se este procedimento for repetido para um conjunto maior de projetos será possível observar que para determinados subconjuntos a produtividade é bastante similar. Isso acontece quando os projetos tem características similares em relação aos fatores que afetam diretamente o esforço para desenvolvê-los. Logo, é razoável concluir que dependendo da natureza dos projetos desenvolvidos pela organização, não haverá um único indicador de produtividade para todos os projetos da organização; mas sim indicadores de produtividade por grupos de projeto similares. Sendo assim, o primeiro passo para estimar um novo projeto é enquadrá-lo em algum grupo de projetos e só então usar o indicador de produtividade adequado. Mas quais são os fatores que definem esses grupos de projetos?
Fatores afetando a produtividade
Qualquer variável que tenha capacidade de produzir um impacto significativo no esforço do projeto deve ser levada em consideração nessa análise de segmentação de grupos de projeto. Convém destacar que os fatores podem ser diferentes de organização para organização. Por exemplo: o uso ou não de uma determinada metodologia de desenvolvimento de sistemas no projeto pode afetar sua produtividade. No entanto se em uma determinada empresa todos os projetos seguem a mesma metodologia, este fator será constante e não terá relevância para a segmentação de projetos.
Sem a pretensão de estabelecer uma lista completa, pode-se citar os seguintes fatores:
– tipo de projeto: desenvolvimento, melhoria, migração, redesenvolvimento, etc;
– plataforma tecnológica: mainframe, web, cliente x servidor, sistema embutido, etc;
– ordem de grandeza dos projetos;
– tamanho da equipe de desenvolvimento;
– ferramentas de desenvolvimento;
– metodologia empregada;
– área de negócio;
– número de usuários.
Conclusão
De forma análoga ao preço por ponto de função, estimar o esforço a partir da medição ou aproximação do tamanho em pontos de função está intimamente ligado aos níveis de risco, que se tolera assumir.