La estimación de proyectos software es una tarea muy compleja, pero de vital importancia en toda la etapa de desarrollo del software. A continuación te explico el cálculo usando el método PROBE, uno de los sistemas de estimación de esfuerzos más sencillos y completos.
Algunos de los principios a tener en cuenta para la realización de una estimación de software:
- Retrasar la estimación lo máximo posible. Cuanto más se retrase, más precisa será.
- Hacer estimación por analogía. Utilizar el costo de proyectos similares.
- Ley de Parkinson. El trabajo se extiende para rellenar el tiempo disponible.
- Precio para ganar. El coste se estima en todo el dinero que el cliente puede gastar en el proyecto.
- Existen técnicas de descomposición. Estimas el costo descomponiendo el producto y/o el proceso.
- Existen modelos empíricos. Modelos de regresión que relacionan esfuerzo con tamaño o funcionalidad.
Factores importantes a considerar:
- Complejidad del proyecto.
- Tamaño del proyecto.
- Estabilidad de los requerimientos.
- Facilidad de identificar funciones.
- Estructura de la información.
- Disponibilidad de información histórica.
El método PROBE
Este método está descrito en el libro PSP A Self-Improvement Process for Software Engineers, aunque es un poco complicado de seguir, por eso que mejor hacer un trabajo más práctico para tratar de enfocar el aprendizaje haciendo, más que diciendo.
Un proxy es una unidad de software que se puede identificar en un proyecto. Ejemplos de ello son las pantallas (User Interfaces), archivos, objetos, entidades lógicas, funciones (Stores Procedures) y puntos de función. La representación se pueden visualizar fácilmente a partir de las especificaciones del proyecto tales como documentos de requisitos. A continuación, se pueden traducir en líneas de código en función de los tamaños de los proxies históricos similares en proyectos de desarrollo anteriores. La líneas de código junto con cifras de productividad se pueden utilizar para predecir los recursos necesarios para un proyecto.
El método completo está organizado en una planilla Excel de construcción propia:
En esta Hoja de Trabajo se establecen las estimaciones por Proxy, y a partir de la estimación de los tiempos de construcción se estiman los de las otras fases del desarrollo. Si estas estimaciones porcentuales no aplican para el caso específico, pueden reemplazarse por valores históricos (en caso de contar con ellos).
La distribución de los porcentajes de referencia va a depender de la metodología o del criterio utilizado por los evaluadores del proyecto.
¿Cómo determinar la cantidad de días de construcción?
Este es el dato que mejor se puede estimar por los expertos o por consenso. A partir de este valor se calculan los otros de acuerdo a los porcentajes de referencia. Son los desarrolladores (expertos) los que mejor saben cuánto se demorar en construir un proxy. De todas formas existen tablas de complejidad de referencia por lenguaje de programación que pueden utilizarse, aunque en la práctica es mucho mejor el juicio experto.
En esta hoja, se desglosan las funcionalidades en los proxys definidos en la etapa anterior. Las columnas en azul son el resultado de la ponderación de la cantidad de Proxys requeridos por su tiempo definido en la hoja ‘Proxy’.
Para cada funcionalidad del sistema se especifican la cantidad de proxy’s a desarrollar, por ejemplo en el caso de la funcionalidad “Login”, se requiere 1 página web sencilla, 1 mediana, 1 procedimiento almacenado (en BBDD), 1 clase mediana y 1 tabla. Lo anterior solo para efectos del ejemplo.
Sobre esta base la planilla va calculando la cantidad de días de análisis, construcción, integración y pruebas (para efectos del ejemplo) que se requieren en este proyecto. Las etapas por supuesto pueden ser personalizadas por el evaluador.
Aplicaciones para otras áreas que no sean de construcción de piezas de software
Cualquiera donde sea factible definir y estructurar vía proxys. Solo basta usar un poco la imaginación.
Link a planilla de ejemplo:
https://drive.google.com/file/d/0B3-y5EFvrO7ec3drWlJhZmhfaUk/view
Referencia:
https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=7911
Método y proceso implementado con éxito en una empresa de desarrollo de software de Santiago de Chile. https://drive.google.com/file/d/0B3-y5EFvrO7eeEdJVzlTWEdkczQ/view