Adsence

martes, 30 de diciembre de 2014

Estimación de Costos y Esfuerzo en los Proyectos de Software aplicando COCOMO

Introducción

La estimación de esfuerzos dentro de los proyectos es una de los dolores de cabeza dentro de la gerencia de proyectos, existen muchas herramientas que nos ayudan con esta tarea entre las cuales tenemos el Modelo Constructivo de Costos (COCOMO) que es un modelo matemático de base empírica utilizado para estimación de costos de software. Incluye tres submodelos, cada uno ofrece un nivel de detalle y aproximación, cada vez mayor, a medida que avanza el proceso de desarrollo del software: básico, intermedio y detallado.
En la estimación del tamaño de software COCOMO II utiliza tres técnicas: Puntos Objeto, Puntos Función No Ajustados y Líneas de Código Fuente. Además se emplean otros parámetros relativos al tamaño que contemplan aspectos tales como: reúso, reingeniería, conversión, y mantenimiento.

Puntos de función

 Los Puntos Función procuran cuantificar la funcionalidad de un sistema de software. La meta es obtener un número que caracterice completamente al sistema. Son útiles estimadores ya que están basados en información que está disponible en las etapas tempranas del ciclo de vida del desarrollo de software. COCOMO II considera solamente UFP (Puntos Función no ajustados).
La fórmula de Albretch para calcular los puntos función, es la siguiente:
FP = UFP x TCF
Donde :
UFP: Puntos Función no Ajustados
 TCF: Factor de Complejidad Técnica

Puntos de función no Ajustados (UFP)

Para calcular los UFP, se deben identificar los siguientes tipos de ítems:
·         Entradas Externas (Inputs): Entrada de datos del usuario o de control que ingresan desde el exterior del sistema para agregar y/o cambiar datos a un archivo lógico interno.
·         Salidas Externas (Outputs): Salida de datos de usuario o de control que deja el límite del sistema de software.
·         Archivo Lógicos Internos (Archivos): Incluye cada archivo lógico, es decir cada grupo lógico de datos que es generado, usado, o mantenido por el sistema de software.
·         Archivos Externos de Interface (Interfaces): Archivos transferidos o compartidos entre sistemas de software.
·         Solicitudes Externas (Queries): Combinación única de entrada-salida, donde una entrada causa y genera una salida inmediata, como un tipo de solicitud externa.
Una vez identificados los ítems se clasifican de acuerdo al grado de complejidad en: bajo, promedio o alto. Se asigna un peso a cada ítem según el tipo y el grado de complejidad correspondiente. Finalmente los UFP son calculados mediante la sumatoria de los pesos de todos los ítems identificados.
 

La siguiente tabla muestra cómo se determinan los niveles de complejidad de cada tipo de ítem en función del número y tipo de elementos de datos y archivos involucrados.
Una vez asignado el nivel de complejidad traducir al peso asociado a través de la siguiente tabla que muestra las ponderaciones asociadas a cada tipo de ítem. Estas ponderaciones han sido derivadas y validadas empíricamente mediante la observación de una gran variedad de proyectos.

Ejemplo:

Por ejemplo si tengo que desarrollar un servicio web de catálogos:
Paso 1.- Identificar los Ítems:
Ítem
Cantidad
Entrada externa (llamada a la interfaz del servicio)
1
 Salida (Respuesta con información de catálogo).
1
 Solicitud Externa (proceso de petición).
1
Paso 2.- Determinar la complejidad de los Ítems (aplicar tabla niveles complejidad):
Ítem
Complejidad
Entrada externa (llamada a la interfaz del servicio)
Baja
 Salida (Respuesta con información de catálogo).
Baja
 Solicitud Externa (proceso de petición).
Baja
Paso 3.- Calcular pesos asociados:
Ítem
Peso
Entrada externa (llamada a la interfaz del servicio)
3
 Salida (Respuesta con información de catálogo).
4
 Solicitud Externa (proceso de petición).
3
Paso 4.- Calcular los puntos de función no Ajustados.
UFP = (1*3)+(1*4)+(1*3)=10
Esta medida es la entrada principal para ingresar en la herramienta publicada en la siguiente link esta herramienta nos ayuda aplicando el resto de algoritmos para calcular la complejidad técnica y el costo y esfuerzo previsto para el proyecto.
Esta es una de las herramientas disponibles para la estimacion de esfuerzo en los proyectos, si bien la aplicacion de algunas formulas y algoritmos puede resultar molesto no deja de ser una herramientas mas para estimar los proyectos.