TÉCNICAS DE INTELIGENCIA ARTIFICIAL PARA LA ESTIMACIÓN DEL
ESFUERZO EN PROYECTOS DE DESARROLLO DE SOFTWARE
ARTIFICIAL INTELLIGENCE TECHNIQUES FOR ESTIMATING THE
EFFORT IN SOFTWARE DEVELOPMENT PROJECTS
Ferreira, G., Gálvez, D., Quintero, L. y Antón, J.
Universidad Central “Marta Abreu” de Las Villas
Resumen
Entre los modelos algorítmicos de estimación de costo y esfuerzo más populares se encuentran COCOMO, SLIM, Puntos de Función. No obstante, desde los años 90, los modelos basados en técnicas de Inteligencia Artificial, fundamentalmente en técnicas de Aprendizaje Automático, han sido utilizados para mejorar la precisión de las estimaciones. Estos modelos se fundamentan en dos aspectos fundamentales: la utilización de los datos recogidos en proyectos anteriores en los que se realizaron estimaciones y la aplicación de diferentes técnicas de extracción de conocimiento, con la idea de realizar estimaciones de manera más eficiente, eficaz y, si fuera posible, con mayor precisión. El objetivo de este artículo consiste en presentar un análisis de algunas de estas técnicas, y cómo las mismas están sido aplicadas en la estimación del esfuerzo en proyectos de software.
Palabras claves:
Gestión de proyectos, estimación de esfuerzo, ingeniería de software, inteligencia artificial, aprendizaje automático.
Abstract
Keywords:
Project management, effort estimation, software engineering, artificial intelligence, machine learning.
1. INTRODUCCIÓN
La estimación del esfuerzo de producción es una necesidad en todas las áreas de la industria y una actividad imprescindible para el estudio de viabilidad de los proyectos. Desde el momento en que las empresas comenzaron a considerar las aplicaciones informáticas como productos industriales, aparecieron algunos problemas fundamentales que resolver, entre ellos el cumplimiento de los plazos de entrega dentro de costes establecidos manteniendo niveles de calidad; así como poder realizar un seguimiento y control de la evolución de los proyectos. De ahí que el establecimiento de métodos que permitan determinar y, posteriormente, alcanzar estos objetivos de una forma lo más realista y exacta posible ha sido un factor cada vez más importante para la Ingeniería Informática en su conjunto. Dichos métodos se han fundamentado en conocimientos adquiridos por distintas disciplinas de esta ciencia, desde la ingeniería del software hasta la inteligencia artificial.
Los métodos para determinar a priori los costos de producción de la industria informática dependen principalmente de la “mano de obra”. En consecuencia, casi todas las estimaciones se basan en el denominado “esfuerzo” de producción que, habitualmente, se mide en unidades “tiempo-hombre”. Para el cálculo o estimación del esfuerzo, en general, se utilizan formulaciones matemáticas con parámetros cuantitativos. Pero, la obtención de estas cantidades numéricas se hace en función de conceptos cualitativos que se asocian a juicios de valor inherentemente humanos.
Desde los años sesenta hasta hoy en día se han publicado numerosos modelos de estimación en Ingeniería del Software. También se han propuesto distintas clasificaciones de los mismos en estudios doctorales realizados, sobre la base de diferentes criterios (1; 2) entre otros. Así, por ejemplo, en (1) se hace referencia a la clasificación establecida por Capers Jones en su libro “Estimating Software Cost” donde se proponen seis métodos asociados a dos grandes grupos: métodos manuales y métodos automáticos. También se cita a Boehm, quien propone seis posibilidades de acuerdo a los principios conceptuales de los modelos: estáticos, conocimiento de expertos, aprendizaje automático, modelos dinámicos, modelos estadísticos y modelos compuestos. Una clasificación más actualizada se establece en el propio trabajo donde los modelos para la estimación aparecen clasificados en: modelos matemáticos paramétricos, estimación basada en analogías, modelos dinámicos y modelos basados en técnicas de Inteligencia Artificial. Estos últimos constituyen el objetivo principal de este trabajo, en el cual se presenta una caracterización de algunos de ellos en su aplicación a la temática de la estimación dentro de la ingeniería de software.
Inteligencia Artificial y las bases de datos internacionales sobre las cuales se han realizado las evaluaciones y comparaciones de los resultados de los modelos tratados en este trabajo. Estos modelos son caracterizados en la sección 3 mediante una descripción breve de los mismos y su aplicación a la estimación del esfuerzo en proyectos de software. En la sección 4 se presentan, a modo de conclusiones, los aspectos más significativos tratados.
2. CONCEPTOS teóricos
2.1 CRITERIOS de evaluación de los modelos de estimación
Para evaluar los modelos de estimación del esfuerzo en proyectos de software han sido utilizadas varias métricas. Sin embargo, tres de estas sobresalen debido a su amplia utilización.
La media de la magnitud del error relativo (Mean Magnitude of Relative Error - MMRE), es la más utilizada de todas. Se define como el promedio de la magnitud del error relativo (Magnitude of Relative Error - MRE).
n MRE MMRE
n
i
i / 1
Dónde:
Esfuerzo real Esfuerzo estimado
Esfuerzo real MRE _ _ *100/ _y n es la cantidad de proyectos (la multiplicación por 100 en la fórmula del MRE indica que el mismo está dado en por ciento).
Otra de las medidas utilizadas es PRED(l) definida como: n K
l
PRED( ) *100/
Donde n es el número de proyectos y K es el número de proyectos en los cuales la magnitud del MRE es menor o igual a l. Según (3) un modelo de estimación de costo de software se considera aceptablemente preciso si MMRE = 25% y Pred(25) = 75%.
La mediana de la magnitud del error relativo (Median Magnitude of Relative Error – MdMRE), es la otra medida que varios estudios han usado para analizar la precisión de las predicciones (4; 5).
estimado Esfuerzo
real Esfuerzo res
Abs_ _ _
Otras medidas de precisión, como el cuadrado del error medio ajustado (AMSE) y la magnitud del error relativo medio balanceado (BMMRE) pueden localizarse en (6).
2.2 BASES de datos de proyectos de software
Las bases de datos internacionales de proyectos de software (o repositorios de proyectos) deben su origen a la necesidad de reunir información de diversas características o atributos de proyectos de software, con el fin de construir modelos de estimación genéricos para las empresas y también para poder comparar su productividad. El uso de estos repositorios es otro de los recursos utilizados para evaluar y comparar los resultados de los modelos de estimación de esfuerzo en proyectos de software basados en técnicas de Inteligencia Artificial, con aquellos que se presentan con enfoques más tradicionales.
El repositorio PROMISE (PRedictOr Models In Software Engineering) (12) proporciona una diversidad de bases de datos de proyectos agrupadas en varios tópicos: predicción de defectos de software, predicción de esfuerzo, minería de textos, ingeniería de software basada en modelos y otras generales. En particular, para la predicción de esfuerzo, en (13) se presentan 12 bases de datos disponibles. Algunas de estas bases de datos son utilizadas en las secciones siguientes. Tukutuku Benchmarking Project (http://www.metriq.biz/tukutuku/index.html) es una iniciativa que también intenta reunir datos para construir modelos de estimación de costos sobre proyectos Web. Tiene recopilada información de 169 proyectos Web. En (5; 14) aparece la referencia a este repositorio como uno de los utilizados en la evaluación de modelos de estimación. En la recolección de datos de cada proyecto, este repositorio incluye características como: tipo de aplicación Web, lenguaje de programación utilizado, número máximo del equipo de desarrollo, tiempo de experiencia promedio del equipo con el lenguaje de desarrollo, uso o no de un proceso de desarrollo de software, de un programa de mejora del software y de un programa de métricas de software.
3. MODELOS basados en técnicas de inteligencia artificial
Las técnicas de Inteligencia Artificial (IA) tradicionalmente no han sido utilizadas en la estimación del esfuerzo de desarrollo del software, aunque han sido propuestas y utilizadas en otras áreas de la Ingeniería del Software (15). No obstante, desde los años 90 los modelos basados en estas técnicas, fundamentalmente en técnicas de aprendizaje automático (Machine Learning - ML), han sido utilizados para mejorar la precisión de las estimaciones. Estos modelos se fundamentan en el uso de datos recogidos en proyectos anteriores en los que se realizaron estimaciones y la aplicación de diferentes técnicas de extracción de conocimiento, con el objetivo de realizar estimaciones de manera más eficiente, eficaz y, si fuera posible, con mayor precisión. Una exploración en esta área del conocimiento refleja que las técnicas de IA más utilizadas son las siguientes:
1. Razonamiento Basado en Casos (RBC). 2. Redes Neuronales Artificiales (RNA). 3. Árboles de decisión (AD).
4. Redes bayesianas (RB).
5. Support Vector Regression (SVR). 6. Algoritmos genéticos (AG). 7. Programación genética (PG).
En los epígrafes que siguen se detalla la aplicación de cada técnica en la estimación del esfuerzo en proyectos de software.
3.1 RAZONAMIENTO basado en casos (RBC)
Según (16), los modelos matemáticos paramétricos existentes han fallado en el intento de producir estimaciones precisas del esfuerzo de desarrollo del software, afirmándose que las estimaciones analíticas no son suficientes. En esa investigación, se trata de resolver el problema de la estimación utilizando RBC, cuyo principio fundamental es el razonamiento por analogías. De ahí que se dedique un breve espacio a este enfoque general.
En un reporte de 1992 de un estudio realizado a cerca de 600 organizaciones (17), se afirma que la estimación por analogía es el método más comúnmente utilizado en la industria del software. La estimación por analogía es el proceso de encontrar uno o más proyectos similares a otro que va a ser estimado y entonces derivar el estimado, desde los valores de esos proyectos. Según (18) este tipo de estimación puede ser desarrollada como:
Estimación puramente por el experto (la “base de datos” de los proyectos previos está en la cabeza del experto).
Estimación por el experto, informalmente soportada por una base de datos conteniendo información acerca de proyectos concluidos.
En esta última clasificación se ubica el RBC, ratificándose en (22) que es un enfoque de estimación por analogía, y un proceso cíclico compuesto fundamentalmente por cuatro estados:
1. Recuperar el proyecto más similar (caso).
2. Reusar este proyecto para intentar resolver el problema. 3. Revisar la solución sugerida si es necesario.
4. Retener la solución y el nuevo problema como un nuevo proyecto.
En (23) se pueden encontrar múltiples ventajas que ofrece el RBC. Entre ellas se localizan las siguientes:
Evita problemas asociados con la adquisición y codificación de conocimiento.
Soporta mejor la colaboración con los usuarios, quienes están frecuentemente más dispuestos a aceptar soluciones que provienen de sistemas basados en analogías pues se derivan de una forma de razonamiento más parecida a la forma humana de resolver problemas.
Hace frente a dominios pobremente conocidos (por ejemplo, varios aspectos de Ingeniería de Software como es el caso de la estimación en la gestión de proyectos) ya que las soluciones están basadas en lo que realmente pasó al contrario de modelos hipotéticos. Sin embargo, la misma fuente bibliográfica hace mención a que las medidas de similitud
utilizadas en RBC, traen consigo algunas desventajas entre las que se pueden citar:
Que los rasgos simbólicos son problemáticos, ya que aunque hay varios algoritmos que han sido propuestos para acomodar los rasgos categóricos, estos tienden a ser bastante crudos pues tienden a adoptar una aproximación booleana donde los rasgos coinciden o fallan en la comparación con ningún punto medio.
Que pueden fallar al tomar en cuenta información que puede estar derivada de estructuras de datos, es decir que son débiles para rasgos de alto orden de interrelación como los que se pueden esperar en los sistemas legales.
También existen dominios de problemas que no son bien manejados por el RBC. Algunas características que pueden provocar esto son:
La falta de casos relevantes, lo cual puede ocurrir cuando se trabaja con dominios extremadamente nuevos.
La escasez de casos disponibles debido a la falta de datos organizados sistemáticamente, lo que puede estar provocado porque la información no es guardada o porque está primariamente en formato de lenguaje natural, y los modelos de RBC no tratan con grandes cantidades de texto no estructurado.
En Estor, se tomaron en consideración las estimaciones realizadas a diez proyectos de software terminados (según un estudio que aparece en (24)), contemplándose 37 factores del proyecto además del esfuerzo real de desarrollo. Se consideró como proyecto objetivo o “experto de referencia” para la construcción de Estor, uno de los proyectos de una compañía con varios años de experiencia en la estimación de software.
Para ilustrar este enfoque en la práctica, se tomó un proyecto que tardó 277 personas-mes en completarse y se realizaron cuatro tipos de estimaciones: por juicio del experto, por Estor, utilizando COCOMO y por Puntos de Función (PF) a 15 proyectos de software. La estimación del experto aportó un valor de 250 personas-mes, la solución por Estor fue de 287 personas-mes. COCOMO estimó 1238.6 personas-mes y con PF los resultados fueron de 344.3 personas-mes. La comparación del rendimiento fue realizada en términos de precisión y consistencia. La medida de precisión utilizada fue el promedio de la magnitud del error relativo (MMRE) (25).
La consistencia fue medida como el coeficiente de correlación entre el esfuerzo real y el esfuerzo estimado a través de una muestra de problemas que en este caso resultó ser de 15 proyectos (10 proyectos fueron utilizados como conjunto de entrenamiento y los 5 restantes como prueba). La magnitud del error relativo (MRE) de Estor (52.79 %) no fue tan buena como la del experto humano, pero si fue superior a la correspondiente a COCOMO y PF. Lo mismo ocurrió con el coeficiente de correlación, confirmándose que los resultados del experto y de Estor son igualmente consistentes y a su vez más consistentes que los que se obtuvieron con los modelos algorítmicos.
Es de esperar que los cuatro métodos empleados en la estimación no sean igualmente precisos y consistentes debido a sus características intrínsecas. Sin embargo, para Estor y para el RBC en general, quedan cuestiones por analizar tales como:
¿Qué atributos o características del software el experto debe utilizar, que no necesariamente estén restringidos a las entradas utilizadas en los métodos como COCOMO y PF?
¿Qué reglas debe utilizar el experto?
¿Se deben considerar todos los atributos o una elección de los mismos? ¿Cuáles atributos son más importantes para ajustar el conocimiento?
para garantizar mejores resultados del modelo. Los datos de los proyectos fueron tomados de un estudio estadístico referenciado en (27).
El concepto clave utilizado para determinar la adaptación de los casos fue el de identificar factores o características del software que contribuyeran a mostrar diferencias significativas en la productividad entre los casos. Los factores o características generales del sistema (cgs) provienen de la estimación por PF y son evaluados de 0 a 5. Se determinó que solamente seis de las cgs mostraron alguna diferencia entre un rango bajo de evaluación (de 0 a 2) y rango alto de evaluación (de 3 a 5). Estos factores fueron: rendimiento, entrada de datos on-line, eficiencia en el usuario final, complejidad del procesamiento, sitos múltiples y facilidad de cambio.
Con estos factores, el tamaño del software (medido en PF sin ajustar) y la proporción de entradas, salidas, peticiones, archivos internos y externos del total de PF sin ajustar, se desarrolló un sistema de RBC que para los 50 casos de prueba tuvo un MMRE de 0.362 con un 80% de casos estimados con error menor que 0.5.
Nótese que tanto el tamaño de la base de casos así como los atributos utilizados aportan diferentes resultados y en este último caso, mejores, en la estimación. Por otra parte el RBC permite el desarrollo de una base de casos dinámica con los datos de nuevos proyectos que se incorporan automáticamente a la misma y se convierten en disponibles para el análisis de una nueva solución. No obstante, la determinación y actualización de las reglas no es una tarea fácil y está muy ligada al tipo de proyecto.
En (6) también se utiliza el RBC para la estimación y se compara con otras técnicas: RNA y PG. En esa investigación se utilizan nueve variables independientes y una variable dependiente, el esfuerzo, analizándose 81 proyectos, tomados de la base de datos Desharnais (http://promise.site.uottawa.ca/SERepository/datasets/desharnais.arff) localizada en el repositorio PROMISE. Los resultados son favorables y se insiste en las bondades del RBC dadas por la posibilidad de proporcionar un orden a los proyectos por grados de similaridad con el proyecto objetivo. Esto suministra un valor explicativo significativo cuando se consideran los usuarios finales.
Referencias al RBC igualmente pueden encontrarse en (28; 29). Se ha utilizado también este enfoque como método de comparación en (22; 30; 31).
De acuerdo con (3) puede afirmarse que el RBC es la técnica de ML que más se ha reportado en la literatura especializada. Recientemente se han encontrado referencias donde el RBC se combina con enfoques heurísticos para la optimización de los pesos en la función de similaridad con resultados satisfactorios (32). También se evalúa el grado de similaridad entre dos proyectos utilizando la lógica difusa como aparece en (33).
3.2 REDES neuronales artificiales (RNA)
topología de la red, así como las funciones de transferencia de los nodos son usualmente formuladas para coincidir con el problema actual. Pueden conducir a desarrollar modelos que pueden ser precisos a través de un ejemplo dado, pero fallan cuando las condiciones cambian. Carecen de la capacidad de explicación o justificación de la estimación realizada y no proveen un ambiente para una adaptación directa por el usurario de los datos, es decir una recalibración del modelo. Para poder incorporar un nuevo caso al conjunto de casos válidos del propio modelo, necesitan ser reentrenadas, generando un modelo nuevo (26).
Han sido desarrolladas diversas arquitecturas de redes neuronales. Una de ellas, back-propagation, es utilizada para la estimación del esfuerzo en (26; 34). En (26), por ejemplo, fueron desarrolladas varias RNA para comparar el error de la estimación. La RNA que mejores resultados produjo incluye como variables de entrada el tamaño del software (determinado en PF), las cgs y el ambiente de programación. La única salida es el esfuerzo de desarrollo estimado. Fueron necesarias cinco neuronas en la capa oculta y el MMRE resultante fue de 0.35, un resultado similar al que se obtuvo con RBC discutido en el epígrafe anterior.
Desarrollos similares en este sentido aparecen en (25; 35; 36; 37). En (35) se utilizaron 25 nodos de entrada (similares a los que se proponen en el modelo estadístico COCOMO) y dos nodos de salida: personas-mes y tiempo de desarrollo. En (25) fueron adoptados 33 nodos de entrada y un nodo de salida con 63 casos de entrenamiento y 15 casos de prueba. En (36) se utilizó una arquitectura del tipo Albus perceptron con resultados superiores a los obtenidos por una regresión lineal.
También se realizan comparaciones utilizando una RNA en (6). Estos resultados resultan menos precisos que los presentados en (26), aunque son superiores o equivalentes a técnicas de programación genética al emplearse AMSE para evaluar la precisión.
En (38), se hace un estudio de investigaciones anteriores donde se evalúa el funcionamiento de las RNA con otros modelos como los modelos de regresión, inducción de reglas y RBC. Aquí se evidencia que las RNA presentan una exactitud superior a los modelos de regresión y una exactitud muy cercana a la de los modelos basados en RBC. Son muy buenas cuando existen valores atípicos en los datos. Se tomaron como variables de entrada: el número de reportes, el número de pantallas, el número de creaciones, el número de actualizaciones, el ambiente de programación, las LOC, 14 características generales del sistema y las variables utilizadas en los modelos de análisis por PF.
En ese estudio se propuso el análisis a tres topologías distintas de RNA y se evaluó la precisión de estos modelos con modelos clásicos de regresión y el juicio de un experto, arrojando como resultado que el modelo de RNA con siete variables de entrada fue el que menor MMRE presentó, evidenciándose que la estimación realizada por un modelo basado en RNA depende mucho de las variables de entrada.
y metodologías, hace poco flexibles y difícil de mantener el desempeño de los modelos de estimación para nuevos tipos de proyectos.
Este es el punto de partida que se relaciona en (39) donde se propone un método de búsqueda que encuentra los mejores casos relevantes para el modelo de red neuronal, reduciendo la red por la eliminación de factores cualitativos de entrada con los mismos valores.
Puede apreciarse en la revisión de los diferentes enfoques para la estimación, que las variables de entrada, factores, o características generales del sistema como también se les ha llamado, constituyen un punto neurálgico en los modelos propuestos. Una revisión interesante de algunos de estos factores también se presenta en (39), agrupados en cinco categorías: requisitos del proyecto, características del producto, habilidades del equipo, plataforma computacional y atributos del usuario. En esa ocasión fueron utilizados 23 factores seleccionados por la opinión de 30 expertos y se presenta el resultado en términos de personas-mes. Los factores fueron clasificados en cuantitativos y cualitativos. Estos últimos pueden constituir tanto variables de entrada como clasificadores del conjunto de casos. Los resultados finales muestran que la magnitud del error relativo medio se redujo de 17.2% (para la RNA completa) a 12.1% (para la RNA reducida).
Se puede adoptar el enfoque anterior si se desarrolla un sistema para la toma de decisiones donde el esfuerzo del software pueda estimarse en dependencia de la mejor adaptación de la RNA a los cambios del ambiente computacional. De esta forma, una de las limitaciones del empleo de RNA para la estimación es su generalización. Los resultados y el desempeño están muy ligados a la estructura de la RNA y a las variables de entrada, cuestión esta también señalada en (40).
Otros desarrollos similares pueden encontrarse en (22; 31; 41; 42). En (42) se utiliza una RNA como método de estimación para la comparación con otros enfoques. Esta idea también se desarrolla en (41) donde se utiliza una red neuronal como modelo de estimación y se compara con un modelo de regresión múltiple, además de otros modelos algorítmicos como SLIM, PF y COCOMO. Aquí se utiliza la base de datos COCOMO referenciada por Boehm en 1981 (12), sin embargo se reconoce que diferentes resultados pueden ocurrir si se consideran otros conjuntos de datos, como por ejemplo la base de datos del ISBSG.
De manera general, se sostiene en (6) que el uso de técnicas de estimación más elaboradas como RNA y PG proporciona mejores resultados pero necesitan más esfuerzo en la configuración y entrenamiento. Un compromiso entre la precisión y la facilidad de interpretación también parece inevitable.
3.3 ÁRBOLES de decisión (AD)
AD es una técnica que construye un modelo en forma de árbol, dividiendo recursivamente el conjunto de datos hasta que un criterio de parada es satisfecho. Esta división se realiza con el propósito de alcanzar la máxima homogeneidad posible, relativa a la variable de salida o dependiente, entre los ejemplos que alcanzan el nodo. Todos los nodos en el árbol, menos los terminales (también llamados hojas), especifican una condición basada en una de las variables que tienen influencia en la variable dependiente. Luego de que el árbol es generado, el mismo se puede usar para realizar predicciones siguiendo un camino a través del árbol de acuerdo con los valores específicos de las variables del nuevo caso (14). Los AD han demostrado su superioridad en términos de exactitud de la predicción en varios campos. Los algoritmos más usados para la construcción de AD son ID3, C4.5 y Árbol de Clasificación y Regresión (Clasification And Regression Tree – CART).
Entre las ventajas fundamentales del uso de la estimación mediante AD se encuentran:
Pueden ser considerados como “cajas blancas”. Es simple entender y fácil explicar su proceso a los usuarios, al contrario de otros métodos de aprendizaje.
Por sí mismo realiza selección de rasgos, lo que evita la utilización de otras técnicas para determinar los rasgos que verdaderamente influyen en el esfuerzo en los modelos de estimación.
Los Árboles de Regresión (AR) son un tipo especial de AD desarrollado para tareas de regresión. En este tipo específico de AD la elección de cada nodo está usualmente guiada por el criterio del error cuadrado mínimo (45). En los AR los valores de la media o la mediana del nodo terminal pueden ser usados como el valor predicho.
Como mismo los AR son un tipo especial de AD, los model trees son un tipo especial de AR. En (45) se expresa que la principal diferencia entre AR y model trees es que las hojas en los AR presentan un valor numérico mientras que las hojas en los model trees tienen una función lineal. Los AR constituyen una de las técnicas más usadas para la estimación de esfuerzo de desarrollo en proyectos de software. En el estudio que se muestra en (38) se examinan los resultados obtenidos con varias técnicas como son: Regresión Ordinaria de Mínimos Cuadrados (Ordinary Least-Squares Regression - OLS), Análisis de Varianza progresivo (Analysis of Variance - ANOVA) para bases de datos no balanceadas, RBC, AR (algoritmo CART) y la combinación de CART con regresión y RBC. Luego de comparar los resultados obtenidos con cada técnica se determinó que las técnicas OLS y ANOVA brindan resultados significativamente superiores a los obtenidos con las demás técnicas. También se resalta la facilidad de interpretación y uso de CART para la construcción de un modelo de estimación.
Por su parte, el estudio publicado en (46) analiza la precisión de diferentes técnicas de estimación y examina su comportamiento basado en bases de proyectos tanto de distintas compañías como de una misma compañía. Entre las técnicas que se usaron en esa investigación, una versión de árbol CART fue de las que mejores resultados brindó cuando se trabajó con datos de una misma compañía. Sin embargo, al utilizar los datos de varias compañías, fue la técnica que peores resultados ofreció. Al compararse las estimaciones basadas en una compañía y las basadas en varias, fue evidente que para casi todas las técnicas los resultados basados en una sola compañía fueron significativamente superiores. Aunque luego de ajustarse los valores del esfuerzo correspondientes a cada proyecto, atendiendo a la productividad de la compañía a la que pertenece el proyecto y a la productividad general de todas la compañías, se logró una significativa mejora para varias técnicas en la estimación sobre la base de datos con proyectos de varias compañías y en específico CART fue la que tuvo una mejora más drástica. A pesar de esto, en la investigación se plantean varias preguntas importantes que continúan sin respuesta, entre ellas:
Sin datos propios ¿cómo una organización puede determinar si una base de proyectos de varias compañías podrá describir su tipo de operación?
¿Ulteriores variables para medir procesos y productos serán capaces de mejorar la precisión de las estimaciones a partir de bases de proyectos de varias compañías?
Recientemente, los Árboles de Regresión Aditivos Múltiples (Multiple Additive Regression Trees - MART) han sido propuestos como un novedoso avance que extiende y mejora el modelo de los árboles basados en el algoritmo CART usando el gradiente estocástico fortalecido (stochastic gradient boosting). Boosting es un método general que trata de “fortalecer” la precisión de algún algoritmo de aprendizaje dado mediante el ajuste de una serie de modelos, cada uno teniendo un índice de error pequeño y combinándolos en un conjunto que puede desempeñarse mejor. En (47) se evalúa el potencial de este tipo de árbol para la estimación de esfuerzo de desarrollo de proyectos de software comparado con otros modelos publicados anteriormente, en términos de precisión. Luego de analizar los resultados logrados usando MART, con los que se aparecen referenciados en otras publicaciones en las que se hace uso de SVR, Regresión Lineal y Redes Neuronales, se llega a la conclusión de que el modelo obtenido con el uso de MART mejora la exactitud de la estimación de los otros modelos. Estos resultados se obtuvieron sobre la base de datos de proyectos de la NASA ubicados en PROMISE.
También en (42) se hace uso de AD para la estimación de esfuerzo en específico mediante el model tree M5P. Aquí se combinan varias técnicas con algoritmos genéticos tratados posteriormente.
La principal característica de los ID3 borrosos es que un ejemplo pertenece a un nodo con un grado de certidumbre. Los autores analizan dos modelos ID3 borrosos para la estimación de esfuerzo, cada uno con una forma distinta de calcular la entropía borrosa, dependiendo del operador de conjunción usado. Los resultados del estudio muestran que el uso de un nivel de significación óptimo y una adecuada fórmula de calcular la entropía borrosa mejoran grandemente la precisión de los estimados. Al compararse con la versión precisa del ID3 se aprecia una gran mejora en la exactitud de la estimación.
3.4 REDES bayesianas (RB)
Una red bayesiana es una técnica de modelado para tratar interrelaciones causales basadas en inferencias bayesianas. La red es representada como un grafo acíclico con nodos para cada variable imprecisa y aristas dirigidas para cada interrelación entre las variables (48). Por cada nodo o variable existe una tabla de probabilidades del nodo. Las tablas definen las interrelaciones y las imprecisiones de las variables y sus valores usualmente son discretos con un número fijo de estados. Para cada estado, la tabla muestra la probabilidad que tiene la variable. Si existen nodos padres; por ejemplo, un nodo que influye sobre un nodo actual, las probabilidades se definen en dependencia del estado de los nodos padres.
El proceso de construcción de una red bayesiana sugiere una serie de pasos importantes que no son triviales:
1. Identificación de las principales variables que serán modeladas, representándolas como nodos.
2. Construcción de la topología de la red.
3. Definición de la tabla de probabilidades del nodo.
Las redes bayesianas tienen la habilidad de representar la incertidumbre explícitamente usando probabilidades, la habilidad de incorporar el conocimiento existente de expertos dentro de los datos empíricos y la habilidad de actualizar el modelo cuando nuevos datos están disponibles (9). Es por eso que aunque son limitados los estudios realizados en la Ingeniería del Software usando esta técnica, presentan características que posibilitan futuras aplicaciones.
Según (10), los modelos de redes bayesianas existentes tienen restricciones en el uso de funciones de densidad de probabilidad continua. Consecuentemente, estas restricciones limitan el uso de estos modelos a los casos donde se involucran solamente variables discretas.
3.5 SUPPORT vector regression (SVR)
El algoritmo Support Vector (SV) es una generalización no lineal del algoritmo Generalized Portrait desarrollado en Rusia en los años sesenta. En su forma actual fue largamente desarrollado en AT&T Bell Laboratories en la década del 90 del pasado siglo. En poco tiempo los clasificadores SV se volvieron competitivos con los mejores sistemas de Reconocimiento Óptico de Caracteres (Optical Character Recognition - OCR), pero también en regresión, tomando el nombre de SVR, fueron obtenidos excelentes resultados rápidamente (49).
Suponiendo que se tiene un conjunto de entrenamiento con la forma
, donde denota el patrón del conjunto de entrada (por ejemplo, ), en regresión , el objetivo es encontrar la función que tenga como máximo una desviación de los valores objetivos reales recolectados, , para todo el conjunto de entrenamiento. En otras palabras, no se preocupa por los errores que sean menores que , pero no acepta ninguna desviación mayor que esa. En el problema de la estimación de esfuerzo consistiría en el conjunto de valores que caracterizan al proyecto y sería el esfuerzo.
En , la función depende de un vector de pesos ( ) y un umbral ( ), los cuales son escogidos optimizando el siguiente problema (50):
objetivo por un valor mayor que y mide desviaciones que están más que por debajo del valor del objetivo. La idea de SVR es minimizar una función objetivo en la cual se considere tanto la norma del vector como las pérdidas medidas por las variables de holgura. El algoritmo SVR incluye el uso de multiplicadores de Lagrange que pueden estar acompañados por funciones kernel. Para obtener más detalles se puede consultar (49).
SVR ha superado el comportamiento de otras técnicas más tradicionales en la solución de varios problemas. Por esto en (50) se propone el uso de SVR para estimar el esfuerzo en el desarrollo de proyectos de software. Para determinar la efectividad de la estimación en ese estudio, se realizó una comparación de los resultados obtenidos con SVR y los obtenidos con regresión lineal y la Red Neuronal Radial Basis Function (RBF), sobre la base de proyectos de la NASA. Luego de analizados los resultados se llegó a la conclusión de que SVR logró mejorar la precisión de la estimación por encima de los otros dos métodos.
En (5) se analiza el empleo de SVR para la estimación de esfuerzo en el desarrollo de proyectos Web y se comparan varias configuraciones de SVR para determinar la que brinda el mejor comportamiento. Aquí se confrontan los resultados obtenidos utilizando dos tipos de funciones kernel: Polinomial y RBF. Además, para determinar si la aplicación de una de estas transformaciones kernel puede mejorar la exactitud de la predicción, también se consideró SVR sin una transformación kernel, también conocido como kernel Lineal. Los resultados obtenidos con SVR fueron comparados con los brindados por RBC, que es una de las técnicas más utilizadas para la estimación de esfuerzo en proyectos de software, para determinar si SVR logra un mejor desempeño. Para todos los análisis realizados fue utilizado el repositorio de proyectos Tukutuku.
combinación de TS y SVR superó significativamente el comportamiento de todas las demás técnicas con las que fue comparada.
En (45) se propone mejorar el comportamiento de diferentes métodos de regresión, para la estimación de esfuerzo en el desarrollo de proyectos de software, aplicando Bagging a diferentes técnicas de aprendizaje automático, entre ellas a SVR. El estudio ofreció como resultado que el uso de Bagging fue capaz de mejorar la precisión de la estimación producida por todos los métodos de regresión analizados menos para SVR, lo que demuestra que SVR es un método estable para las bases de datos consideradas en los experimentos.
3.6 ALGORITMOS genéticos (AG)
Los AG fueron desarrollados como una técnica alternativa, basada en la teoría de la selección natural, para afrontar problemas generales de optimización con largos espacios de búsqueda. Ellos tienen la ventaja de que no necesitan ningún conocimiento anterior, opinión de un experto o lógica relacionada con el problema en particular a resolver (6). Los AG ocasionalmente pueden producir la solución óptima, pero para la mayoría de los problemas con grandes espacios de búsqueda, una buena aproximación al óptimo es la salida más probable.
El proceso básico de los AG es el siguiente:
1. Generación aleatoria de una familia de soluciones.
2. Creación de una nueva familia de soluciones partiendo de la previa, aplicando los operadores genéticos a los cromosomas o pares de cromosomas más adecuados de la población anterior.
3. Repetición del paso 2 hasta que cualquiera de los cromosomas converja a la solución, o cuando se haya producido un número de iteraciones anteriormente especificado.
La mejor solución de la última población es tomada como la mejor aproximación al óptimo del problema en cuestión. El proceso completo normalmente se repite un número de veces con diferentes poblaciones iniciales aleatorias y se escoge la mejor de las soluciones obtenidas. Esta idea ha sido aplicada a problemas de estimación de esfuerzo en (6) con una población de 1000 y 500 generaciones en 10 corridas. Los resultados se comparan con enfoques de RBC y RNA. Aunque se obtuvieron resultados similares que los alcanzados por las RNA, se destaca que en ambas aproximaciones se necesita cierto grado de experticidad y en particular en la PG son múltiples los parámetros que se requieren: funciones, rangos de reproducción y cruzamiento, estrategia de creación y profundidad del árbol, entre otras.
En (52) también se aplican AG. En esa ocasión se combinaron con Análisis Relacional Gris (Grey Relational Analisys - GRA). Un modelo de estimación de esfuerzo de software utilizando GRA identifica uno o más proyectos históricos que son similares al proyecto que está siendo estimado y deriva una estimación para él. El propósito de utilizar AG en este enfoque es para mejorar u optimizar los pesos de cada uno de los rasgos involucrados en las medidas de similitud en GRA. En este estudio se utilizaron dos bases de datos de proyectos: COCOMO y Albrecht de PROMISE. Se obtuvieron resultados superiores en comparación con modelos de RNA, RBC y AR, aunque se reconoce que la integración GRA y AG para la estimación de esfuerzo presenta una complejidad superior del modelo que puede afectar su uso en la práctica.
También en (11) se utiliza AG como técnica combinada para la estimación del esfuerzo. Aquí se mantiene la idea de la optimización, en la selección de un subconjunto óptimo de características de entrada y en la selección de parámetros para los métodos de aprendizaje automático empleados. Resulta interesante la representación binaria utilizada para definir un cromosoma. El cromosoma es dividido en dos partes: la primera parte representa los parámetros de la técnica de ML que van a ser optimizados y la segunda, las características de entrada que serán seleccionadas.
Se valoran tres técnicas de aprendizaje automático: Multi Layer Percentron (MLP), Support Vector Regression (SVR) y el algoritmo M5P que combina árboles de decisión y regresión lineal. Las simulaciones son realizadas sobre las bases de datos de proyectos: Desharnais, NASA, COCOMO y Albrecht, Kemerery localizadas en PROMISE. Los resultados son superiores al ser comparados con los obtenidos por métodos propuestos como RNA, árboles de regresión y modelos estadísticos con redes bayesianas.
3.7 PROGRAMACIÓN genética (PG)
PG es una extensión de los AG que elimina la restricción de que un cromosoma sea una cadena binaria de tamaño restringido. Generalmente en PG el cromosoma es un tipo de programa que es ejecutado para obtener los resultados requeridos. Una forma simple de estos programas es un árbol binario que contiene operandos y operadores, es decir cada solución es una expresión algebraica que puede ser evaluada (6).
En (53) se menciona que es posible utilizar PG y otras técnicas de aprendizaje automático como RNA para estimar esfuerzo, tomando como variables independientes las LOC y los PF. Para esto emplea la información de cinco bases de proyectos, concluyéndose que RNA y PG mostraron ser métodos mucho más flexibles en comparación con las técnicas utilizadas.
En (53) se hace una revisión de la utilización de PG en la Ingeniería de Software. Específicamente en la estimación de esfuerzo se precisa que no se obtiene una evidencia fuerte que indique que la Programación Genética supere consistentemente a los demás modelos, de acuerdo a los criterios de evaluación empleados.
4. CONCLUSIONES
Existe una gran variedad de técnicas de Inteligencia Artificial que han sido empleadas para la estimación de esfuerzo en proyectos de software. Entre las más usadas se encuentran el Razonamiento Basado en Casos, las Redes Neuronales Artificiales y los Árboles de Decisión. También se destaca la utilización generalizada de enfoques híbridos, donde algunas técnicas de aprendizaje automático, se combinan con otras. En esta combinación las técnicas que más han sido utilizadas son los Algoritmos Genéticos y algunos enfoques recientes que utilizan la Lógica Difusa. No obstante, ninguno de los modelos empleados muestra superioridad absoluta.
En el estudio de la literatura especializada se apreció la existencia de un conjunto de repositorios de proyectos con disímiles características, donde no existe un consenso en las variables que se almacenan. Esto hace difícil la selección del mejor modelo de estimación ya que las pruebas no son realizadas sobre los mismos datos. No obstante, la comunidad científica tiende a utilizar los repositorios PROMISE e ISBSG.
La evaluación de las diferentes técnicas empleadas también varía entre los investigadores de la temática. Las medidas de evaluación preferidas son MMRE y Pred (25), aunque pudiera ampliarse la evaluación con el uso de residuales absolutos y técnicas estadísticas.
5. REFERENCIAS
(1) CRESPO YÁÑEZ, F. J. (2003) “Un modelo paramétrico difuso para la estimación del esfuerzo de desarrollo del software”. Departamento de Ciencias de la Computación. Alcalá, Universidad de Alcalá.
(2) SALVETTO DE LEÓN, P. F. (2006) “Modelos automatizables de estimación muy temprana del tiempo y esfuerzo de desarrollo de sistemas de información”. Departamento de Lenguajes y Sistemas Informáticos e Ingeniería de Software. Madrid, Universidad Politécnica de Madrid. (3) WEN, J., LI, S., LIN, Z., HU, Y. & HUANG, C. (2012) “Systematic literature review of
machine learning based software development effort estimation models”. Information and Software Technology, 54, 41–59.
(4) BRIAND, L. C. & WUST, J. (2001) Modeling Development Effort in Object-Oriented Systems Using Design Properties. IEEE Transactions on Software Engineering, 27.
(6) BURGESS, C. & LEFLEY, M. (2001) “Can genetic programming improve software effort estimation? A comparative evaluation”. Information and Software Technology, 43, 863-873. (7) FOSS, T., STENSRUD, E., KITCHENHAM, B. & MYRTVEIT, I. (2002) “A Simulation
Study of the Model Evaluation Criterion MMRE”. Norwegian School of Management BI. (8) KITCHENHAM, B. & MENDES, E. (2009) “Why comparative effort prediction studies may
be invalid”.
(9) VAN KOTEN, C. & GRAY, A. R. (2006) “Bayesian statistical effort prediction models for data-centered 4GL software development”. Information and Software Technology, 48, 1056– 1067.
(10) CORAZZA, A., DI MARTINO, S., FERRUCCI, F., GRAVINO, C., MENDES, E. & SARRO, F. (2011) “Using tabu search to configure support vector regression for effort estimation”. Empirical Software Engineering.
(11) OLIVEIRA, A. L. I., BRAGA, P. L., LIMA, R. M. F. & CORNÉLIO, M. L. (2010) “GA-based method for feature selection and parameters optimization for machine learning regression applied to software effort estimation”. Information and Software Technology, 52,
1155-1166.
(12) SAYYAD SHIRABAD, J. & MENZIES, T.J. (2005) “The PROMISE Repository of Software Engineering Databases”. School of Information Technology and Engineering, University of Ottawa, Canada. Disponible en: http://promise.site.uottawa.ca/SERepository. (13) CHEIKHI L. & ABRAN A. (2014) “An Analysis of the PROMISE and ISBSG Software
Engineering Data Repositories”. Internation Journal of Computers and Technology, 13 (5), 4456-4474.
(14) IDRI, A. & ELYASSAMI, S. (2011) “Applying Fuzzy ID3 Decision Tree for Software Effort Estimation”. International Journal of Computer Science, 8.
(15) RAMSEY, C. L. & BASILI, V. R. (1989) “An Evaluation of Expert Systems for Software Engineering Management”. IEEE Transactions on Software Engineering, 15.
(16) MUKHOPADHYAY, T., VICINANZA, S. S. & PRIETULA, M. J. (1992) “Examining the Feasibility of a Case Based Reasoning Model for Software Effort Estimation”. MIS Quarterly. (17) HEEMSTRA, F. J. (1992) “Software cost estimation”. Information and Software
Technology, 34, 627-639.
(18) JØRGENSEN, M., INDAHL, U. & SJØBERG, D. (2003) “Software effort estimation by analogy and ‘‘regression toward the mean’’”. Journal of Systems and Software, 68, 253-262. (19) BRIAND, L. C., BASILI, V. R. & THOMAS, W. M. (1992) “A pattern recognition
(20) SHEPPERD, M. & SCHOFIELD, C. (1997) “Estimating software project effort using analogies”. IEEE Transactions on Software Engineering, 23, 736-743.
(21) WALKERDEN, F. & JEFFERY, R. (1999) “An empirical study of analogy-based software effort estimation”. Empirical Software Engineering, 4, 35-158.
(22) SUN-JEN, H. & NAN-HSING, C. (2006) “Optimization of Analogy Weights by Genetic Algorithm for Software Effort Estimation”. Information and Software Technology, 48, 1034-1045.
(23) WITTIG, G. & FINNIE, G. (1997) “Estimating software development effort with connectionist models”. Information and Software Technology 39, 469-476
(24) KEMERER, C. F. (1987) “An Empirical Validation of Software Cost Estimation Models”. Communications of the ACM, 30, 416-429.
(25) SRINIVASAN, K. & FISHER, D. (1995) “Machine Learning Approaches to Estimating Software Development Effort”. IEEE Transactions on Software Engineering, 21, 126-137. (26) FINNIE, G. R., WITTIG, G. E. & DESHARNAIS, J.-M. (1997) “A Comparison of Software
Effort Estimation Techniques: Using Function Points with Neural Networks, Case-Based Reasoning and Regression Models”. Journal Systems Software, 39, 281-289.
(27) DESHARNAIS, J. M. & AL., E. (1990) “Adjustment Model for Function Points Scope Factors-A Statistical Study”. IFPUG Spring Conference. Florida.
(28) PATNAIK, K. S., MALHOTRA, S. & SAHOO, B. (2004) “Software Development Effort Estimation using CBR: A Review”.
(29) ADEKILE, O. (2008) “Object-oriented software development effort prediction using design patterns from object interaction analysis”. University of Georgia.
(30) MACDONELL, S. G. & SHEPPERD, M. J. (2003) “Combining techniques to optimize effort predictions in software project management”. The Journal of Systems and Software 66,
91-98.
(31) SUN-JEN, H., NAN-HSING, C. & LI-WEI, C. (2008) “Integration of the Grey Relational Analysis with Genetic Algorithm for Software Effort Estimation”. European Journal of Operational Research, 188, 898-909.
(32) WU, D., LI, J. & LIANG, Y. (2010) “Linear combination of multiple case-based reasoning with optimized weight for software effort estimation”. The Journal of Supercomputing.
(33) IDRI, A., ABRAN, A. & LAILA, K. (2000) “COCOMO Cost Model Using Fuzzy Logic”. 7th International Conference on Fuzzy Theory and Technology. Atlantic City, New Jersey. (34) WITTIG, G. & FINNIE, G. (1997) “Estimating software development effort with
(35) VENKATACHALAM, A. R. (1993) “Software cost estimation using artificial neural network”. International Joint Conference on Neural Networks.
(36) SAMSON, B., ELLISON, D. & DUGARD, P. (1997) “Software cost estimation using an Albus perceptron (CMAC)” Information and Software Technology 39, 55-60.
(37) MACDONELL, S. G. & GRAY, A. R. (1997) “A Comparison of Modeling Techniques for Software Development Effort Prediction”. New Zealand, Springer-Verlag.
(38) BRIAND, L. C. & WEICZOREK, I. (2002) “Resource Estimation in Software Engineering”. Encyclopedia of Software Engineering.
(39) SUP JUN, E. & KYU LEE, J. (2001) “Quasi-optimal case-sensitive neural network model for software effort estimation”. Expert System with Applications, 1-14.
(40) PARK, H. & BAEK, S. (2008) “An empirical validation of a neural network model for software effort estimation”. Expert Systems with Applications, 35, 929-937.
(41) BARCELOS TRONTO, I. F., SIMÕES DA SILVA, J. D. & SANT'ANNA, N. (2006) “Comparison of Artificial Neural Network and Regression Models in Software Effort Estimation”. Brazil, Brazilian National Institute for Space Research - INPE.
(42) OLIVEIRA, A. L. I., BRAGA, P. L., LIMA, R. M. F. & CORNÉLIO, M. L. (2010) “GA-based method for feature selection and parameters optimization for machine learning regression applied to software effort estimation”. Information and Software Technology, 52,
1155-1166.
(43) HUANG, X., HO, D., REN, J. & CAPRETZ, L. F. (2007) “Improving the COCOMO model using a neuro-fuzzy approach”. Applied Soft Computing 7, 29-40.
(44) PENDHARKAR, P. C. (2010) “Probabilistic estimation of software size and effort”. Expert Systems with Applications 37, 4435–4440.
(45) BRAGA, P. L., OLIVEIRA, A. L. I., RIBEIRO, G. H. T. & MEIRA, S. R. L. (2007) “Bagging Predictors for Estimation of Software Project Effort”. In: International Joint Conference on Neural Networks, Orlando, Florida.
(46) JEFFERY, R., RUHE, M. & WIECZOREK, I. (2001) “Using Public Domain Metrics to Estimate Software Development Effort”. In: 7th International Software Metrics Symposium, Londres, Reino Unido.
(47) ELISH, M. O. (2009) “Improved estimation of software project effort using multiple additive regression trees”. Expert Systems with Applications, 36, 10774–10778.
(48) WAGNER, S. 2010. “A Bayesian network approach to assess and predict software quality using activity-based quality models”. Information and Software Technology, 52.
(50) OLIVEIRA, A. L. I. (2006) “Estimation of software project effort with support vector regression”. Neurocomputing, 69, 1749–1753.
(51) HUANG, S.-J. & CHIU, N.-H. (2006) “Optimization of analogy weights by genetic algorithm for software effort estimation”. Information and Software Technology, 48, 1034-1045.
(52) HUANG, S.-J., CHIU, N.-H. & CHEN, L.-W. (2008) “Integration of the grey relational analysis with genetic algorithm for software effort estimation”. European Journal of Operational Research, 188, 898–909.
(53) AFZAL, W. & TORKAR, R. (2011) “On the application of genetic programming for software engineering predictive modeling: A systematic review”. Expert Systems with Applications.
CORRESPONDENCIA
Gheisa Lucía Ferreira LorenzoDepartamento Ciencia de la Computación
Universidad Central “Marta Abreu” de Las Villas
Carretera a Camajuaní Km 5 ½. Santa Clara. Cuba
Código Postal: 50100
Teléfono: 5342281515