Estimación del proyecto

Índice

Estimación:

La estimación es una medida del esfuerzo(tiempo) que requiere un proyecto.
Los cálculos son sólo aproximaciones al esfuerzo real ya que no existe una manera de calcular exactamente las personas y el tiempo que requiere un proyecto.
A continuación se muestra la medida de tiempo del proyecto en relación a las 3 técnicas de medida de estimación.

Estimación por LOC (Lineas de código):

Para el cálculo de ésta estimación, hemos necesitado la ayuda de un programa (Practiline Source Code Line Counter) que contara las líneas de código que tiene nuestra aplicación a día 16/05/08. Un fragmento del recuento en dicho programa puede apreciarse en la siguiente imagen:

numLineas.jpg
  • El número real de lineas de código de nuestra aplicación es de 82363 (Sm).
  • La estimación pesimista de lineas de código estimadas está en 100000 (Spes).
  • La estimación optimista de lineas de código estimadas está en 65000 (Sopt).

Como estimación de lineas de código, se aplica la siguiente fórmula:

  • (Estimación de lineas) S = (Sopt + 4*Sm + Spes)/6 = (65000 + 4*82363 + 100000)/6 = 82408 lineas de código estimadas.

Para el cálculo final del esfuerzo total. Suponemos que la media de productividad del grupo está en 320 LOC/pm (lineas de código / personas * mes) asumiendo que no se tratan de trabajadores a tiempo completo. Por lo tanto:

  • Esfuerzo total = LOC estimadas / productividad media = 82408 LOC / 320 LOC/pm = 257 peronas * mes.

Puede que éste resultado impacte cuando somos 18 personas en el grupo. Sin embargo, hay que comentar que el número de lineas de código reales escritas por el grupo es mucho menor, ya que hay bastante código generado automáticamente por el IDE (NetBeans) utilizado en el desarrollo y código reutilizado.

Estimación por Puntos de Función (FP)

  • Estimación inicial calculada en base a puntos de función (FP):

En este caso, dado que nuestra aplicación es un framework con portal web, hace difícil asignar puntos de función al mismo. Por lo tanto guiandonos por los casos de uso realizamos la asignación de pesos (algo subjetiva) siguiente:

Valor estimado = (Sopt + 4Sm + Spes) / 6

Optimista (Sopt) Más probable (Sm) Pesimista(Spes) Valor estimado
Entradas del usuario 8 11 16 9
Salidas del usuario 9 13 15 12
Consultas del usuario 4 7 9 6
Archivos 8 12 18 12
Interfaces externos 10 15 22 15

Dados estos pesos nos disponemos ha realizar el cálculo de la complejidad media:

Valor estimado Peso asignado Cuenta por caracteristica
Entradas del usuario 9 7 63
Salidas del usuario 12 7 84
Consultas del usuario 6 4 24
Archivos 12 6 72
Interfaces externos 15 7 103

(Se puede observar que la complejidad mayor viene dada por los interfaces. Esto es debido al peso que tienen las interfaces de los juegos y el uso de Sprites en los mismos.)

Por lo tanto valor total de FP es:

  • Valor total = 63+84+24+72+103 = 346 FP

Para realizar la corrección asignamos peso a las siguientes preguntas:

  • 1. ¿Necesita el sistema copias de seguridad y recuperación?:0
  • 2. ¿Se necesita comunicación de datos?:5
  • 3. ¿Hay funciones de procesamiento distribuido?:1
  • 4. ¿Es crítico el rendimiento?:2
  • 5. ¿Trabajará el sistema en un entorno de operación que ya existe y que se utiliza mucho?:5
  • 6. ¿Se necesita entrada de datos on-line?:5
  • 7. ¿Requiere la entrada de datos on-line una transacción de entrada que necesite desarrollarse a través de varias pantallas u operaciones?:5
  • 8. ¿Se actualizan los ficheros maestros on-line?:2
  • 9. ¿Son complejas las entradas, salidas, ficheros, o consultas?:5
  • 10. ¿Es complejo el procesamiento interno?:4
  • 11. ¿Está el código diseñado para ser reutilizable? (¿Es reutilizable el código a diseñar?):5
  • 12. ¿Incluye el diseño la conversión y la instalación?:1
  • 13. ¿Está diseñado el sistema para instalaciones múltiples en distintas organizaciones?:3
  • 14. ¿ Está diseñada la aplicación para facilitar el cambio y la facilidad de uso por parte del usuario?:4
  • Valor total de respuestas = 46
  • Factor de ajuste de complejidad = 0.65 + 0,01*46 = 1,11
  • Valor total FP ajustado = 346 * 1,11 = 384 FP.

Suponiendo una productividad del grupo de 3 FP / personas*mes entonces:

  • Personas mes = 384 FP / 3 FP*persona*mes = 128 personas * mes.

Recordar que el dato es muy subjetivo y puede variar mucho según la estimación de FP/persona*mes del grupo.

Estimación basada en el proceso

Funcionalidades en las que hemos descompuesto nuestra aplicación:

  • Cargador de módulos. (CdE)
  • Módulo de comunicaciones. (MdC)
  • Módulo de juegos (MdJ)
  • Módulo de chat.(MdCh)
  • Módulo de base de datos.(MBD)
  • Módulo de log. (MLg)
  • Interfaces de usuario (I)
  • FrameWork cliente. (FrC)
  • FrameWork servidor. (FrW)
  • Probador offline. (PrO)
  • Juegos. (Ju)

Dadas estas funcionalidades les asignamos pesos (del 0 al 5) a los pasos seguidos en el proceso de creación de las mismas.

Actividades Planificación Riesgos Ingeniería Ingeniería Implementación Implementación Total
Tarea Analisis Diseño Codificación Pruebas
Funcionalidades
CdE 1 3 1,5 2 7,5
MdC 2 5 3 2,5 12,5
MdJ 2,5 4 3 2,5 12
MdCh 1,5 3 2,5 2 9
MBD 1 2 1,5 1,5 6
MLg 1 1 1 0,5 3,5
I 1,5 3 3 1 8,5
FrC 2 4 3 1,5 10,5
FrW 2 4 3 1,5 10,5
PrO 1 2 3,5 1 7,5
Ju 1 3 2,5 1,5 9
Total 1 1 17,5 34 27,5 17,5 86,5

Por lo tanto como valor de personas mes:

  • Valor total = 87 Personas*mes (redondeando hacia arriba)

También comentar que éste método es algo subjetivo y que depende mucho de la asignación de pesos el resultado final.

Resumen de resultados de estimaciones

  • Resultado calculado por lineas de código:257 personas*mes.
  • Resultado calculado por puntos de función:128 personas*mes.
  • Resultado calculado por proceso:87 personas*mes.

Recordemos que en el resultado de la estimación por lineas de código se veía afectado por la cantidad elevada de código generado automáticamente por el IDE, ello conlleva a un resultado muy superior a los otros 2 métodos. Sin embargo, los métodos de estimación por puntos de función y por proceso son más subjetivos.