Estimación de Proyectos de Software: Modelos y Métodos Clave
MODELO DE ESTIMACIÓN
INTRODUCCIÓN
La gestión de todo proyecto de software siempre comienza con la planificación del proyecto y sus actividades. Antes de que se empiece con el proyecto, el gestor y su equipo deben hacer una estimación del proyecto, es decir, el trabajo, el esfuerzo, los recursos hardware y software que se necesitarán, el costo y el tiempo necesario para culminar el proyecto. En la planificación del proyecto se determinarán tareas y tiempos que se deben cumplir, así como también, los responsables de que se cumplan. La estimación del proyecto determinará casi con exactitud el verdadero costo y el esfuerzo que se necesita en el desarrollo de un proyecto.
Un gran error en la estimación del costo puede ser lo que marque la diferencia entre beneficios y pérdidas. La estimación del costo y del esfuerzo del software nunca será una ciencia exacta, son demasiadas las variables: humanas, técnicas, de entorno, políticas, que pueden afectar el costo final del software y el esfuerzo aplicado para desarrollarlo.
ESTIMACIÓN BASADA EN EL PROCESO
La técnica más común para estimar un proyecto es basar la estimación en el proceso que se va a utilizar, es decir, el proceso se descompone en un conjunto relativamente pequeño de actividades o tareas, y en el esfuerzo requerido para llevar a cabo la estimación de cada tarea.
Al igual que las técnicas basadas en problemas, la estimación basada en el proceso comienza en una delineación de las funciones del software obtenidas a partir del ámbito del proyecto. Se mezclan las funciones del problema y las actividades del proceso. Como último paso se calculan los costos y el esfuerzo de cada función y la actividad del proceso de software.
DIFERENTES MODELOS DE ESTIMACIÓN
Los diferentes modelos de estimación para proyectos pueden ser clasificados de diversas maneras, de entre las cuales se deben destacar las aportadas por dos autores principales.
Según Basili
- Modelo con una o varias variables estáticas
- Modelo con varias variables dinámicas
- Modelos teóricos con algoritmos prediseñados
Según Kitchenham
Propone una clasificación más simple para estos modelos, basada en distinguir entre aquellos que especifican la relación entre varios parámetros de costos (llamados modelos de restricción) y los que predicen el valor de un parámetro de costo (llamados modelos de factor empírico).
MODELOS EMPÍRICOS
Donde los datos que soportan la mayoría de los modelos de estimación se obtienen de una muestra limitada de proyectos. Por esta razón, el modelo de estimación no es adecuado para todas las clases de software y en todos los entornos de desarrollo. Por lo tanto, los resultados obtenidos de dichos modelos se deben utilizar con prudencia.
Los modelos empíricos para la estimación del software utilizan fórmulas empíricas para calcular el esfuerzo y coste como una función de las LDC o PF. De estos modelos, el más conocido es el COCOMO (Constructive Cost Model).
- Utilizan fórmulas derivadas empíricamente de una muestra limitada de proyectos para predecir el esfuerzo en función de LOC o PF.
- La estimación de los valores de LOC y PF se realiza utilizando las técnicas de descomposición.
- Los valores resultantes se aplican a la fórmula del modelo que se haya escogido para obtener el esfuerzo en hombres-mes.
- Precisamente por venir de una muestra limitada, no son adecuados para toda clase de software ni para todo medio ambiente de desarrollo.
MODELO COCOMO
Entre los distintos métodos de estimación de costes de desarrollo de software, el modelo COCOMO (COnstructive COst MOdel) desarrollado por Barry M. Boehm, se engloba en el grupo de los modelos algorítmicos que tratan de establecer una relación matemática, la cual permite estimar el esfuerzo y tiempo requerido para desarrollar un producto.
Por un lado, COCOMO define tres modos de desarrollo o tipos de proyectos:
- Orgánico: Proyectos relativamente sencillos, menores de 50 KDLC (Kilo Líneas de Código), en los cuales se tiene experiencia de proyectos similares.
- Semi-acoplado: Proyectos intermedios en complejidad y tamaño (menores de 300 KDLC), donde la experiencia en este tipo de proyectos es variable.
- Empotrado: Proyectos bastante complejos, en los que apenas se tiene experiencia y se engloban en un entorno de gran innovación técnica.
Y por otro lado, existen diferentes modelos que define COCOMO:
- Modelo básico: Se basa exclusivamente en el tamaño expresado en LDC. Se utiliza para obtener una primera aproximación rápida del esfuerzo.
Estos valores son para las fórmulas:
- Personas necesarias por mes para llevar adelante el proyecto (MM) = a * (Klb)
- Tiempo de desarrollo del proyecto (TDEV) = c * (MMd)
- Personas necesarias para realizar el proyecto (CosteH) = MM / TDEV
- Costo total del proyecto (CosteM) = CosteH * Salario medio entre los programadores y analistas.
Se puede observar que a medida que aumenta la complejidad del proyecto (modo), las constantes aumentan de 2.4 a 3.6, que corresponde a un incremento del esfuerzo del personal.
- Modelo intermedio: Además del tamaño del programa, incluye un conjunto de medidas subjetivas llamadas conductores de costes. Este añade al modelo básico quince modificadores opcionales para tener en cuenta en el entorno de trabajo, incrementando así la precisión de la estimación. Para este ajuste, al resultado de la fórmula general se lo multiplica por el coeficiente surgido de aplicar los atributos que se decidan utilizar.
Así pues, las fórmulas serán las siguientes:
- E = Esfuerzo = a * KLDCe * FAE (persona x mes)
- T = Tiempo de duración del desarrollo = c * Esfuerzod (meses)
- P = Personal = E / T (personas)
Para calcular el Esfuerzo, necesitaremos hallar la variable KDLC (Kilo-líneas de código), donde los PF son 261,36 (dato conocido) y las líneas por cada PF equivalen a 32.
Así pues, tras saber que son 32 LDC por cada PF, por el hecho de ser Visual Basic, el resultado de los KDLC será el siguiente:
KLDC = (PF * Líneas de código por cada PF) / 1000 = (261,36 * 32) / 1000 = 8,363 KDLC
Así pues, en nuestro caso, el tipo orgánico será el más apropiado, ya que el número de líneas de código no supera los 50 KLDC, y además el proyecto no es muy complejo; por consiguiente, los coeficientes que usaremos serán las siguientes: