Contexto
Una empresa de software desea saber cuánto esfuerzo en horas-hombre requerirá el nuevo proyecto para un cliente importante. Dado que es un proyecto estratégico para el cliente, la empresa desea planear muy bien sus recursos, cumpliendo con las expectativas del desarrollo.
Roberto, el gerente del proyecto, ha recopilado toda la información en relación con los requerimientos generales del desarrollo, de tal manera que puedan ser la base para que los gerentes de las diferentes áreas de sistemas puedan estimar el tiempo y la cantidad de recursos necesarios. Los gerentes han estado acostumbrados a dar estimaciones basadas en su intuición y experiencia, sin embargo, han provocado que subestimen los recursos necesarios o sobreestimen demasiado en el tiempo requerido en proyectos pasados. Para este proyecto, Roberto les ha solicitado que ofrezcan una estimación basada en datos históricos y en algún método de estimación de software, de tal manera que puedan compararlo con la estimación que ellos hacen.
¿Cómo se estima el esfuerzo y el tamaño del software?, ¿cuáles son los métodos de estimación del software que pueden utilizar los gerentes?, ¿existirá algún método estadístico que puedan utilizar para precisar su estimación?
Explicación
5.1 Fundamentos de la estimación del software
Según Chemuturi (2009), en la estimación en los proyectos de software intervienen los siguientes elementos:
Estas variables permiten revisar las fuentes de donde se obtendrán estos recursos y establecer un presupuesto al cual apegarse para mantener el control de la correcta asignación y uso de recursos.
Una buena administración de proyectos de software debe establecer una estimación antes de dar inicio oficial al proyecto, debe revisarla durante el desarrollo y finalmente comparar el estimado vs el presupuesto real una vez desarrollado y entregado. Esto aplica ya sea si es un desarrollo interno o bien si se ha contratado a un tercero para desarrollarlo.
Principios de la estimación:
El PSP-Bok (2009) nos ofrece los siguientes principios de la estimación:
La idea general del proceso PSP es que un programador tenga la habilidad de estimar su propio trabajo y así pueda utilizar esa experiencia al estimar proyectos más complejos.
5.2 Métodos de estimación del esfuerzo
Existen varios métodos para estimar el tamaño del software y el esfuerzo requerido para completar un sistema, a continuación, se describen algunos.
Haz clic en cada método para conocer más detalle
5.3 Método de estimación PROBE
El método PROBE (Proxy Based Estimating) es utilizado para estimar el tamaño y el esfuerzo de desarrollo. Se considera como parte del proceso PSP y se basa principalmente en información histórica que puede ser recopilada para la estimación. Este método utiliza el concepto de “representante” o proxy, que es una unidad de medida que ayuda a estimar las partes que componen el software. Los proxies pueden ser las pantallas, elementos de bases de datos (campos, tablas, consultas, registros), las clases en programación orientada a objetos, o incluso Puntos de Función (PF).
Según Humphrey (2005), esta unidad de medida debe tener las siguientes características:
Ejemplo del método PROBE
Humphrey (2005) ofrece el siguiente ejemplo para mostrar el método PROBE:
Suponiendo que en tamaño de la unidad representativa (Proxy) es de 126 líneas de código, entonces: E = 126 LOC (dato estimado tomado de información histórica).
Tabla de ejemplo de datos históricos
Número del programa |
Tamaño estimado del Proxy |
Tamaño del código añadido o modificado |
Horas totals reales |
1 |
|
83 |
11.2 |
2 |
|
116 |
9.3 |
3 |
|
186 |
21.6 |
4 |
97 |
81 |
6.9 |
5 |
81 |
114 |
10.2 |
Totals |
178 |
580 |
59.2 |
Número del programa |
Tamaño estimado del Proxy (Size) – x |
Horas reales –y |
Size*Size x*x |
Size*Hours x*y |
Hours*Hours y*y |
1 |
83 |
11.20 |
6,889 |
929.6 |
125.44 |
2 |
116 |
9.30 |
13,456 |
1,078.8 |
86.49 |
3 |
186 |
21.60 |
34,596 |
4,017.6 |
466.56 |
4 |
81 |
6.90 |
6,561 |
558.9 |
47.61 |
5 |
114 |
10.20 |
12,498 |
1,162.8 |
104.04 |
Total |
580 |
59.20 |
74,498 |
7,747.7 |
830.14 |
Promedio |
116 |
11.84 |
|
|
Se obtiene el coeficiente de correlación entre el tamaño y las horas:
Dato que el coeficiente de correlación se acerca a 1 podemos decir que existe una correlación entre el tamaño y el tiempo. El método PROBE sugiere que el valor de r sea mayor o igual a 0.7.
Se procede a calcular los valores de los parámetros de regresión β0 y β1:
El tiempo estimado de desarrollo para este caso sería = β0 + β1 * E
Tiempo Estimado = -2.31046 + 126 * 0.121987
Tiempo Estimado = 13.060 horas
Para calcular el intervalo de predicción se utiliza una distribución t.
Donde:
p es la probabilidad de encontrar un valor en la distribución t de student. El valor típico de p es 0.7 o 0.9 (70% o 90%). El número de grados de libertad es n-2.
Xk = El tamaño o tiempo estimado.
σ es la varianza (el cuadrado de la desviación estándar).
El valor de t para 0.70 con 3 grados de libertad es 0.58439
El intervalo de predicción superior es 13.060+5.4252 = 18.49 y el inferior es 13.606-5.4252 = 7.63
Es decir que el 70% de los valores estimados caerán entre 6.13 y 19.99 horas
Cierre
En cualquier proyecto en el que participes, será necesario utilizar la estimación como herramienta básica para conocer de antemano la cantidad de recursos necesarios. La estimación se fundamenta en la información que se tiene a la mano, si la información es suficiente y correcta, la estimación será de mejor calidad. Si, por lo contrario, no se tiene suficiente información o tiene errores, la estimación que se haga seguramente no se acercará a los datos reales.
Estimar el tamaño el software es una actividad que requiere de un proceso iterativo en el que se realicen ajustes para que la estimación sea más precisa. Esto requiere de la disciplina de los programadores para poder documentar con precisión el trabajo que realizan, y para ello será muy útil las recomendaciones que se tengan del proceso PSP. Cada nuevo proyecto será una nueva oportunidad para mejorar el proceso de estimación anterior.
Debes tener presente que rara vez las estimaciones se cumplen en los proyectos de software, debido a que es difícil predecir los problemas a los que se enfrentará el equipo de desarrollo. Existirán muchos imponderables que provocan que el proyecto se salga de control, sin embargo, si el proyecto cuenta con un buen equipo de trabajo, se podrán solucionar los problemas y cumplir con las fechas estimadas de entrega sin mermar la calidad del producto.
Checkpoint
Asegúrate de poder:
Referencias