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 Desarrollo | Baja | Media | 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 (Extracción y OLAP) - Microstrategy, PowerCenter e etc | 16 | 12 | 6 |
DW PENTAHO (Apenas OLAP) | 16 | 10 | 6 |
DW PENTAHO (Extracción y 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 no Distribuida | 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 Y IOS | 18 | 14 | 12 |
MOBILE - HTML 5 y JQUERY MOBILE | 18 | 14 | 12 |
MOBILE - IOS | 18 | 14 | 12 |
MOBILE - PHONEGAP | 18 | 14 | 12 |
MOBILE – WINDOWS PHONE | 18 | 14 | 12 |
NATURAL (Batch y On-Line) | 12 | 10 | 8 |
Oracle Designer 2000 | 12 | 6 | 4 |
PENTAHO (Proyectos PENTAHO No BI) | 7 | 6 | 5 |
PHP | 15 | 10 | 5 |
PL/SQL de demais SGBDs | 11 | 9 | 7 |
PROYECTOS DE GEOPROCESAMIENTO | 27 | 19 | 11 |
PROYECTOS DE GEORREFERENCIAMIENTO | 27 | 19 | 11 |
PROYECTOS 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 |
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:
Benchmarking Externo
O 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.