Descargar

Proyectos Software. Estimación del Coste


    1. Resumen
    2. Descripción del Problema
    3. Aproximación histórica al problema
    4. Técnicas y Metodología
    5. Método de Modelado
    6. Conclusiones
    7. Referencias

    Resumen

    La estimación de plazos en proyectos es una tarea crítica, que puede conducir al fracaso del proyecto, debido al alargamiento de la duración o a una mala estimación del esfuerzo necesario para ejecutarlo. Es necesario disponer de una herramienta que nos ayude a tener más conocimiento sobre el proyecto para seleccionar las variables influyentes sobre las desviaciones del proyecto y que proporcione unas estimaciones más ajustadas. En este artículo se analizan la viabilidad y las ventajas del desarrollo de un sistema basado en técnicas de inteligencia artificial capaz de seleccionar las variables que afectan a la duración del proyecto y al esfuerzo necesario para realizarlo a partir de un conjunto de datos históricos, frente a las técnicas actuales. Para ello, se propone un método para el análisis de los datos existentes, y su preprocesamiento para conseguir un modelo que se ajuste a las necesidades del gerente de proyectos.

    Palabras clave: Estimación de Plazos y Esfuerzo, Gestión de Proyectos, Minería de Datos, Calidad, Planificación.

    1. Una de las fases en la gestión del proyecto es la estimación del esfuerzo y plazo de cada una de las actividades de las que constará, por lo tanto, es necesario disponer de buena información sobre la duración y el esfuerzo en personas-mes necesarias para realizar cada tarea.

      Disponer de esa información facilitará la gestión del proyecto tanto a nivel de costes como de plazos, facilitando la distribución de recursos y disminuyendo los riesgos o zonas criticas.

      La información histórica, procedente del cierre [9] de proyectos anteriores, proporcionará la base de conocimiento sobre la que se podrán aplicar las técnicas para extrapolar este conocimiento a futuros proyectos.

      El control del coste y su precisión a lo largo de la vida del proyecto, y la recopilación de los datos característicos de cada proyecto al finalizar éste, producen un efecto de corrección continua que permite fijar modelos específicos que facilitarán la planificación de los nuevos proyectos en todos los aspectos: costes, plazos y recursos.

      Es necesario disponer de una herramienta que nos ayude a tener más conocimiento del problema y permita seleccionar las variables influyentes sobre las desviaciones del proyecto y que proporcione unas estimaciones más ajustadas.

      En este artículo se analiza el desarrollo de un sistema basado en técnicas de inteligencia artificial capaz de seleccionar las variables que afectan a la duración del proyecto y al esfuerzo necesario para realizarlo a partir de un conjunto de datos históricos.

      Para el desarrollo del sistema se utilizó un conjunto de datos pertenecientes al International Software Benchmarking Standards Group,[1] recopilados a partir de la información extraída de la ejecución de más de 2000 proyectos. Estos datos contienen valores numéricos y categóricos, existiendo un gran porcentaje de valores perdidos. Por este motivo, los datos fueron sometidos a un exhaustivo preprocesamiento y se seleccionaron las técnicas de inteligencia artificial que mejor se ajustaran a la condición de los datos.

      Para desarrollar este articulo se comenzará describiendo cual es el alcance del problema que se pretende buscar solución. A continuación se enumerará un resumen de las técnicas utilizadas actualmente. Dado que se parte de un conjunto de datos históricos de proyectos anteriores, se aplicará una metodología de minería de datos. Se describe la metodología CRISP DM [8] que es la que se ha utilizado para este problema.

      Por ultimo se describe del método de modelado y las conclusiones a las que se han llegado para solucionar el problema planteado.

    2. Introducción

      La estimación del coste de un proyecto en sistemas de información, consiste en la aplicación de una serie de técnicas y procedimientos que una organización utiliza para conocer con adelanto el coste que conlleva el análisis, desarrollo, implantación y pruebas del sistema. La estimación precisa de los recursos y tiempo necesarios para el desarrollo de un proyecto, lo cual es esencial para el perfecto desarrollo de cualquier proyecto, pero más si cabe, en el sector informático, en el que los presupuestos y plazos se superan con creces de forma habitual, provocando en muchos casos el fracaso del proyecto.

      La predicción lo más exacta posible de los costes de un proyecto de sistema de información es una actividad crítica a la hora de tomar decisiones de gestión y determinar con detalle el esfuerzo y la dedicación que el jefe de proyecto, los analistas y programadores que se deberán aplicar. Sin una capacidad razonable de estimación de costes, los jefes de proyecto no podrán determinar cuanto tiempo y recursos requiere el proyecto, lo cual significa que éste está fuera de control desde el principio. Los analistas no podrán hacer análisis acertados durante las etapas de diseño, el personal del proyecto no podrá decir a sus jefes y clientes que sus plazos y presupuestos son irreales. Esto puede conducir a falsos optimismos y los inevitables retrasos y desviaciones.

      A pesar de que estamos hablando del término "estimación de coste", en proyectos de sistemas de información los valores obtenidos no se suelen medir directamente en unidades monetarias. Las estimaciones suelen ser valoraciones, con un cierto error, del esfuerzo esperado para el desarrollo del proyecto y de los plazos de tiempo requeridos para completarlo.

      Este es un producto sin existencia física propia y cuyo coste principal reside en su desarrollo o diseño (no en su fabricación o replicación a partir de la primera copia), es lógico que se asuma que el coste de su producción está dominado por los gastos de personal, midiéndose en personas-mes o personas-año.

      La estimación en los proyectos de sistemas de información presenta dificultades particulares ya que los productos que generan no se producen una y otra vez, al contrario, es habitual desarrollar un nuevo producto cada vez, empleando distintas técnicas y herramientas. La estimación en el software es, por ello, más inexacta, aunque no imposible. De hecho, otros sectores sufren problemas graves de estimación de costes cuando se enfrentan a nuevos productos o hay que emplear nuevas técnicas.

      Existen además, otras razones que dificultan la estimación de proyectos, entre ellas las presiones en la empresa (para disminuir el coste o los plazos necesarios) y el hecho de que existe una carencia generalizada de datos sobre proyectos terminados (tamaño del software, costes, productividad, etc.) que podrían guiar a los profesionales a la hora de realizar estimaciones.

      Todos los métodos actuales dependen de la cantidad de información disponible. A medida que se avanza en el proyecto, se obtiene una mayor cantidad de detalles y de información más fiable, por lo que la precisión de la estimación mejora progresivamente. Por ello, la estimación siempre debe ser un proceso continuo, con constantes refinamientos y mejoras, más que una actividad puntual.

    3. Descripción del Problema
    4. Aproximación histórica al problema

    Para realizar la recolección de los datos necesarios para solucionar el problema planteado, se procede al estudio de otros métodos utilizados en la actualidad para conocer cuales son los atributos que influyen y ayudan a definir el problema.

    El coste del desarrollo software es función básicamente del personal necesario y este se deriva de diversos factores relativos al proyecto, al equipo humano, las condiciones de desarrollo y el producto. La identificación del producto se realiza mediante métricas que caractericen su tamaño que es el factor primario en todos los modelos de coste.

    Existen dos formas habituales de medir el tamaño de un proyecto de sistemas de información que son, líneas de código y puntos de función.

    El Análisis de Puntos de Función [5] es una métrica que cuantifica la funcionalidad que hay que entregar al usuario al construir una aplicación. La propuesta inicial de los puntos de función fue realizada por A. J. Allbrecht y, desde entonces, ha sufrido diversos refinamientos y han aparecido diferentes versiones de la misma. Todas las variedades de puntos de función se apoyan en datos que implican la existencia de una especificación más o menos formalizada.

    La originalidad de este método está en que permite medir el tamaño de los proyectos de sistema de información, a partir de la visión que tienen los usuarios finales de las funciones que requiere la aplicación, sin preocuparse de la tecnología, herramientas o lenguajes de programación que serán utilizados.

    Los puntos de función clasifican estas vistas en cinco tipos de funcionalidades:

    • Entradas, en esta categoría se encuentra todo el aporte de comunicación de los usuarios al programa.
    • Salidas, todos los aportes de comunicación del programa con el usuario.
    • Ficheros lógicos internos, principales ficheros lógicos desde el punto de vista del usuario.
    • Ficheros de interfaz, ficheros para interactuar con otros programas.
    • Consultas, todas las entradas que han de provocar una salida inmediata.

    Una vez ponderados estos factores en función de la complejidad se consiguen los puntos de función no ajustados.

    Pero para conocer el efecto real de las funciones es necesario incorporar otros datos que introduzcan el efecto de aquellos factores que afecten globalmente a la aplicación. Estos factores de ajuste tienen en cuenta circunstancias como factores humanos o tecnológicos.

    Otro método es MARK II, este método es una evolución del modelo de Allan J. Albrecht, siendo su principal característica que contempla el sistema como una colección de transacciones lógicas compuestas por componentes de entrada, de proceso y de salida.

    Una vez ajustados los Puntos de Función, para realizar el cálculo de la duración del proyecto bastará con multiplicar el valor calculado por los días en que se valore cada Punto de Función. En cada organización se asigna un valor en días, diferente para el Punto de Función.

    También existen métodos que cuantifican las funcionalidades con métricas orientados a objetos.

    Otros métodos que se pueden utilizar para estimar el coste de un proyecto de sistemas de información es la "Opinión de expertos", que consiste en la consulta a personas experimentadas en la materia de que se trate.

    Otra técnica utilizada es la estimación por analogía, el cual consiste en una variante más formal de la opinión de expertos en la que se compara el proyecto que se va a desarrollar con uno o más proyectos terminados de los que se dispone de datos. En función de las similitudes y diferencias con dichos proyectos se deduce el coste del nuevo desarrollo.

    Otro conjunto de métodos son los que se denominan "ecuaciones, modelos de estimación". En general, son fórmulas matemáticas que relacionan los diversos parámetros del proyecto (tamaño del software que se debe construir, condiciones de entorno del proyecto, etc.) con el coste o esfuerzo requerido. Entre estos se encuentra SLIM y COCOMO.

    COCOMO [6] es un método de estimación empírica y está basado en datos obtenidos de la experiencia. Consiste en estimar el esfuerzo en personas-mes tomando como base el tamaño medido en líneas de código y la duración del proyecto basándose en el esfuerzo. También utiliza unos parámetros de ajuste según el tipo o modo de desarrollo del proyecto, que puede ser "organic", "semidetached" y "embedded".

    A partir de estas ecuaciones básicas, COCOMO distingue tres modelos distintos que se corresponden con las diferentes cantidades de información disponible en las distintas etapas del ciclo de vida, que será básico, intermedio o avanzado.

    Para el cálculo final del esfuerzo necesario, además de las fórmulas, se ha de aplicar un factor de ajuste del esfuerzo que incluyen atributos del producto, hardware, del personal y del proyecto.

    Posteriormente surge una nueva evolución, COCOMO II [6] que se dirige a las siguientes tres fases del ciclo de vida en espiral que son: desarrollo de aplicaciones, diseño anticipado y Post-Arquitectura. También se han cambiado los tres modos del exponente, se han reemplazado por cinco factores de escala.

    1. Dado que se parte de un conjunto de datos históricos, se plantea utilizar una metodología orientada a la minería de datos, ya que se pretende conseguir mediante técnicas y herramientas extraer un conocimiento implícito, que actualmente no conocemos y se encuentra almacenado en el conjunto de datos. Utilizar esta metodología tiene como objetivo predecir de forma automatizada tendencias y comportamientos o construir un modelo desconocido.

      La metodología CRISP-DM [8] estructura el ciclo de vida de un proyecto de minería de datos en seis fases, que interactúan entre ellas de forma iterativa durante el desarrollo del proyecto.

      Fases del proceso de modelado metodología CRISP-DM.

      La primera fase, análisis del problema, incluye la comprensión de los objetivos y requerimientos del proyecto desde una perspectiva empresarial, con el fin de convertirlos en objetivos técnicos y en una planificación.

      La segunda fase de análisis de datos comprende la recolección inicial de datos, en orden a que sea posible establecer un primer contacto con el problema, identificando la calidad de los datos y estableciendo las relaciones más evidentes que permitan establecer las primeras hipótesis.

      Una vez, realizado el análisis de datos, la metodología establece que se proceda a la preparación de los datos, de tal forma que puedan ser tratados por las técnicas de modelado. La preparación de datos incluye las tareas generales de selección de datos a los que se va a aplicar la técnica de modelado (variables y muestras), limpieza de los datos, generación de variables adicionales, integración de diferentes orígenes de datos y cambios de formato.

      La fase de preparación de los datos, se encuentra muy relacionada con la fase de modelado, puesto que en función de la técnica de modelado que vaya a ser utilizada los datos necesitan ser procesados en diferentes formas. Por lo tanto las fases de preparación y modelado interactúan de forma sistemática.

      En la fase de modelado se seleccionan las técnicas de modelado más apropiadas para el proyecto de minería de datos específico. Antes de proceder al modelado de los datos se debe de establecer un diseño del método de evaluación de los modelos, que permita establecer el grado de bondad de los modelos. Una vez realizadas estas tareas genéricas se procede a la generación y evaluación del modelo. Los parámetros utilizados en la generación del modelo dependen de las características de los datos.

      En la fase de evaluación, se evalúa el modelo, no desde el punto de vista de los datos, sino del cumplimiento de los criterios de éxito del problema. Se debe revisar el proceso seguido, teniendo en cuenta los resultados obtenidos, para poder repetir algún paso en el que, a la vista del desarrollo posterior del proceso, se hayan podido cometer errores. Si el modelo generado es válido en función de los criterios de éxito establecidos en la primera fase, se procede a la explotación del modelo.

      Normalmente los proyectos de minería de datos no terminan en la implantación del modelo sino que se debe documentar y presentar los resultados de manera comprensible en orden a lograr un incremento del conocimiento. Además, en la fase de explotación se debe asegurar el mantenimiento de la aplicación y la posible difusión de los resultados [3].

    2. Técnicas y Metodología

      Siguiendo los pasos marcados por la metodología, se realiza la adquisición de los datos para su posterior preparación y generar el modelo.

      Para comenzar el análisis del conjunto de datos, se ha partido de la base de datos histórica que ha proporcionado ISBSG (Intenational Software Benchmarking Standards Group), [1] el cual dispone de un repositorio de más de 2000 proyectos. Los datos con los que se trabaja nos aportan información sobre el tipo de proyecto, tipo de producto, desarrollo, tamaño, tipo de equipo, puntos de función y esfuerzos.

      A continuación se procede a realizar una exploración de los datos y una verificación de la calidad.

      Para lo cual se realizan técnicas estadísticas básicas, para encontrar las propiedades de los datos. Dada la gran cantidad de variables categóricas se procede a realizar histogramas con las frecuencias de ocurrencia.

      En este punto se procede a realizar la fase de preparación de los datos. Esta fase ha sido muy costosa debido a la gran cantidad de valores ausentes, sobre los que se han analizado la utilización de diversas técnicas para predecir o eliminar ese hueco en la información.

      Porcentaje de variables que con valores ausentes.

      Se han realizado estudios para comprobar si esa ausencia de información tiene algún tipo de influencia en el esfuerzo necesario para realizar el proyecto, que es la variable que se ha identificado como salida del modelo.

      Otro de los problemas encontrados es la gran presencia de variables categóricas de difícil procesamiento por ciertos métodos de modelado.

      Se han considerado diferentes técnicas para el tratamiento y preprocesado de estas variables. Cuando el número de clases existente era reducido (inferior a seis), el tratamiento dado a los datos ha consistido en crear tantas variables como clases. Así por ejemplo, si la variable categórica "plataforma de desarrollo", contenía los valores MR , MF y PC, se han creado 3 variables codificadas como (1,0,0) si el valor de la variable es MR, (0,1,0) si es MF y (0,0,1) si es PC.

      Cuando el número de clases de una variable era muy alto (superior a seis) se ha optado por transformar el valor de la categoría directamente a un valor numérico.

      Para el tratamiento de los datos perdidos se ha optado por seleccionar una técnica robusta que permita el manejo de este tipo de datos, tal como redes SOM, MARS [2] y MART [4].

      Para el proceso de evaluación de los resultados los datos han sido divididos en tres conjuntos separados de forma aleatoria: uno de ellos que contiene el 75% de los datos ha sido destinado a la construcción del modelo, un 10% para la prueba del modelo y selección del mejor modelo. Los resultados se han validado con el 15% de datos restantes.

      Una vez generado el modelo se puede observar que la variable que más información aporta a la estimación del esfuerzo, para este modelo, es el tamaño máximo del equipo. También se puede considerar importante la estimación de los puntos de función y el valor del factor de ajuste.

      Otro factor importante es la plataforma de desarrollo utilizada y el tipo de lenguaje que se utiliza en la programación, se ha de destacar que la ausencia de información en estas dos variables tiene una gran importancia relativa para la estimación del esfuerzo.

      También se ha introducido en el modelo un parámetro informativo respecto a la calidad de la información, en este caso se han dividido en cuatro categorías que son: convincente, correcto, no probado y poca credibilidad.

      El modelo también tiene en cuenta si se ha realizado una adaptación del código, si se ha utilizado planificación, así como otras variables relacionadas con la métrica utilizada y la implicación de los recursos.

    3. Método de Modelado
    4. Conclusiones

    Todas las normas o metodologías de gestión de proyectos que existen actualmente hacen hincapié en la importancia de la gestión de plazos y costes dentro de cualquier tipo de proyecto y mucho más en los proyectos de sistemas de información debido a las peculiaridades propias.

    El sistema elegido para realizar las estimaciones ha de tener la confianza del director de proyectos y permitir adaptarse a las necesidades cambiantes de la producción de los nuevos sistemas de información.

    La recopilación de datos históricos en el cierre del proyecto es imprescindible para actualizar la base de datos de proyectos y para que el sistema pueda ajustar sus parámetros a las condiciones cambiantes de los sistemas de información.

    Referencias

    1. ISBSG. International Software Benchmarking Standards Group. http://www.isbsg.org/
    2. Friedman, Jerome H. Multivariate Adaptive Regression Splines. The annals of statistics. Volumen:19, Nº 1, pag. 1-141, 1991.
    3. Rodríguez M. T., Ortega F., Rendueles J. L., Menendez C. Convination of Multivariate Adaptive Techniques and neural networks prediction and control of internal cleanliness in Steel Strips. Procedeeings of EUNITE 2003. Oulu 2003
    4. Friedman, Jerome H. Greedy function approximation: a gradient boosting machine. Technical report, department of Statistics, Stanford university 1999.
    5. IFPUG, International Function Point Users’ Group. http://www.ifpug.org/
    6. COCOMO, Constructive Cost Model. http://sunset.usc.edu/research/COCOMOII/
    7. Chapman, P, Clinton, J. Khabaza, T. Reinartz, T. Rüdiger, W. The CRISP-DM Process Modelo, CRISP-DM Discusión Paper, 1999
    8. CRISP DM, CRoss-Industry Standard Process for Data Mining. http://www.crisp-dm.org/
    9. ISO 10006. Guía de gestión de calidad. Calidad en Gestión de Proyectos.

    Carlos Alba González-Fanjul1

    Gemma Marta Martínez Huerta

    Joaquín Villanueva Balsera

    Valeriano Álvarez Cabal

    1Area de Proyectos de Ingeniería, Universidad de Oviedo. Escuela de Minas, C/Independencia 4, 3004, Oviedo