SOFTWARE COST MODELING
Los modelos de coste del software (software cost modeling), son conjuntos de metadatos relacionados con las partes técnicas de un proyecto que ayudan significativamente a los jefes de proyecto a tomar mejores decisiones en la planificación de tareas. Las ventajas de elaborar correctamente estos modelos son:
- Tomar decisiones informadas sobre el manejo de los recursos del proyecto.
- Fijar plazos de tiempo de la finalización de cada módulo más ajustadas.
- Realizar una mejor planificación de trabajo en cada fase del proyecto.
PROCESO
Para obtener estos modelos de coste del software, se hace necesario analizar todas las tablas de datos históricos que una empresa o equipo ha ido generando a lo largo de los distintos trabajos que ha realizado.
Sin embargo, analizar uno a uno todos estos datos, resulta una tarea inabarcable, incluso para las capacidades de cómputo de un ordenador moderno. Por ello, resulta indispensable, disminuir el volumen de datos a analizar. Para llevar a cabo esta tarea, los autores del artículo, recurren a técnicas de minería de datos, buscando así, obtener con el menor esfuerzo posible, los datos más útiles escondidos en los históricos de proyecto.
Con esta tabla podemos ver, un ejemplo de los datos que se recogen de un proyecto software.
La técnica que se decide aplicar en este paper, es la poda de datos, es decir, la eliminación de aquellos datos almacenados que resultan irrelevantes para la posterior planificación. Esta poda se aplica de dos maneras, podando las filas o podando las columnas. Ambas podas han sido ya estudiadas por otros autores, sin embargo, nunca se han aplicado de forma conjunta.
La poda de filas (también conocida como estratificación), recolecta datos de diferentes proyectos sobre una misma variable. Esto permite ver cómo cambia un mismo indicador, a lo largo de los distintos proyectos en lo que se ha aplicado.
La poda de columnas (también conocida como selección de subconjuntos), ordena las columnas disponibles en función de su utilidad, entendiendo por utilidad, la capacidad de una columna para predecir un valor de la variable objetivo.
Se ha demostrado que por separado, ambas podas dan buenos resultados al modelar los costes de software. Sin embargo, y aquí radica la innovación de los autores del artículo, ellos pueden demostrar que cuando se aplican ambas podas de forma conjunta, el rendimiento de la estimación de costes aumenta desde un 15 por ciento hasta un 97 por ciento.
Motivación de la poda
Una vez vistos los resultados que ofrece la poda, es importante entender las razones de por qué este mecanismo resulta útil.
- Submuestreo: Muchos de los datos que se recogen en los históricos suelen resultar inútiles para el modelado de costes de software, por lo que es mejor ignorarlos.
- Reducir varianza: Reduciendo el volumen de datos, se pueden obtener relaciones entre los datos más útiles.
- Datos irrelevantes: Es importante eliminar los datos que no aportan nada de información.
- Ruido: Es importante diferenciar los datos que aportan mejores resultados de los que hacen que el modelo se desvíe.
- Variables correlacionadas: Detectar las variables que influyen en otras variables, para así entender todas las relaciones del modelo de software.
Ejecución
Para ver como podar, los autores deciden modelar los datos con COCOMO, tanto COCOMO I como COCOMO II, y en función de esta decisión podan los datos.
El algoritmo de poda de datos que utilizan es Wrapper variable-subtraction, que selecciona combinaciones de columnas que entiende que resultan importantes para generar el modelo de coste de software.
Durante la ejecución, los autores del artículo ejecutan el Wrapper 10 veces, y ordenan las columnas según el número de veces que el algoritmo las haya marcado como relevantes, una vez hecho esto, eliminan las columnas que menos veces hayan sido marcadas (columnas cuyos datos son menos relevantes para el modelo). Este proceso anterior, lo ejecutan 30 veces sobre los datos disponibles, y de las salidas, obtienen el mejor modelo, mirando la media y la desviación estándar.
Todo este proceso se encuentra totalmente automatizado mediante la utilización de WEKA (waikato enviroment for knowledge analysis), una librería java de minería de datos.
Resultados
Este proceso lo ejecutan sobre diferentes conjuntos de datos, con diferentes características, obteniendo finalmente las siguientes conclusiones:
- La poda de datos siempre mejora la efectividad del modelo. En todos los casos estudiados, fue útil ignorar una porción de los datos disponibles.
- La combinación de poda de filas con la de columnas, mejora de forma considerable, el esfuerzo de estimar y generar un buen modelo de datos.
- Cuanto más pequeño es el conjunto de datos, más efectiva resulta la poda, es decir, cuanto más pequeño sea el conjuntos de datos iniciales más importante resulta realizar esta poda.
Con este gráfico, podemos ver las diferencias que existen entre realizar poda separada o poda combinada, en la parte de arriba, es importante que la línea verde se acerque a 100, es decir, a mayor precisión en los datos. Y en la parte de abajo, cuanto más decrezca la línea azul menos datos hay que analizar y por tanto, menos tiempo de cómputo.
Limitaciones de la poda
Los responsables de llevar a cabo este proyecto, enfatizan que es necesario tener un conjunto de datos con históricos de los proyectos ya realizados por ese equipo para poder utilizar la herramienta descrita en este paper. No quiere decir, que no se deba aplicar la poda al conjunto, sino que existen ciertos subconjuntos de datos o variables que no resulta conveniente que sean eliminados aunque así lo diga el algoritmo de la poda:
- Si no se posee un histórico de los proyectos llevados a cabo.
- Si el modelo de costes ignora ciertos efectos que los usuarios creen importantes. Esto sucede porque los modelos de coste no son perfectos, y en ciertas ocasiones, un humano entiende mejor el problema que el propio ordenador.
- Si por alguna razón, el subconjunto de datos que se quiere podar puede llegar a resultar útil en un futuro (aunque no resulte útil en el presente).
Por todo los descrito anteriormente, los autores del artículo, han demostrado que una poda combianda de filas y columnas, ayuda al ordenador a hacer un modelo de coste de software mucho más preciso que los modelos anteriores.