Análisis de calidad del software usando

Anuncio
Vector 5 (2010) 45 - 52
ISSN 1909 - 7891
Análisis de calidad del software usando optimización
por colonia de hormigas
Andrés Castaño Véleza*, Carlos Ruiz Villaa,b, Cristian Zuluagac
a
Departamento de Sistemas e Informática, Universidad de Caldas, Calle 65 No. 26-10, Manizales, Colombia
Departamento de Informática y Computación, Universidad Nacional de Colombia sede Manizales, Cra. 27 # 64-60, Manizales, Colombia
c
Programa de Ingeniería de Sistemas y Computación, Facultad de Ingeniería, Universidad de Caldas, Calle 65 No. 26-10, Manizales, Colombia
b
Recibido: 25 de mayo de 2011. Aprobado: 19 de diciembre de 2011
Resumen
Para clasificar un conjunto de clases de software posiblemente defectuosas, se comprobó una técnica de clasificación utilizando el algoritmo de optimización por colonia de hormigas (ACO), demostrando que mediante esta técnica es posible predecir errores en los módulos
de software. Para este efecto se probó en el aplicativo Myra-3.0.1 utilizando un repositorio público de datos, obteniendo un conjunto de
reglas que determinan si una clase es o no defectuosa con una precisión del 93,1%.
Palabras clave: Calidad de software, métrica, optimización por colonia de hormigas, minería de software, clasificación.
Software quality analysis using ant colony optimization
Abstract
To classify a set of possibly faulty software classes, a classification technique using the ant colony optimization (ACO) algorithm was
proved showing that using this technique it is possible to predict errors in software modules. To this effect it was tested in the Myra3.0.1 application using a public data repository, and obtaining a set of rules that determine whether a class is or is not defective with
93.1%. accuracy.
Key words: software Quality, metric, ant colony optimization, software mining, classification.
1. Introducción
Las primeras etapas del desarrollo de software son
cruciales en la consecución de productos de calidad
dentro de los límites de tiempo y costo establecidos
para un proyecto. Los errores introducidos en las
primeras etapas del desarrollo de software o durante
su evolución, son causa frecuente de dificultades en el
mantenimiento, baja reutilización y comportamiento
defectuoso de los programas. Además, las malas
estimaciones realizadas al comienzo del proyecto
tienen consecuencias desastrosas en cuanto a costos y
plazos de entrega (Garcia et al., 2001).
Las métricas de software son la clave para la gestión
de la calidad en el software. La gestión de la calidad
de software es una comparación de la calidad real de
un producto con la calidad esperada. En el ámbito
del desarrollo de software, significa, que las métricas
son recogidas en varios puntos del ciclo de desarrollo
y se utilizan para mejorar la calidad de un producto
de software (de Almeida et al., 1999). Las métricas se
* Autor de correspondencia.
E-mail: [email protected] (A. Castaño)
utilizan para identificar los módulos en los sistemas
de software que son potencialmente propensos a
error, con el fin de que el desarrollo y el esfuerzo sean
dirigidos a estos módulos.
La gran cantidad de métricas existentes conjugadas
con las tecnologías actuales y diferentes aspectos del
software, han direccionado el desarrollo de una nueva
vía de investigación orientada hacia la propuesta de
modelos, arquitecturas y marcos de referencia que
permitan la organización de las medidas. En este
contexto, las técnicas de minería de datos surgen
como herramientas para realizar exploraciones más
profundas y extraer información nueva y útil que se
encuentra oculta en grandes volúmenes de datos.
El objetivo de este trabajo es mostrar cómo
mediante una técnica de clasificación bioinspirada es
posible predecir errores en los módulos de software
posiblemente defectuosos basados en una serie de
parámetros.
1.1. Métricas y calidad del software
El uso de los algoritmos de minería de datos
para las métricas de software ha sido ampliamente
Andrés Castaño Vélez et al. / Vector 5 (2010) 45-52
investigado. Las métricas del software han partido de
una combinación de técnicas de inteligencia artificial y
análisis estadístico. La técnica de inteligencia artificial
usada es un mecanismo para generar preguntas
basadas en los objetivos de los usuarios e identificar
métricas que pueden entregar una respuesta útil a
dichas preguntas, mientras que las herramientas
estadísticas empleadas son los análisis de correlación
y la búsqueda de valores anómalos en la base de
datos (Mendonca et al., 1998). Una validación de esta
aproximación se hace usando datos de encuestas a los
usuarios (Mendonca y Basili, 2000).
El uso de técnicas de minería de datos para ayudar
en la gestión de proyectos de software incluye el
análisis de regresión múltiple, análisis de componentes
principales, redes neuronales y árboles de clasificación
(Paul et al., 1999).
Para predecir la calidad del software desde las
métricas se ha buscado descubrir el conocimiento en
bases de datos (KDD). Si tomamos por ejemplo un
gran sistema de telecomunicaciones, la gestión de la
configuración asociada y el problema de reportes de
la base de datos, los módulos del sistema se pueden
dividir en 2 clases: los que han experimentado una
falla durante la operación del cliente y los que no.
Utilizando una herramienta de minería de datos
como el algoritmo de árbol de clasificación y regresión
(CART), con un experimento de validación en cruz, la
herramienta puede obtener un promedio de exactitud
de clasificación de alrededor del 75% (Khoshgoftaar
et al., 1999). Por otra parte, la minería de software
está enfocada a atacar los problemas de simulación y
modelado utilizando la extracción del conocimiento de
datos de proyectos anteriores que pueden aplicarse a
proyectos futuros o a fases de desarrollo (Vandecruys
et al., 2008). También puede utilizarse para optimizar
la precisión de los modelos predictivos de calidad del
software usados para clasificar nuevos datos partiendo
de modelos existentes (Azar y Vybihal, 2011).
1.2. Minería de software
La minería de software se refiere al uso de técnicas
de minería de datos para predecir errores en los
módulos de desarrollo del software, basándose en
datos de proyectos anteriores y que pueden aplicarse
a otros proyectos o a fases de desarrollo específicas.
Una categorización de 3 áreas comunes de interés
para la minería de software son la predicción de fallos,
detección de cambios incompletos y esfuerzos de
predicción (Vandecruys et al., 2008).
[ 46 ]
1.2.1. Fallos en proyectos de software
Las empresas hoy en día se centran en ofrecer
calidad a sus clientes, al ofrecerla están conduciendo
a la satisfacción del cliente, lo que a su vez conduce a
generar un vínculo más estrecho y obtener mayores
ingresos a largo plazo. Las empresas que ofrecen
software se rigen bajo este mismo hecho, uno de los
elementos clave que determinan la percepción del
usuario final respecto a la calidad del software es
el grado en el que el sistema se encuentra libre de
errores (Dick et al., 2004). Por esta razón, para los
administradores de sistemas de software, los productos
entregados libres de errores son una prioridad.
El Departamento de Defensa de los Estados Unidos
pierde cerca de cuatro mil millones de dólares de la
base anual debido a fallas del software. Un estudio
realizado en 2003 reveló que en 104 proyectos de
software desarrollados en diferentes continentes, el
reporte de usuario final entrega un promedio de 0,15
fallos por 1.000 líneas de código durante el primer año
en que el proyecto es entregado, que para 100.000 líneas
de código equivalen a 15 fallos que no pueden pasarse
por alto (Cusumano et al., 2003).
Una alta calidad en el software puede obtenerse
con la introducción de un proceso de desarrollo
estructurado de software y un intenso proceso de
pruebas. Sin embargo, en la mayoría de los casos, las
pruebas de software de forma exhaustiva no son una
opción viable, además el entorno de prueba puede
diferir fuertemente del entorno en el que el sistema se
desempeña regularmente, por lo tanto, los resultados
del proceso de pruebas no son siempre representativos
de la calidad de la experiencia del usuario final.
1.2.2. Cambios incompletos en proyectos de software
T í p i c a m e n t e u n p r o ye c t o d e s o f t wa r e e s
implementado por muchos programadores. Para el
caso específico de un software de código abierto, estos
programadores no están ubicados geográficamente
en la misma parte. En un caso de estudio sobre el
código abierto del servidor apache, el desarrollo de
su núcleo y nuevas funcionalidades fue realizado por
15 programadores, sin embargo, se tenían muchos
voluntarios que hicieron cambios completos al código
fuente como resultado de reportes de problemas. Un
programador que cambie un módulo posiblemente
no se percate del impacto que puede causar en otros
módulos que también son cambiados, y como tal se
realiza un cambio incompleto (Mockus et al., 2000).
Análisis de calidad del software usando optimización por colonia de hormigas
La estructura de un software de código abierto no es
la única causa de cambios incompletos al código fuente.
A menudo el código fuente de un proyecto está escrito
en diferentes lenguajes de programación haciendo que
sea bastante difícil descubrir las interdependencias
entre las partes escritas en diferentes lenguajes de
programación, lo cual, también incrementa el riesgo
de cambios incompletos en el código fuente (Ying et
al., 2004).
1.2.3. Estimaciones inexactas de proyectos de software
Al inicio de un proyecto de software, el administrador
decide la cantidad de tiempo, personas y dinero que
se requiere destinar para el desarrollo del proyecto. El
53% de los proyectos de software son entregados tarde,
demasiado caros o con menos de la funcionalidad
requerida, demostrando que es necesario en los
modelos estructurales incrementar la precisión de las
estimaciones como se muestra en el reporte CAOS del
grupo Standish (Standish Group, 2004).
Un ejemplo conocido, es el modelo de estimación
COCOMO II, una representación de costos que sirve
de base para planear y ejecutar proyectos de software,
que entrega el esfuerzo en persona/mes de acuerdo al
tamaño del proyecto (medido o convertido en miles de
líneas de código fuente), está bien estructurado, fácil
de utilizar y ofrece la posibilidad de adaptación para
las características específicas de la empresa (Boehm y
Harrowitz, 2000). Sin embargo, este modelo presenta
ciertos problemas en el proceso dado que los valores
de las constantes utilizadas en la fórmula A y B son
determinadas con ensayo y error, mientras que las
técnicas de regresión ofrecen una alternativa mejor.
Además, los valores de los factores de escala y los
esfuerzos multiplicadores se determinan en una forma
poco arbitraria. Para este fin, la lista de preguntas es
diligenciada por las personas responsables, por lo
tanto, la calidad del modelo resultante depende de
las respuestas subjetivas dadas por estas personas (De
Rore et al., 2006).
La minería de software puede ser una herramienta
muy útil si se usa como un instrumento para predecir
fallos, en este sentido, el usuario final de un sistema
de software asocia la calidad del software, entre otras
cosas, con un sistema de software libre de errores, sin
embargo, ya se había mencionado que los sistemas de
prueba de forma exhaustiva son poco viables. Por lo
tanto, esta herramienta puede ofrecer una solución
para el modelado de predicciones de calidad del
software o clasificaciones de calidad del software
(Khoshgoftaar y Seliya, 2003).
2. Métodos
La optimización por colonia de hormigas (ACO, Ant
Colony Optimization) es una técnica bioinspirada de
clasificación basada en el comportamiento externo de
una colonia de hormigas reales al momento de buscar
alimento (Dorigo et al., 2006). Una hormiga por sí sola
es un insecto con capacidades limitadas que se rige
por reglas de decisión sencillas, sin embargo, estas
reglas sencillas son suficientes para toda la colonia de
hormigas para encontrar caminos más cortos del nido
a la fuente de alimento. Cada hormiga deja caer una
sustancia química llamada feromona que atrae a otras
hormigas e indirectamente se comunica con las demás
hormigas compañeras de la colonia. Suponga que 2
hormigas inician desde el nido para buscar el camino
más corto a la fuente de comida, y existen 2 caminos
para llegar a la fuente de alimento, uno más corto que
el otro, inicialmente no hay feromonas presentes en
ninguno de los caminos, por lo que existe un 50% de
probabilidades de elegir cualquiera de los caminos.
Ahora, suponga que una hormiga escoge el camino
más corto, por lo tanto regresará más rápido al nido
dejando el doble de feromona en el camino más corto
a diferencia del camino más largo. Como resultado, la
probabilidad que la próxima hormiga elija el camino
más corto será 2 veces mayor, resultando en más
feromonas y por ende más hormigas elegirán este
camino, hasta que finalmente, por lo general, todas
las hormigas seguirán el camino más corto. Se debe
tener en cuenta que en el camino más largo el rastro
de feromonas irá desapareciendo por evaporación.
La optimización por colonia de hormigas emplea
hormigas artificiales que cooperan de manera similar
a las hormigas biológicas para encontrar las mejores
soluciones para los problemas de discretización (Dorigo
et al., 2006). El primer algoritmo de ACO (Dorigo
et al., 1996) consideró hormigas que iterativamente
construyen soluciones y adicionan feromonas a los
caminos correspondientes a estas soluciones. La
selección del camino es un proceso estocástico basado
no sólo en el valor histórico de la feromona sino en un
valor heurístico dependiente del problema. El valor
de la feromona entrega una indicación del número de
hormigas que ha escogido recientemente el camino,
mientras que el valor heurístico es una medida de
calidad dependiente del problema. En el momento
en que una hormiga llega a un punto de decisión, es
más probable que elija el sendero con mayor número
de feromonas y valores heurísticos. Una vez que la
hormiga llega a su destino, la solución que corresponde
al camino seguido por la hormiga es evaluada y el
valor de feromonas de ese camino es aumentado en
consecuencia. Además, la evaporación causa que el
[ 47 ]
Andrés Castaño Vélez et al. / Vector 5 (2010) 45-52
nivel de feromonas de todos los senderos disminuya
gradualmente, y los caminos que no son reforzados con
feromonas tienen menor probabilidad de ser elegidos
por las hormigas siguientes.
El desempeño de este algoritmo de ACO es pobre
en problemas de gran escala (Stutzle y Hoos, 1996).
En 1997 se diseña un algoritmo para superar este
problema (Dorigo y Gambardella, 1997). Lo realmente
importante para este documento es la aplicación que
este algoritmo tiene en la minería de datos, dado que
se conoce su aplicación en problemas de agrupamiento
(Abraham y Ramos, 2003; Handl et al., 2006) y en tareas
de clasificación (Parpinelli et al., 2002; Bo et al., 2003;
Xingliang y Jianzhang, 2006). Cuando se dio la primera
aplicación de este algoritmo en tareas de clasificación
fue llamado Ant-Miner; posteriormente aparecieron
las versiones mejoradas de Ant-Miner2, Ant-Miner3
y Ant-Miner+.
2.1. Algoritmo Ant-Miner+
Primero es necesario definir en qué ambiente operan
las hormigas. Cuando una hormiga se mueve en su
ambiente desde un punto de inicio hasta un punto
final, se puede construir de forma incremental una
solución al problema de clasificación (Vandecruys
et al., 2008). Para construir un conjunto de reglas de
clasificación, se establece un gráfico en el cual una vía
para cada hormiga implícitamente describe una regla
de clasificación. En un ACO las hormigas artificiales
construyen la solución usando un procedimiento
constructivo estocástico. Durante esta fase de
construcción las hormigas caminan aleatoriamente
por un grafo llamado ‘grafo de construcción’, donde
se tiene un conjunto de conexiones (arcos) entre
los componentes (nodos). En general, el grafo de
construcción es completo, es decir, está completamente
conectado, pero algunas de las restricciones del
problema pueden modelarse eliminando algunos
arcos del grafo completo. Cada arco tiene asociado un
rastro de feromona y puede tener asociado también
un valor heurístico. Ambos valores se usan para guiar
la fase de construcción estocástica que realizan las
hormigas, pero hay una diferencia importante entre
ellos: los rastros de feromona se modifican a lo largo
de la búsqueda mientras que los heurísticos son valores
fijos establecidos por fuentes externas al algoritmo
(el diseñador ). Los rastros de feromona pueden
asociarse también a los nodos del grafo de construcción
(componentes de la solución) en lugar de a los arcos
(conexiones entre componentes).
[ 48 ]
Un ejemplo de construcción gráfica de Ant-Miner+
para un conjunto de datos de minería de software con
sólo 3 variables (lenguaje de programación, líneas
de código-LOC y número de operadores), el camino
señalado en negrita describe la regla “Si Lenguaje
de programación=Java y LOC>=30 y número de
operadores>=15 entonces clase=defectuosa”. Para un
conjunto de datos con d clases, n variables, de las cuales
la primera y última variables son nominales y V2 es
ordinal (con los dos grupos vértices), los parámetros
de peso α y β determinan la importancia relativa de
la feromona y los valores heurísticos, como se indica
en (1):
(1)
donde:
= Nivel de feromona del arco
= Información heurística
α y β = Parámetros que determinan la importancia
relativa de la feromona en relación con la información
heurística.
Luego de que el ambiente está definido, se puede
examinar el funcionamiento de la técnica, todas las
hormigas empiezan en el nodo de inicio y caminan
a través de su ambiente hasta el nodo de fin,
construyendo gradualmente una regla. Sólo para la
hormiga que describa la mejor regla, su camino será
actualizado con feromona, como es propuesto por la
aproximación al sistema de colonia de hormigas minmax. La evaporación disminuye la feromona en todos
los caminos por la multiplicación con el factor ρ (un
número real en el rango [0,8-0,99]), mientras que los
niveles de feromonas se ven limitados dentro de los
límites de un intervalo dado [Tmin,Tmax]; estos límites se
imponen con el objetivo de evitar el estancamiento en
la búsqueda de soluciones. Cuando se da una iteración
con hormigas caminando desde el inicio hasta el
fin, ocurre la convergencia cuando todo el nivel de
feromonas de un camino es Tmax y los demás caminos
tienen un nivel de feromonas Tmin , el siguiente paso es
extraer la regla correspondiente a el camino con Tmax y
adicionada al conjunto de reglas. Finalmente, los datos
de entrenamiento que son cubiertos por esta regla se
remueven de todo el conjunto de datos, este proceso
es iterativo hasta que se detenga por el cumplimiento
de un criterio establecido.
Análisis de calidad del software usando optimización por colonia de hormigas
Figura 1. Ejemplo de un camino seguido por una hormiga para la construcción del gráfico de software definido por Ant-Miner+. La
regla correspondiente para seleccionar caminos es “Si lenguaje de programación=java and LOC ∈ [30, ∞) and número de operadores ∈
[15, ∞) entonces clase=defectuosa”.
La hormiga comienza en un nodo inicial y elige el
siguiente nodo de acuerdo con el rastro de feromona
y el heurístico asociado con cada arco (o nodo). La
hormiga añade el nuevo nodo al camino andado y
selecciona el siguiente nodo de la misma forma. Este
proceso se repite hasta que se construye una solución
candidata. Luego, se modifican los rastros de feromona
asociados con los arcos. Un rastro particular puede
aumentar si el arco correspondiente ha sido usado
por una hormiga para construir su solución y puede
disminuir debido a la evaporación (un mecanismo
que evita la convergencia prematura del algoritmo).
El aumento en los rastros de feromona normalmente
depende de la calidad de las soluciones candidatas
construidas por las hormigas que pasan por el arco.
Las ventajas de este algoritmo no sólo son su
exactitud y comprensión de los modelos generados
sino la posibilidad de obtener modelos de predicción
intuitivos, por ejemplo, cuando una regla de
clasificación se induce para predecir si un módulo de
software es defectuoso, la regla “Si LOC>1000 entonces
clase=no defectuoso”, es una regla no intuitiva, como se
espera que los módulos más grandes estén más sujetos
a fallos, al cambiar el signo del ejemplo por <, la regla
“Si LOC>1000 entonces clase=defectuoso”, es intuitiva
(Vandecruys et al., 2008).
3. Resultados
La aplicación en un caso real del algoritmo ACO
de clasificación se realizó sobre un conjunto de datos
dispuesto por el repositorio PROMISE (Sayyad
Shirabad y Menzies, 2005). Se tomó el conjunto de
datos KC1 creado por la NASA. El objetivo es realizar
la clasificación de módulos o clases de software
posiblemente defectuosos basados en una serie de
atributos conformados de acuerdo con las métricas
de complejidad del software (McCabe, 1976; Halstead,
1977) e identificar cuándo un módulo puede llegar a
tener un comportamiento adecuado o no. Este archivo
es del tipo ARFF (Attribute Relation File Format) y cuenta
con una serie de casos, los cuales a su vez contienen
atributos categóricos en donde se le asigna un valor
a cada uno para realizar el recorrido del algoritmo y
poder identificar un conjunto de reglas.
Tabla 1
Composición del conjunto de datos utilizado para el caso de estudio
Conjunto de datos
# Casos
#
Atributos categóricos
#
Atributos
continuos
#
Clases
Class-level data for KC1
144
0
94
2
(defectuoso, no defectuoso)
[ 49 ]
Andrés Castaño Vélez et al. / Vector 5 (2010) 45-52
La aplicación en la cual se ejecutó el algoritmo de
clasificación es Myra-3.0.1, un framework gratuito y de
código abierto escrito en lenguaje Java, proporciona
una capa especializada de minería de datos para
aplicaciones que utilizan optimización por colonia
de hormigas para problemas de clasificación. Myra3.0.1 incluye la implementación de los algoritmos
Ant-Miner, cAnt-Miner y cAnt-Miner2, permitiendo
seleccionar el algoritmo que más ventajas presente al
momento de obtener los datos con la mayor precisión.
El proceso de descubrimiento de las reglas se
determina en gran medida por el conjunto de
entrenamiento, descubriendo una regla a la vez.
Cada vez que se descubre una se añade a la lista
de reglas encontradas, luego elimina el conjunto de
patrones utilizados para descubrir dicha regla del
conjunto de entrenamiento y se hace la petición a
un nuevo proceso para repetir el ciclo, este proceso
es utilizado por ambos algoritmos. Pero, es preciso
tener presente que el algoritmo Ant-Miner realiza
una búsqueda estocástica de la información para la
identificación de reglas, mientras que cAnt-Miner
utiliza búsquedas deterministas para encontrar las
reglas, lo que diferencia ambos algoritmos, y entregan
una desviación estándar diferente. Con el ánimo de
comparar el desempeño de los algoritmos se hizo
necesario discretizar los atributos en una etapa de
preproceso para trabajar el mismo repositorio con
Ant-Miner y cAnt-Miner2. Se utilizó el método de
discretización C4.5-Disc (Kohavi y Sahami, 1996), el
cual consiste en usar el algoritmo de inducción por
árbol de decisión C4.5 para crear intervalos discretos
para cada atributo continuo de forma separada. Para
cada atributo continuo se aplica el algoritmo a un
conjunto reducido de datos que contiene el atributo
a discretizar y el atributo clase. De esta forma, de
las 145 instancias originales se obtuvieron 108 con la
discretización.
Condiciones iniciales para la clasificación del
conjunto de datos:
Algoritmo cAnt-Miner2
Parámetros utilizados en el conjunto de datos:
•
•
[ 50 ]
Number of ant in colony = 3000, determina el
conjunto de reglas construidas durante la iteración
de cada ciclo del algoritmo.
Maximum number of uncovered cases = 5,
determina el procedimiento de descubrimiento de
las reglas. Este proceso es iterativo en el conjunto
de datos de entrenamiento hasta que se supera
este umbral.
•
•
Minimum covered examples per rule value = 5,
determina el mínimo de cumplimientos de cada
regla para generar un grado de confiabilidad
dentro de los patrones descubiertos en el conjunto
de datos.
Maximum number of iterations = 1500, limita el
ciclo del algoritmo.
=== Run Information ===
Random seed: 1305733777287
Relation: kc1-class-level-defectiveornot
Instances: 145
Attributes: 94
Duplicates: yes
Classes: 2
Hierarchical: no
=== Discovered Rules ===
IF maxDIFICULTAD_PROGRAMA < 12.375
AND avgESENCIA_COMPLEJIDAD < 1.1833335
AND avgCOMPLEJIDAD_ALGORITMO_INDEP_
LENGUAJE < 22.6295 AND maxLINEAS_CODIGO <
38.5 THEN NO_DEFECTUOSO
IF sumNIVEL_ENTENDIMIENTO >= 3.09 AND
avgLINEAS_CODIGO_Y_COMENTARIO < 0.1785715
THEN DEFECTUOSO
IF VECES_INCLUIDA < 0.5 AND
maxCOMPLEJIDAD_ALGORITMO_INDEP_
LENGUAJE >= 46.935 AND sumNIVEL_
ENTENDIMIENTO < 4.21 THEN DEFECTUOSO
IF avgLINEAS_CODIGO < 37.9375 AND
maxCOMPLEJIDAD_ALGORITMO_INDEP_
LENGUAJE >= 35.335 AND maxLINEAS_
COMENTARIO < 19.5 THEN NO_DEFECTUOSO
IF sumNIVEL_ENTENDIMIENTO >= 1.19 AND
maxCOMPLEJIDAD_CICLOMATICA < 22.0 THEN
DEFECTUOSO
IF maxDIFICULTAD_PROGRAMA < 40.38 THEN
NO_DEFECTUOSO
IF <empty> THEN DEFECTUOSO
Measure (AccuracyMeasure): 0.9310344827586207
Elapsed time: 4 second(s)
Algoritmo Ant-Miner
Measure (AccuracyMeasure): 0.9028390572614326
Elapsed time: 4 second(s)
Análisis de calidad del software usando optimización por colonia de hormigas
Tabla 2
Exactitud predictiva de Ant-Miner y cAnt-Miner2 después de 10 veces del procedimiento de validación en cruz
Tamaño
Conjunto de datos
Class-level data for KC1
Original
144
4. Conclusiones
En este trabajo se ha demostrado cómo determinar
la predicción de errores en los módulos de software y
su aplicación a través de una técnica de clasificación en
un conjunto de datos con módulos o clases de software
posiblemente defectuosos utilizando el algoritmo de
Optimización por Colonia de hormigas (ACO).
El algoritmo cAnt-Miner2 posee una exactitud de
predicción levemente mayor que el algoritmo AntMiner, además encuentra la lista de reglas de una
manera más simple sin que se incremente el tiempo
de computo.
La utilización de ACO se ha extendido a problemáticas
de análisis de calidad de software. En este trabajo
tomamos información de un repositorio público. Los
resultados obtenidos ayudan al administrador del
proyecto de software a tomar acciones concretas y
mejorar el proceso de desarrollo.
El algoritmo cAnt-Miner2 evidencia la construcción
de un conjunto de reglas que no hace uso de la
reutilización de patrones encontrados para identificar
nuevas reglas, a partir de un conjunto de datos con
atributos continuos. Diferenciándose del algoritmo
C4.5 en donde el conjunto de reglas encontrado se
construye a partir de la reutilización de patrones para
ir de lo general a lo particular.
Referencias
Abraham A., Ramos V. (2003). Web usage mining using artificial
ant colony clustering and linear genetic programming. CEC ‘03.
The 2003 Congress on Evolutionary Computation, 1382: 1384-1391.
Azar D., Vybihal J. (2011). An ant colony optimization algorithm to
improve software quality prediction models: Case of class stability.
Information and Software Technology, 53(4): 388-393.
Bo L., Abbas H.A., McKay B. (2003). Classification rule discovery
with ant colony optimization. En: Intelligent Agent Technology, IAT
2003. IEEE/WIC. pp. 83-88.
Boehm B., Harrowitz E. (2000). Software Cost Estimation with Cocomo
II. Prentice Hall International.
Cusumano M., MacCormack A., Kemerer C., Crandall W. (2003).
Software development worldwide: the state of practice. IEEE
Software - IEEE Computer Society, 20(6): 28-34.
de Almeida M.A., Lounis H., Melo W.L. (1999). An investigation
on the use of machine learned models for estimating software
correctability. International Journal of Software Engineering and
Knowledge Engineering, 9(5): 565-594.
De Rore L., Snoeck M., Dedene G. (2006). COCOMO II applied in
a banking and insurance environment: experience report. En:
Discreto
108
Ant-Miner
90,28
Algoritmo
cAnt-Miner2
93,10
Software Measurement European Forum Edition 3. Roma. pp. 247-257.
Dick S., Meeks A., Last M., Bunke H., Kandel A. (2004). Data mining
in software metrics databases. Fuzzy Sets and Systems, 145(1):
81-110.
Dorigo M., Maniezzo V., Colorni A. (1996). The Ant System:
Optimization by a Colony of Cooperating Agents. IEEE
Transactions on Systems, Man, and Cybernetics-Part B, 26(1): 29-41.
Dorigo M., Gambardella L.M. (1997). Ant colony system: a
cooperative learning approach to the travelingsalesman problem.
IEEE Transactions on Evolutionary Computation, 1(1): 53-66.
Dorigo M., Birattari M., Stutzle T. (2006). Ant colony optimization.
Computational Intelligence Magazine, IEEE, 1(4): 28-39.
Garcia M.N.M., Quintales L.A.M., Penalvo F.J.G., Martin M.J.P.
(2001). Aplicación de técnicas de minería de datos en la
construcción y validación de modelos predictivos y asociativos
a partir de especificaciones de requisitos de software. En: ADIS.
pp. 1.
Halstead M.H. (1977). Elements of Software Science (Operating and
programming systems series). Elsevier Science Inc: New York.
Handl J., Knowles J., Dorigo M. (2006). Ant-Based Clustering and
Topographic Mapping. Artificial Life, 12(1): 35-61.
Khoshgoftaar T., Allen E., Jones W., Hudepohl J. (1999). Data Mining
for Predictors of Software Quality. International Journal of Software
Engineering and Knowledge Engineering, 9(5): 547-564.
Khoshgoftaar T.M., Seliya N. (2003). Analogy-Based Practical
Classification Rules for Software Quality Estimation. Empirical
Software Engineering 8(4): 325 - 350
Kohavi R., Sahami M. (1996). Error-based and entropy-based
discretization of continuous features. En: Proceedings of the second
international conference on knowledge discovery and data mining
California. pp. 114–119.
McCabe T.J. (1976). A complexity measure. IEEE Transactions on
Software Engineering, 2(4): 308–320.
Mendonca M., Basili V., Bhandari S., Dawson J. (1998). An approach
to improving existing measurement frameworks. IBM Systems
Journal, 37(4): 484-501.
Mendonca M., Basili V. (2000). Validation of an Approach for
Improving Existing Measurement Frameworks. IEEE Transactions
on Software Engineering, 26(6): 484-499.
Mockus A., Fielding R., Herbsleb J. (2000). A Case Study of Open
Source Software Development: The Apache Server. En: ICSE’2000.
ACM. pp. 263-272.
Parpinelli R.S., Lopes H.S., Freitas A.A. (2002). An ant colony algorithm
for classification rule discovery. En: Data Mining: A Heuristic Approach.
pp. 190-208.
Paul R.A., Kunii T.L., Shinagawa Y., Khan M.F. (1999). Software
metrics knowledge and databases for project management.
Knowledge and Data Engineering, IEEE Transactions on, 11(1): 255264.
Sayyad Shirabad J., Menzies T.J. (2005). The PROMISE Repository of
Software Engineering Databases. School of Information Technology
and Engineering, University of Ottawa, Canada,
Standish Group. (2004). Chaos report. The Standish Group.
Stutzle T., Hoos H. (1996). Improving the Ant-System: A detailed report
on the MAX --MIN Ant System.
Vandecruys O., Martens D., Baesens B., Mues C., De Backer M.,
Haesen R. (2008). Mining software repositories for comprehensible
[ 51 ]
Andrés Castaño Vélez et al. / Vector 5 (2010) 45-52
software fault prediction models. The Journal of Systems and
Software, 81(5): 823-839.
Xingliang Z., Jianzhang L. (2006). An Ant Colony System-based
Optimization Scheme of Data Mining. En: Sixth International
Conference on Intelligent Systems Design and Applications, ISDA
‘06. pp. 400-403.
Ying A.T.T., Murphy G.C., Ng R., Chu-Carroll M.C. (2004). Predicting
source code changes by mining change history. IEEE Transactions
on Software Engineering, 30(9): 574-586.
[ 52 ]
Descargar