El presente artículo tiene como objetivo explicar la red neuronal utilizada por AJI (Analizador Java Inteligente). Para esto previamente se explica brevemente el prototipo desarrollado y finalmente se exponen las principales características de la red neuronal artificial utilizada por el presente proyecto
AJI es una nueva herramienta de soporte a la calidad del software, un evaluador de código fuente Java basado en métricas de software e Inteligencia Artificial que perfila el tipo de programador y a la vez determina la calidad de los archivos Java.
Sabiendo que las actividades relacionadas con la producción de software seguirán en aumento, se presenta la necesidad de automatizar parte de las funciones de soporte y gestión que un proyecto de desarrollo de software requiere. El prototipo desarrollado, denominado AJI (Analizador Java Inteligente), emplea una red neuronal Perceptrón Multicapa con el fin de reconocer patrones en el código fuente de programas escritos en lenguaje Java. Para ello se emplean métricas de software clásicas y otras diseñadas específicamente para el proyecto. También se utilizan algoritmos de clustering (agrupamiento de datos) para crear un conjunto de entrenamiento apropiado para la red neuronal.
El proyecto utiliza una red neuronal de tipo Perceptrón Multicapa configurada a partir del resultado del preprocesamiento realizado por el algoritmo de clustering Expectation-Maximization (EM) y entrenada utilizando el procedimiento de retropropagación (backpropagation). Con el propósito de definir un Universo de Estilos de Codificación (UEC) a partir de un conjunto de muestras heterogéneas, suficientemente representativas y correctas, se recopilaron 1000 archivos de código fuente java (ACF) con las siguientes características:
Una vez establecidas las muestras se configuró el algoritmo EM con los siguientes parámetros:
Máximo de iteraciones: 100
Desviación estándar mínima: 1.0 x 10-6
Cantidad de clusters: 5
Cantidad de semillas (seeds): 200
Modo de cluster: evaluar sobre datos de entrenamiento.
Se obtuvo el siguiente resultado:
Log likelihood: -9.06605
Cada ACF es distribuido en función de la calificación obtenida. Etiquetas flotantes dan referencia al código de identificación del objeto acumulado en cada serie. Para el contexto descripto en la presente sección, una red neuronal Perceptrón Multicapa resultó ser la estructura neuronal más precisa para clasificar el UEC. Entrenada con el algoritmo backpropagation y configurada con los siguientes parámetros:
Tasa de aprendizaje: 0.3 (La cantidad en que los pesos son actualizados).
Momentum: 0.2 (Énfasis aplicado a los pesos durante la actualización).
Tiempo de entrenamiento: 500 epochs (La cantidad de ciclos requeridos para entrenar la red neuronal).
Umbral de validación: 20 (El valor define la cantidad de veces que puede repetirse un error antes de finalizar el entrenamiento).
Fuente de entrenamiento: training set y cross validation.
Finalmente la Red Neuronal Artificial mencionada previamente clasifica los archivos que recibe como entradas colocándolos en uno de 5 clusters, los cuales corresponden a distintos perfiles de programación.
En base a los resultados obtenidos del proceso de clasificación, AJI es capaz de determinar el perfil del autor de los ACF. Finalmente un sistema experto recomienda a los autores informándoles en qué aspectos deberían mejorar su forma de codificar. La precisión de los resultados confirmaría al prototipo como una alternativa eficaz de soporte al proceso de calidad del software.
Agüero M., Esperón G., Madou F, López De Luise D., “Intelligent Java Analyzer”, IEEE CERMA, 2008.
Madou F, Agüero M., Esperón G., López De Luise D., “Evaluador Inteligente de Código Java”, CICA, 2009.
Madou F, Agüero M., Esperón G., López De Luise D., “Sistemas Expertos en Evaluación de Calidad Java”, CONESCAPAN, 2009
Agüero M., Madou F, Esperón G., López De Luise D., “Enhancing Source Code Metrics Scope Through Artificial Intelligence”, CITSA, 2010.
Agüero M., Madou F, Esperón G., López De Luise D., “Artificial Intelligence for Software Quality Improvement”, WASET, 2010.