Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Index Terms — Artificial intelligence, Neural networks, 1. Los requerimientos del software son la base de las
Software metrics, Software quality, Software engineering. métricas de la calidad, o sea, la falta de concordancia
con los requerimientos es una falta de calidad.
2. Estándares específicos definen un conjunto de
criterios de desarrollo, la ausencia de estándares, en
I. INTRODUCCIÓN muchos casos, es un indicio de baja calidad [4].
3. Factores que sólo pueden medirse indirectamente
estándares, pone a prueba el comportamiento de clases y El diseño modular y la parametrización por archivos de
métodos Java generando entradas aleatorias y analizando los configuración hacen de AJI una herramienta flexible y
resultados. Se integra con Eclipse como un plug-in7 y genera adaptable tanto a los requerimientos científicos como
reportes a nivel proyecto. Los valores de entrada no siempre empresariales.
son adecuados para todos los métodos y puede reportar errores Se trata software desarrollado totalmente en lenguaje Java
incorrectamente. Otra limitación es que su licencia de uso no por lo que es ejecutable desde cualquier plataforma JRE 1.5
es Open Source. (Java Runtime Environment versión 1.5) compatible. El
diseño de los algoritmos optimiza la utilización de CPU y
El presente trabajo propone una herramienta de soporte a la memoria, posibilitando el análisis de grandes volúmenes de
calidad del software, un evaluador y clasificador de código código fuente Java (ver Tabla 2) en pocos minutos de
fuente Java basado en técnicas de inteligencia artificial. ejecución.
Software Java desarrollado en el laboratorio de investigación
AIGroup de la Universidad de Palermo [15]: Analizador Java En las siguientes secciones se describe el diseño y
Inteligente (AJI). Una propuesta cuyo objetivo es dar soporte principales aspectos funcionales de cada módulo.
al desarrollo de código fuente con el propósito de mejorar la
calidad del software a través de la inspección, calificación y
A. Módulo Secuenciador de Contenidos
clasificación de código fuente en forma automática.
Como se aprecia en el diagrama de la figura 2, el módulo
A continuación, en la sección I se presenta una descripción Secuenciador de Contenidos es el nexo de AJI con los
de la arquitectura de la herramienta, considerando archivos de código fuente Java (ACF). Esencialmente es la
modularidad y desacoplamiento como factores determinantes extensión a una implementación de la interfase Collection de
durante la fase de diseño, en la sección II se presenta las la API (Application Program Interface) de Java.
configuración inicial del experimento, características de las
entradas y salidas, la sección III presenta una nueva propuesta
de caracterización del software a partir de los resultados
obtenidos. Finalmente en la sección IV se resumen las
conclusiones más importantes y trabajo futuro.
I. ARQUITECTURA
La arquitectura de AJI está dividida en 6 módulos, 4 Fig. 2. Diagrama Secuenciador de Contenidos
principales (núcleo) y 2 secundarios (externos). Como puede
apreciarse en Fig. 1 la comunicación entre componentes es
Encapsula las palabras y símbolos de los ACF, serializando
únicamente a través de resultados almacenados en la base de
sincrónicamente y de forma transparente la información a
datos y las interfaces externas (archivos de código fuente y
procesar. Es configurable para definir símbolos de separación
reportes) son delegadas a módulos específicos e
de palabras y normaliza el código fuera de estándar.
independientes del núcleo.
Ha sido desarrollado por AIGroup en simultáneo con AJI y
próximamente será liberada la versión 1 para uso público bajo
la licencia GNU General Public License8.
7
Software que interactúa con una aplicación principal para proveer una
8
función específica. http://www.eclipse.org/articles/Article-Plug-in- Licencia cuyo propósito es declarar que el software cubierto es libre y
architecture/plugin_architecture.html gratuito y para protegerlo de intentos de apropiación y limitación de uso.
4
9
Herramienta de software desarrollada por Sun Microsystems para
En el diagrama de la Fig. 5 está representada la estructura
generar documentación en formato HTML a partir de código fuente Java. de la red neuronal de 3 capas. La capa de entrada con
10
Anglicismo: calibración, configuración para optimizar rendimiento.
5
Plataforma de ensayo:
La ejecución del experimento se desarrolló en un equipo
con las siguientes características: PC procesador Pentium II
400 MHz, RAM 512 MB, S.O. Windows 2000 y JDK
1.5.0_03.
Durante el procesamiento de la muestra (1000 ACF)
intervinieron diferentes programas o módulos, los cuales
Fig. 6. Informe de resultados
requirieron individualmente el siguiente tiempo de ejecución:
Red Neuronal:
Para el contexto descripto en la presente sección, una red Estadístico Kappa:
neuronal perceptrón multicapa resultó ser la estructura P( A ) − P( E )
(3)
neuronal más precisa para clasificar el UEC. Entrenada con el 1 − P( E )
algoritmo backpropagation y configurada con los siguientes Donde P(A) es la proporción de veces en las que los valores del modelo
parámetros: resultaron iguales al valor actual y P(E) es la proporción esperada.
( a1 − c1 ) + ( a 2 − c 2 ) + ... + ( an − cn )
2 2 2
(La cantidad de ciclos requeridos para entrenar la red
(5)
neuronal). n
El error promedio cuadrático muestra el valor del error en la misma
Umbral de validación: 20 dimensión que los valores de la predicción.
(El valor define la cantidad de veces que puede repetirse un
error antes de finalizar el entrenamiento). Error absoluto relativo:
a1 − c1 + a 2 − c 2 + ... + an − cn
(6)
Fuente de entrenamiento: training set y cross validation a1 − a + a 2 − a + ... + an − a
Es el total de error absoluto hecho relativo a lo que el error habría sido si la
Se obtuvieron resultados descriptos a continuación. predicción fuese simplemente el promedio de los valores actuales.
( a1 − c1 ) + ( a 2 − c 2 ) + ... + ( an − cn )
2 2 2
III. RESULTADOS OBTENIDOS
(7)
( a1 − a ) + ( a 2 − a ) + ... + ( an − a )
2 2 2
Como parte del conjunto de resultados, también deberá Es el total de error cuadrático hecho relativo a lo que el error habría sido se la
considerarse el proceso de data mining por clustering predicción fuese el promedio del valor absoluto.
empleado para etiquetar18 los ACF previamente caracterizados
por métricas de software. Es evidente que la red neuronal entrenada tanto utilizando el
En el cuadro de la Tabla 6 se comparan los resultados training set (método optimista) o por cross-validation a 10
obtenidos al clasificar utilizando la red neuronal (NN) del folds alcanza marcas de precisión destacables.
Módulo Clasificador Inteligente de AJI: En la siguiente Tabla 7, la matriz de confusión
correspondiente al ensayo A:
TABLA 6
RESULTADOS DE ENTRENAMIENTO DE RED NEURONAL TABLA 7
Ensayo A B MATRIZ DE CONFUSIÓN ENSAYO A
Modo de cross validation a b c d e << clasificado
training set
entrenamiento (10 folds)
310 2 9 1 4 cluster 0
Instancias
clasificadas 938 93.8 % 914 91.4 % 3 28 16 0 3 cluster 1
correctamente 12 0 171 4 3 cluster 2
Instancias 0 0 0 246 0 cluster 3
clasificadas 62 6.2% 86 8.6 % cluster 4
incorrectamente 4 0 1 0 183
Estadístico
Kappa 0.918 0.8866
Error absoluto Esta matriz presenta los aciertos en la diagonal. La
promedio
0.0347 0.0478
Error promedio
sumatoria horizontal corresponde al total real de instancias
cuadrático
0.1322 0.1755 para el cluster y las columnas el valor definido por la red
Error absoluto neuronal.
relativo
11.435 % 15.7361 %
Error
cuadrático 33.9189 % 45.0392 %
relativo
Número de
instancias
1000 1000
18
Término extraído de Data Mining: Practical Machine Learning Tools
and Techniques [24].
8
V. AGRADECIMIENTOS
19
Es una rama de inteligencia artificial dedicada al diseño y desarrollo de
algoritmos y técnicas de “aprendizaje” de computadores.
20
Anglicismo: de buen desempeño.
9
[5] Roger S. Pressman, “Ingeniería del Software: Un Enfoque Práctico”, Mc
Graw Hill, 1998.
[6] Stephen H. Kan, “Metrics and Models in Software Quality
Engineering”, Addison-Wesley Professional, 2002.
[7] Capers Jones, “Applied software measurement: assuring productivity
and quality”, Mc Graw Hill, 1996.
[8] Bugzilla: http://www.bugzilla.org/about/
[9] http://www.oracle.com/technology/pub/articles/server_side_unit_tests.ht
ml
[10] http://www-128.ibm.com/developerworks/java/library/j-junit4.html
[11] Eva van Emden, Leon Moonen, “Java Quality Assurance by Detecting
Code Smells”.
[12] Rigi: http://www.rigi.csc.uvic.ca/Pages/description/whatitis.html
[13] Neil Walkinshaw, “Partitioning Object-Oriented Source Code for
Inspections”, University of Strathclyde, Glasgow, 2006.
[14] AgitarOne: http://www.agitar.com/solutions/products/agitarone.html
[15] AI Group: http://www.palermo.edu/ingenieria/itlab.html
[16] W.A. Woods, “Transition Network Grammars for Natural Language
Análisis”, pp. 591-606, Communications of the ACM, 1970.
[17] Bruce Eckel, “Thinking in Patterns”, 2003.
[18] Mark Watson, “Practical Artificial Intelligence Programming in Java”,
2005.
[19] James Gosling, Bill Joy, Guy Steele, Gilad Bracha “The Java Language
Specification 3rd Edition ”, Pretience Hall, 2005.
[20] Daniela López DeLuise, Martín Agüero, “Aplicación de Métricas
Categóricas en Sistemas con Lógica Difusa”, Revista IEEE América
Latina, 2007.
[21] Patrick H. Winston, “Inteligencia Artifical, tercera edición”, Addison
Wesley Iberoamericana, 1992.
[22] iReport: http://sourceforge.net/projects/jasperreports/
[23] Ian H. Witten, Eibe Frank "Data Mining: Practical Machine Learning
Tools and Techniques", pp. 265, Morgan Kaufmann, 2005.
[24] Ian H. Witten, Eibe Frank "Data Mining: Practical Machine Learning
Tools and Techniques", pp. 337, Morgan Kaufmann, 2005.