El mito de la Tabla de Productividad de Punto de Función para Estimar el Esfuerzo

En la búsqueda por una respuesta sobre cuál es la productividad del punto de función para estimar el esfuerzo, lo más común es buscar una Tabla de Productividad con la cantidad de HH (hora hombre) / PF (Punto de Función). Por ejemplo, la Tabla de Productividad a seguir obtenida por el Roteiro de Contagem do SERPRO:

Plataforma de DesarrolloBajaMediaAlta
ACCESS1086
ASP16116
ASPNET1185
ASSEMBLER18128
BASIC18128
C241812
C#17127
C++18128
CKAN1814l8
CLIPPER1286
COBOL1410l6
COMPONENTE – CÓDIGO PROPRIETÁRIO261912
COMPONENTE – CÓDIGO ABERTO261912
CSP16108
Dardo /Netuno181412
DATA DISCOVERY16126
DELPHI1286
Dot Net (.Net)141210
DW OUTRAS (apenas OLAP) – Microstrategy, PowerCenter e etc14105
DW OUTRAS (Extracción y OLAP) - Microstrategy, PowerCenter e etc16126
DW PENTAHO (Apenas OLAP)16106
DW PENTAHO (Extracción y OLAP)18128
EXCEL654
FORMS/REPORTS/ORACLE16126
HTML1084
JAVA14106
Java AndroMDA15105
Java Demoiselle V 1.016116
Java Demoiselle V 2.019137
Java Flex15128
Java Script16128
Java Web no Distribuida16116
JCUPIM412815
Joomla18148
LASER XEROX302016
LIFERAY16128
LIGHTBASE18126
LOTUS NOTES864
LTD18138
MIDDLEWARE261912
MOBILE - ANDROID181412
MOBILE - ANDROID Y IOS181412
MOBILE - HTML 5 y JQUERY MOBILE181412
MOBILE - IOS181412
MOBILE - PHONEGAP181412
MOBILE – WINDOWS PHONE181412
NATURAL (Batch y On-Line)12108
Oracle Designer 20001264
PENTAHO (Proyectos PENTAHO No BI)765
PHP15105
PL/SQL de demais SGBDs1197
PROYECTOS DE GEOPROCESAMIENTO271911
PROYECTOS DE GEORREFERENCIAMIENTO271911
PROYECTOS DE WORKFLOW241816
PYTHON18148
RUBY ON RAILS18148
UNIX SHELL SCRIPTS18148
VB-SCRIPT16148
VISUAL BASIC /Crystal Reports1286
VISUAL C++16147
VISUAL GEN1086
VISUAL INTERDEV24148
WEBSERVICE261912
ZOPE PLONE17115

La desconstrucción de la Tabla de Productividad

Inicialmente, usted puede percibir algunos problemas en el uso de la Tabla de Productividad dificultando su uso.

Por ejemplo, coloque en el campo de búsqueda el texto «Webservice». Vea que se presenta un resultado como una tasa de entrega entre 26 HH/PF y 12 HH/PF con una tasa de entrega média de 19 HH / PF.

¿Qué es lo que quierde decir?

Pensemos, si estos elementos de arquitectura que soportan funcionalidades del usuario se utilizan de webservice, entonce ¿Estos elementos de arquitectura deben ser medidos como funciones y el esfuerzo apropiado de manera directa al estimar eestos elementos de arquitectura deben ser medido como funciones y el esfuerzo apropiado de manera directa al estimar el esfuerzo?

Claro que no.

En seguida, coloque en el mismo campo Java. Observe que en respuesta se le presenta un resultado con siete clases. Si un desarrollo involucra la codificación del front-end usando Java Script y el back-end usa Java. ¿Debo debo tener dos mediciones: una para el front-end, cuyo esfuerzo es estimado con la tasa de entrega del Java Script y otra para el back-end cuyo esfuerzo es estimado con la tasa de entrega de Java?

Claro que no.

Finalmente, ¿Qué incluye en los componentes de horas del indicador de productividad; o sea, en las horas/punto función? En otros términos, ¿Cuál es el alcance que incluye la actividad? Variaciones en este alcance de actividades puede explicar las diferencias, que apenas por la tecnología de desarrollo no se explica.

Estimaciones, precio y la Tabla de Productividad

Un artículo bastante relacionado a la Tabla de Productividad del Punto de Función para Estimar el Esfuerzo es sobre el precio de punto de función. Si quiere saber más no deje de consultar nuestro material:

¿Cuál es el precio del punto de función (cuanto cuesta)?

La respuesta simple para el precio del punto de función El precio de punto de función es entre US$ 200,00 / PF y US$ 600,00...

Benchmarking Externo

ISBSG (International Software Benchmarking Standards Group) es una de las principales fuentes de referencia sobre la productividad en puntos de función. Sin embargo, usar esas fuentas desconsiderando el contexto de cómo aquellos número se obtuvieron y el contexto de su propia organización es un grave error. Estimaciones obtenidas de esta manera dificilmente tendrán la confianza necesaria p alguna utilidad práctica.

La mejor forma de obtener indicadores de productividad que realmente sean útiles en las estimaciones de punto de función es calcular este indicador a través de los proyectos desarrollados por su organización. ¿Cómo realizarlo?

Benchmarking Interno

El primer paso es recuperar, a través de los desarrollos pasados, los dos grandes componentes del indicador de productividad: el tamaño (en puntos de función) y el esfuerzo (en horas). Con estos dos datos, se obtiene de forma directa la productividad de aquel desarrollo. Pero si cada desarrollo tuviese un número de productividad diferente, ¿Cuál debe ser empleado en el proyecto a ser estimado?

Ciertamente que cada desarrollo puede presentar un número distinto, pero si este procedimiento fuese repetido para un conjunto mayor de proyectos será posible observar que para determinados subconjuntos la productividad es bastante similar. Esto cuedecuando los proyectos tienen características similares en relación a los factores que afectan directamente el esfuerzo para desarrollarlos. Luego, es razonable concluir que dependiendo de la naturaleza de los proyectos desarrollados por la organización, no habrá un único indicador de productividad para todos los proyectos de organización; pero si indicadores de productividad para grupos de proyectos similares. Siendo asi, el primer paso para estimar un nuevo proyecto y encuadrarlo en algún grupo de proyectos y solo entonces usar el indicador de productividad adecuado. Pero, ¿Cuáles son los factores que definen esos grupos de proyectos?

Cualquier variable que tenga la capacidad de producir un impacto significativo en el esfuerzo del proyecto se debe tener en cuando en este análisis de segmentación de grupos de proyecto. Conviene destacar que los factores pueden ser diferentes de organización para organización. Por ejemplo: el uso o no de una determinada metodolgía de desarrollo de sistemas en el proyecto puede afectar su productividad. Sin embargo, si en una determinada empresa todos los proyectos siguen la misma metodolgía, este factor será constante y no tendrá relevancia para la segmentación de proyectos.

Sin la pretensión de establecer una lista completa, se puede citar los siguientes factores:

  • tipo de proyecto: desarrollo, mejora, migración, redesarrollo, etc;
  • Plataforma tecnológica: mainframe, web. cliente x servidor, sistema embutido, etc;
  • Orden de grandeza de los proyectos;
  • Tamaño del equipo de desarrollo;
  • Herramientas de desarrollo;
  • Metodología empleada;
  • Área de negocio;
  • Número de usuario.

Conclusión

De forma análoga al precio por punto de función, estimar el esfuerzo a partir de la medición o aproximación del tamaño en puntos de función está intimamente relacionado a los niveles de riesgo, que se tolera asumir.