Professional Documents
Culture Documents
ndice general
1. Introduccin
1.1. Contexto
14
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.3. Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
18
20
. . . . . . . . . .
21
22
23
24
25
27
28
28
29
29
30
30
31
31
31
32
35
35
36
36
37
NDICE GENERAL
41
42
43
44
44
44
46
47
47
49
50
51
51
52
52
53
54
55
2.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
3. Metodologa y mtricas
58
3.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Conjuntos de datos . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. Descripcin del conjunto de datos
58
59
. . . . . . . . . . . . .
59
61
62
. . . . . . . . . . . . . . . . . . . . . . . .
63
. . . . . . . . . . . . . . .
63
68
68
68
69
69
69
71
72
80
81
81
4.1.1. Indizacin . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
83
84
un tpico . . . . . . . . . . . . . . . . . . . . . .
85
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
87
87
5.2. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
5.3. Conclusin
97
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6. Conclusin
99
103
117
ndice de figuras
2.1.1.Proceso de KDD . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.4.1.Camino desde los datos puros hasta el TM. Aqu TM incluye LSI,
ICA, PLSI, LDA y todas las variantes de LDA. . . . . . . . . . .
35
40
61
. . . .
68
74
76
. . . . . . . . . . . . . .
77
78
79
80
88
5.1.2.Segunda pestaa. . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
5.1.3.Tercera pestaa. . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
5.1.4.Cuarta pestaa. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
5.1.5.Quinta pestaa. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
. . . . . . . . .
93
94
. . . . . . . . . . . . . . .
95
96
96
ndice de cuadros
3.1. Esquema del conjunto de datos.
. . . . . . . . . . . . . . . . . .
60
61
. . . . . . . . . . .
65
65
3.5. Tpicos extrados con sus cinco trminos mas influyentes ordenados descendientemente por sus respectivas probabilidades. . . . .
70
82
4.2. Los diez trminos mas relevantes del tpico Z27 . Ordenados en
forma decreciente. . . . . . . . . . . . . . . . . . . . . . . . . . .
85
86
Algoritmos
2.1. Algoritmo de generacin de un proceso LDA. . . . . . . . . . . .
39
62
3.2. Creacin de las versiones a partir de los parmetros iniciales establecidos en la aplicacin.
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
64
66
Captulo 1
Introduccin
1.1.
Contexto
14
CAPTULO 1. INTRODUCCIN
15
aplicar mas recursos de manera tal que permita mejorar la calidad del cdigo
fuente.
En el desarrollo de proyectos de software tanto el cdigo fuente de un sistema de software como tambin otros datos relacionados con el mismo, como por
ejemplo defectos detectados mediante los casos de test mencionados anteriormente, se almacenan en forma digital en repositorios de software. Esto facilita el
acceso y las bsquedas de datos relacionados con el mismo y a su vez transforma a los repositorios en una fuente voluminosa e importante de datos de donde
se puede extraer informacin relevante a los concerns mediante el empleo de
mtodos de la Inteligencia Artificial (IA), como es la Minera de Datos. Esta
tcnica se emplea en el campo de la Ingeniera de Software y se conoce como
Minera de Repositorios de Software (MSR, por sus siglas en ings). Se focaliza
en el anlisis y entendimiento de los repositorios relacionados con el desarrollo
de un proyecto de software (Godfrey et al., 2009; Hassan, 2006; Hassan & Holt,
2005).
El principal objetivo es hacer un uso inteligente de estos repositorios de
software para mejorar al proceso de decisin de un proyecto de software. Esta
tcnica se ha aplicado con xito prediciendo localizacin de defectos en el cdigo
fuente, descubriendo puntos de trazabilidad entre documentos, requerimientos y
el cdigo fuente. Con ello se indexan los repositorios para proveer una bsqueda
rpida para los stakeholders y tambin inferir la red social de desarroladores
basndose en patrones de comunicacin mediante el correo electrnico (Tichy,
2010; Zimmermann et al., 2005).
Estos repositorios se componen de datos estructurados y no estructurados. El
cdigo fuente puede considerarse como un dato estructurado en si, aunque este
tambin contiene datos que no son estructurados como los comentarios, nombres
identificatorios que capturan la semntica de ciertas estructuras y las intenciones
del desarrollador del documento. Otros tipos de repositorios contienen especficamente datos no estructurados, como correos electrnicos, documentacin de
requerimientos y reportes de defectos (bugs) en un sentido mas tradicional.
1.2.
Motivacin
CAPTULO 1. INTRODUCCIN
16
miles a millones de documentos. Estas tcnicas, LSI y LDA, han sido recientemente descubiertas por la comunidad de la Ingeniera de Software y provienen
del campo de Proceso de Lenguaje Natural (NLP) y de Recuperacin de la
Informacin (IR).
Estos estudios aproximan las preocupaciones (concerns) como tpicos haciendo uso de los modelos de tpicos (o Latent Topic Model o Statistical Topic
Model), como por ejemplo Dirichlet Allocation (LDA) (Blei et al., 2003). Los
tpicos son una coleccin de palabras o trminos relacionados que co-ocurren
frecuentemente en el cuerpo de un documento, por ejemplo, un tpico podra
ser {mouse, click, drag, right, left} o {user, account, password, authentication}.
Debido a la naturaleza del uso del lenguaje, los trminos que constituyen un
tpico a menudo se relacionan semnticamente (Blei et al., 2003).
LDA es un modelo diseado para extraer tpicos desde el cuerpo de texto
de los documentos. Investigaciones relacionadas proveen una evidencia inicial
de que los tpicos en sistemas de software estn relacionados a los defectos en
los archivos de cdigo fuente, creando de esta manera una nueva perspectiva de
porque algunos defectos son mas propensos que otros.
Analizar y caracterizar cmo un sistema de software cambia en el tiempo, o
la evolucin de un proyecto de software (Lehman, 1980), ha sido de inters para
los investigadores durante muchos aos. Ambas, cmo y porqu un sistema de
software varia puede ayudar a mejorar el rendimiento de los procesos empleados
en un determinado proyecto de software.
Se ha aplicado LDA (Linstead et al., 2008a) a varias versiones de cdigo
fuente de un proyecto en un esfuerzo por identificar las tendencias de los tpicos
a travs del tiempo. Cuando documentos relativos a un tpico son agregados
por primera vez al sistema, los tpicos experimentaran un aumento en su probabilidad total.
Similarmente se ha evaluado en (Thomas et al., 2010) la efectividad de la
evolucin de los modelos de tpicos para detectar tendencias en el proceso de
desarrollo de software. Los autores aplicaron LDA a una serie de versiones del
cdigo fuente y calcularon la popularidad de un tpico a lo largo del tiempo.
Luego verificaron estos aumentos o cadas de popularidad de los tpicos y en
efecto coincidieron con la actividad mencionada en las notas de las versiones
y otros documentos de los proyectos, otorgando evidencia de que los modelos
de evolucin de tpicos proporcionan un buen resumen sobre la historia de un
sistema de software.
Tambin se aplico LDA (Hindle et al., 2010, 2009b) a los mensajes de logs
de los commits que se realizan en un cdigo fuente para observar en que tpicos estn trabajando los desarrolladores en un determinado momento. Estos
autores aplicaron LDA a 18 mensajes de logs en un periodo de 30 das y luego
CAPTULO 1. INTRODUCCIN
17
1.3.
Tesis
CAPTULO 1. INTRODUCCIN
18
1.4.
Captulo 2
20
2.1.
21
De forma general, los datos son la materia prima bruta. En el momento que
el usuario les atribuye algn significado especial pasan a convertirse en informacin. Cuando los especialistas elaboran o encuentran un modelo, haciendo que
la interpretacin de la informacin y ese modelo representen un valor agregado,
entonces nos referimos al conocimiento.
La capacidad de generar y almacenar informacin creci considerablemente
en los ltimos tiempos, se ha estimado que la cantidad de datos en el mundo
almacenados en bases de datos se duplica cada 20 meses. Es as que hoy las
organizaciones tienen gran cantidad de datos almacenados y organizados, pero
a los cuales no los pueden analizar eficientemente en su totalidad.
Con las sentencias SQL se puede realizar un primer anlisis, aproximadamente el 80 de la informacin se obtiene con estas tcnicas. El 20 % restante,
que la mayora de las veces, contiene la informacin ms importante, requiere
la utilizacin de tcnicas ms avanzadas.
El KDD apunta a procesar automticamente grandes cantidades de datos
para encontrar conocimiento til en ellos, de esta manera permitir al usuario
el uso de esta informacin valiosa para su conveniencia. El KDD es el proceso
no trivial de identificar patrones vlidos, novedosos, potencialmente tiles y, en
ltima instancia, comprensibles a partir de los datos (Fayyad et al., 1996).
El objetivo fundamental del KDD es encontrar conocimiento til, vlido,
relevante y nuevo sobre un fenmeno o actividad mediante algoritmos eficientes,
dadas las crecientes rdenes de magnitud en los datos. Al mismo tiempo hay un
profundo inters por presentar los resultados de manera visual o al menos de
manera que su interpretacin sea muy clara. Otro aspecto es que la interaccin
humano-mquina deber ser flexible, dinmica y colaboradora.
El resultado de la exploracin deber ser interesante y su calidad no debe
ser afectada por mayores volmenes de datos o por ruido en los datos. En este
sentido, los algoritmos de descubrimiento de informacin deben ser altamente
robustos.
Las metas del KDD son:
Procesar automticamente grandes cantidades de datos crudos.
Identificar los patrones ms significativos y relevantes.
Presentarlos como conocimiento apropiado para satisfacer las metas del
usuario.
22
2.1.1.
El proceso de KDD
23
por el algoritmo especfico de minera de datos. Para llevar a cabo el proceso de minera de datos, se buscan patrones que puedan expresarse como
un modelo o simplemente que expresen dependencias de los datos, el modelo encontrado depende de su funcin (clasificacin) y de su forma de
representarlo (rboles de decisin, reglas, etc.), se tiene que especificar un
criterio de preferencia para seleccionar un modelo dentro de un conjunto
posible de modelos, se tiene que especificar la estrategia de bsqueda a
utilizar (normalmente est predeterminada en el algoritmo de minera).
Evaluacin, interpretacin, transformacin y representacin de los patrones extrados: Interpretar los resultados y posiblemente regresar a los pasos
anteriores. Esto puede involucrar repetir el proceso, quizs con otros datos,
otros algoritmos, otras metas y otras estrategias. Este es un paso crucial en
donde se requiere tener conocimiento del dominio. La interpretacin puede beneficiarse de procesos de visualizacin, y sirve tambin para borrar
patrones redundantes o irrelevantes.
Difusin y uso del nuevo conocimiento.
Incorporar el conocimiento descubierto al sistema (normalmente para mejorarlo)
lo cual puede incluir resolver conflictos potenciales con el conocimiento existente.
El conocimiento se obtiene para realizar acciones, ya sea incorporndolo dentro
de un sistema de desempeo o simplemente para almacenarlo y reportarlo a las
personas interesadas. En este sentido, KDD implica un proceso interactivo e
iterativo involucrando la aplicacin de varios algoritmos de minera de datos.
2.2.
Minera de Datos
24
2.2.1.
Las tcnicas de Data Mining son el resultado de un largo proceso de investigacin y desarrollo de productos. Esta evolucin comenz cuando los datos de
negocios fueron almacenados por primera vez en computadoras, y continu con
mejoras en el acceso a ellos, y ms recientemente con tecnologas generadas para
permitir a los usuarios navegar a travs de los datos en tiempo real.
La minera de datos toma este proceso de evolucin ms all del acceso y navegacin retrospectiva de los datos, hacia la entrega de informacin prospectiva
y proactiva. La minera de datos est lista para su aplicacin en la comunidad de
negocios porque est soportada por tres tecnologas que ya estn suficientemente
25
maduras:
Recoleccin masiva de datos.
Potentes computadoras con multiprocesadores.
Algoritmos de Data Mining.
Las bases de datos comerciales estn creciendo a un ritmo sin precedentes. Un
reciente estudio del Meta Group Chaudhuri & Dayal (1997) sobre los proyectos
de Data Warehouse encontr que el 19 % de los que contestaron estn por encima del nivel de los 50 Gigabytes, mientras que el 59 % lo alcanz en el segundo
trimestre de 1997. En algunas industrias, tales como ventas al por menor, estos
nmeros pueden ser an mayores. MCI Telecommunications Corp. cuenta con
una base de datos de 3 terabytes mas 1 terabyte de ndices y overhead corriendo
en un sistema operativo MVS (Multiple Virtual Storage) sobre IBM SP2. La necesidad paralela de motores computacionales mejorados puede ahora alcanzarse
con tecnologa de computadoras con multiprocesamiento paralelo. Los algoritmos de Data Mining utilizan tcnicas que han existido por lo menos desde hace
10 aos, pero que slo han sido implementadas recientemente como herramientas maduras, confiables, extendibles que consistentemente son ms performantes
que mtodos estadsticos clsicos.
En la evolucin desde los datos de negocios a informacin de negocios, cada
nuevo paso se basa en el previo. Por ejemplo, el acceso a datos dinmicos es crtico para las aplicaciones de navegacin de datos, y la habilidad para almacenar
grandes bases de datos es crtica para Data Mining.
Los componentes esenciales de la tecnologa de Data Mining han estado bajo
desarrollo por dcadas, en reas de investigacin como estadsticas, inteligencia
artificial y aprendizaje de mquinas. Hoy, la madurez de estas tcnicas, junto
con los motores de bases de datos relacionales de alta performance, hicieron que
estas tecnologas fueran prcticas para los entornos de Data Warehouse actuales.
2.2.2.
26
27
2.3.
28
2.3.1.
Cdigo fuente
29
Para las tareas de minera, el foco de atencin es solo sobre los identificadores
(por ejemplo, el nombre de las variables), comentarios, cadenas de texto literales
dentro del cdigo fuente. Las palabras correspondientes al lenguaje especfico
en que fue programado se descartan.
2.3.1.2.
Las listas de correo junto con los logs de los chats de un proyecto es un archivo
de comunicacin textual entre los desarrolladores, gerentes y otros stakeholders
del proyecto Shihab et al. (2010a). La lista de correo por lo general consta de un
conjunto de correos con fecha y hora, que contienen una cabecera (que posee el
emisor, receptor (s), y de fecha y hora), un cuerpo del mensaje con el contenido
y un conjunto de archivos que se adjuntaron. Los registros de los chats contienen
el registro de las conversaciones de mensajera instantnea entre los involucrados
en el proyecto y por lo general contienen una marca de tiempo, el autor y el
contenido del mensaje Bettenburg et al. (2009); Shihab et al. (2009a,b).
30
31
Registros de ejecucin
Un registro de ejecuciones es un documento que contiene la salida y/o resultados de la ejecucin de una aplicacin y tambin uno o varios test de prueba
predefinidos. Estos test generalmente contienen una lista con los mtodos o funciones que fueron invocados con su registro temporal. Tambin los valores de
ciertas variables y otros detalles acerca de los detalles de la ejecucin. Estos
tipos de detalles son especialmente tiles para la tarea de realizar la depuracin
(debugging) en sistemas muy grandes.
2.3.1.7.
2.4.
Modelos de Tpicos
32
2.4.1.
Terminologa empleada
33
d1
d2
code
of
are
...
...
d3
2
2
1
En esta matriz podemos observar que por ejemplo para el trmino code en
el documentos d1 aparece con una frecuencia de tres veces, en el documento d2 con una frecuencia de uno y en el documento d3 con una frecuencia
de dos. As sucesivamente para cada trmino podremos encontrar sus frecuencias en cada documento.
Tpico (concepto o tema) Z: Es un vector de tamao m con las probabilidades sobre el vocabulario de un cuerpo. En el ejemplo tendramos en
siguiente tpico:
code
Z1 =
0,25
of
are
that
to
the
sof tware
0,1
0,05
0,01
0,1
0,17
0,3
. . .
...
Z2
Z3
Z4
0,0
0,0
0,7
. . .
...
34
Z1
Z2
Z3
Z4
0,25
0,0
0,0
0,7
0,0
0,0
0,0
1,0
0,1
0,4
0,2
0,0
. . .
. . .
. . .
...
Matriz Tpico-Trmino : Es una generalizacin del vector Zj . Las dimensiones de esta matriz sera de K por m elementos. Una entrada (i, j) obtiene la probabilidad de que un trmino wj aparezca en el tpicoZi .Cada fila
de la matriz se corresponde a un tpico. En el ejemplo la matriz quedara
representada de forma genrica como:
=
code
of
are
that
to
the
sof tware
Z1
0,25
0,1
0,05
0,01
0,1
0,17
0,3
Z2
0,0
0,0
0,0
0,05
0,2
0,0
0,05
Z3
0,1
0,04
0,2
0,0
0,07
0,1
0,12
...
...
. . .
...
. . .
...
35
Figura 2.4.1: Camino desde los datos puros hasta el TM. Aqu TM incluye LSI,
ICA, PLSI, LDA y todas las variantes de LDA.
2.4.2.
2.4.3.
36
2.4.4.
Idependent Component Analysis (ICA) (Comon, 1994) es una tcnica estadstica utilizada para descomponer una variable aleatoria en componentes estadsticamente independientes (dimensiones). Aunque generalmente no es considerada
una tcnica de modelos de tpicos, fue usada en forma similar a LSI para modelar documentos de cdigo fuente en un espacio conceptual de K dimensiones
.
Como LSI, ICA reduce las dimensiones de la matriz A para ayudar a reducir
el ruido de los trminos asociados. Sin embargo, a diferencia LSI, las dimensiones
resultantes de ICA son estadsticamente independientes unas de otras, lo que
ayuda a capturar mas variacin en los datos subyacentes (Grant & Cordy, 2009).
2.4.5.
Probabilistic Latent Semantic Indexing (PLSI), tambin conocido como Probabilistic Latent Semantic Analysis (PLSA) (Hofmann, 2001, 1999a), argumenta
37
que desde que LSI usa SVD en la fase de reduccin de dimensiones, LSI esta haciendo de forma implcita la suposicin de que la cuenta de trminos siguen una
distribucin de Gauss. Desde este supuesto no se verifica, LSI es "insatisfactoria
e incompleta" (Hofmann, 1999b).
Para superar este supuesto, PLSI define un modelo generativo con variables
latentes donde estas son tpicos en los documentos. A un alto nivel, un modelo
generativo tiene las ventajas de ser evaluado con tcnicas de estadstica estandar como por ejemplo modelos de chequeo, cross-validacion y control complejo.
LSI no puede ser evaluado bajo ninguna de estas tcnicas. Desde que se emplea variables latentes como tpicos en los documentos, PLSI est tambin bien
equipado para manejar ms fcilmente la polisemia y sinonimia.
Los pasos realizados por el modelo generativo pueden ser resumidos con los
siguientes:
1. Seleccionar un documento di con probabilidad P (di ).
2. Seleccionar un tpico Zk con probabilidad P (Zk |di ).
3. Generar un trmino wi con una probabilidad P (i |Zk ).
Teniendo en cuenta las observaciones en un conjunto de datos (es decir los trminos), uno puede realizar inferencia contra este modelo de tpicos no descubiertos
Zi , . . . , Zk . Como se indic anteriormente el modelo generativo PLSI sufre dos
problemas importantes. Primero, desde que d es usado como una variable de
ndice en el primer paso, el nmero de parmetros que necesitan ser estimados crece linealmente con el nmero de cuerpos de los documentos, que puede
conducir a graves problemas de ajuste. Segundo desde que los vectores Zk son
estimados por los documentos con el conjunto de datos no pueden volver a ser
aplicados para documentos nuevos.
2.4.6.
38
idea. Expresar esta idea en el modelo LDA, sirve para crear un documento sin
un cuerpo, lo que se podria determinar cmo una distribucin de temas. Para
cada palabra del documento que se est generando, se escoge un tema de una
distribucin de Dirichlet de temas. A partir de ese tema, se coge una palabra
elegida al azar basada en otra distribucin de probabilidad condicionada en ese
tema. Esto se repite hasta que el documento se ha generado.
La idea bsica que est detrs del modelo de un cuerpo con una distribucin Dirchilet sobre temas es que los documentos tienen varios temas y estos
se superpondrn. Por ejemplo, dentro de un cuerpo de documentos sobre la
Universidad de Princeton, habr ponencias individuales que forman parte del
Departamento de Ciencias de la Computacin. Es probable que haya algunas
palabras que se utilizan con ms frecuencia cuando se habla del Departamento
de Ciencias de la Computacin que de otros departamentos en el campus, tales
como: computadoras, algoritmos, grficos, datos, modelado, y redes. Otros departamentos, como Sociologa pueden tener temas donde encontremos algunas
palabras tales como: gnero, raza, edad, economa y redes. El modelo LDA ve
esto como un todo y elige los temas a partir de all. Si los documentos se compararon de forma individual, podra ser el caso de que ciertos temas no fueron
recogidos, y slo cuando todo el cuerpo es visto se empiezan a notar ciertos tpicos. En este ejemplo, palabras como redes pueden aparecer varias veces en los
documentos relativos a cualquier departamento. Esencialmente, LDA crea un
modelo ms realista del cuerpo, y por lo tanto, de los documentos individuales.
Las palabras que aparecen con menos frecuencia en los documentos nicos, pero
son comunes en muchos documentos diferentes probablemente es indicativo de
que existe un tema comn entre los documentos. Cuando se genera un resumen,
la capacidad de recoger los matices de los tpicos del documento permiten que
la informacin ms relevante sea incluida con menos posibilidades de repeticin
y dar as un mejor resumen.
La clave en LDA es que las palabras siguen una hiptesis de bolsa de palabras o, ms bien que el orden no importa, que el uso de una palabra es ser
parte de un tema y que comunica la misma informacin sin importar dnde se
encuentra en el documento. Esta hiptesis dice que Juan contrat a Pedro es lo
mismo que Pedro contrat a Juan. En ambos casos, el conjunto de palabras es la
misma junto con la frecuencia de cada palabra. Este supuesto es necesario para
que las probabilidades sean intercambiables y que permitan una mayor aplicacin de mtodos matemticos. A pesar de que de vez en cuando trata frases
semnticamente diferentes como la misma cosa, funciona bien en un documento
general.
La idea bsica del modelo LDA es que los documentos en el cuerpo se representan como una mezcla al azar sobre los temas latentes y cada tema se
39
caracteriza por una distribucin de las palabras en los documentos. A continuacin se pueden observar las notaciones empleadas y el procedimiento generador
del modelo LDA en el algoritmo 2.1.
M : nmero de documentos.
K: nmero de temas.
V : el tamao del vocabulario.
, : parmetros de la distribucin de Dirichlet.
m : el tema asignado al documento m.
= m , m = 1, . . . , M : las estimaciones del corpus del tema, una matriz
M K.
k : la distribucin de palabras del tema K.
= k, k = 1, . . . , K:: las asignaciones de la palabra de los temas, una
matriz K V .
Dir y P oiss son funciones de distribucin Dirichlet y Poisson respectivamente.
El modelo generativo puede ser expresado de la siguiente manera:
Escoger una distribucin de la mezcla () de Pk con una probabilidad de
Pk ().
40
Figura 2.4.2: Representacin grfica del modelo LDA. Las cajas son "placas" que
representan rplicas. La placa exterior representa documentos, mientras que la
placa interior representa la eleccin repetida de temas y palabras dentro de un
documento.
Para cada palabra.
Eligir un tema z con una probabilidad (z).
Elegir una palabra Wi del tema z con una probabilidad Tz (Wi ).
La probabilidad de observar una secuencia de palabras, w = w1 , w2 , . . . , wn , en
este modelo es:
PLDA (w) =
(Y
n X
k
Pk
)
(z) Tz (w1 ) Pk () d
i=1z=1
donde
Pk () =
k
X
z=1
!
z
k
1
Y
(z) z
(z )
z=1
41
N
m
Y
Pr wm,n |zm,n Pr (zm,n |m )
n=1
Pr (m |) Pr (|)
N
m
Y
Pr wm,n |zm,n Pr (zm,n |m ) dm d
n=1
N
m
Y
Pr (dm |, )
n=1
2.4.6.1.
M
X
log Pr (dm |, )
m=1
42
maximizan la probabilidad total del corpus con respecto a los parmetros del
modelo de y . El algoritmo variacional EM se describe brevemente como
sigue:
1. Paso E: Para cada documento, encontrar los valores de los parmetros de
optimizacin variacional m y m.
2. Paso M: Maximizar la banda baja del resultado de la probabilidad con
respecto a los parmetros del modelo y . Esto corresponde a la bsqueda de la estimacin de mxima verosimilitud con la posterior aproximada
que se calcula en el paso E.
3. El paso E y el paso M se ejecutan iterativamente hasta alcanzar un valor
de mxima verosimilitud. Mientras tanto, los parmetros de estimacin
calculada pueden utilizarse para inferir la distribucin del tpico de un
nuevo documento mediante la realizacin de la inferencia variacional.
2.4.7.
43
2.5.
44
2.6.
Trabajos relacionados
2.6.1.
LSI fue aplicada por primera vez para la localizacin de tareas por (Marcus et al., 2004), quien desarrollo una tcnica para tomar una consulta de un
45
46
En (Revelle & Poshyvanyk, 2009) usaron LSI, junto con el anlisis esttico
y dinmico, para abordar la tarea de localizacin de caractersticas. Lo autores
combinaron las diferentes tcnicas pero de otro modo. Por ejemplo, para la similitud de textos fue usada para atravesar grficos de dependencia de programas
estticos, y anlisis dinmico para remover mtodos que no fueron ejecutados
en el escenario. Lo autores encontraron que ninguna tcnica supero a todas las
dems en todos los casos de estudio. Mientras que en (Revelle et al., 2010) realizaron una fusin entre LSI, anlisis dinmico y algoritmos de minera de paginas
web (por ejemplo, HITS y PageRank) para abordar la localizacin de caractersticas. Los autores encontraron que la combinacin de estas tres tcnicas supera
a cada una de ellas individualmente.
2.6.1.2.
En (Linstead et al., 2007b) hizo el primer uso de LDA para localizar conceptos en el cdigo fuente en la forma de tpicos. Su tcnica puede ser aplicada
a sistemas individualmente o grandes colecciones de sistemas para extraer los
conceptos que se encuentran dentro de los identificadores y comentarios en el
cdigo fuente. Los autores demostraron cmo agrupar documentos de cdigo
fuente en grupos basados basados en la comparacin de los tpicos.
En (Linstead et al., 2007a) aplicaron una variante de LDA, la variante
Author-Topic (Rosen-Zvi et al., 2004), al cdigo fuente para extraer relaciones
entre los desarrolladores (autores) y los tpicos del cdigo fuente. La tcnica
permite la sumarizacin automtica de de quien trabajo en que, y los autores proveyeron pequeos argumentos cualitativos como la efectividad en sus
tcnicas.
En (Maskeri et al., 2008) aplicaron LDA al cdigo fuente para extraer los
conceptos del negocio embebidos en comentarios y los nombres de los identificadores.Los autores aplicaron un sistema de ponderacin para cada palabra clave
en el sistema, basndose en donde la palabra clave fue encontrada (por ejemplo,
nombre de la clase, parmetros, mtodos). Los autores encontraron que su tcnica basada en LDA permite extraer satisfactoriamente los tpicos del negocio,
tpicos implementados, y tpicos transversales desde el cdigo fuente.
En (Baldi et al., 2008) propusieron una teora en donde una preocupacin de
software es equivalente a los tpicos latentes encontrados mediante modelos de
tpicos estadsticos. Adems, ellos propusieron que estos aspectos son tpicos
latentes que tienen un alto valor en su mtrica de scattering. Los autores aplicaron su tcnica a un gran conjuntos de sistemas Open Source para identificar
un conjunto de tpicos globales, as como realizar un anlisis ms detallado es
algunos sistemas en especial. Los autores encontraron que los tpicos latentes
47
con alto valor en la mtrica scattering son precisamente los que se clasifican
generalmente como aspectos en la comunidad de AOP.
En (Savage et al., 2010) introdujeron una herramienta de visualizacin, llamada TopicXP, la cual soporta la exploracin interactiva para observar los tpicos localizados en el cdigo fuente.
2.6.2.
Una pregunta que a menudo se hace en el desarrollo es: Que documento (cdigo fuente) implementa el requerimiento X. La recuperacin de la trazabilidad
tiene como objetivo de descubrir vnculos entres pares de artefactos de software
como documentos de cdigo fuente y los documento de los requerimientos. Esto
permite a los stakeholders trazar los requerimientos a su implementacin, por
ejemplo para asegurarse chequear si un requerimiento fue implementado correctamente o no. La recuperacin de la trazabilidad entre un par de documentos de
cdigo fuente es tambin importante para los desarrolladores que desean saber
que otros documentos de cdigo fuente estn relacionados con el documento
en el que ellos se encuentran trabajando. La localizacin de bugs es un caso
especial de la recuperacin de la trazabilidad en el cual se buscan vnculos de
trazabilidad entre los reportes de bugs y cdigo fuente.
2.6.2.1.
En (Marcus & Maletic, 2003) fue la primera vez que se us LSI para la recuperacin de la trazabilidad de vnculos entre cdigo fuente y documentacin
(por ejemplo, los documentos de los requerimientos). Lo autores aplicaron LSI
a los identificadores y comentarios en el cdigo fuente y los documentos, luego
calcularon los valores de similitud entre cada par de documentos. Entonces, un
usuario podra especificar una medida de similitud para determinar los vnculos
actuales. Lo autores compararon su trabajo con la tcnica de recuperacin basada en VSM y se encontraron con que la performance fue al menos tan buena
como VSM en todos los casos de estudio.
En (De Lucia et al., 2004) integraron una herramienta, basada en LSI, en un
artefacto de software de un sistema de administracin llamado ADAMS. Los autores presentaron varios casos de estudio usando su tcnica basada en LSI para
recuperar los vnculos entre el cdigo fuente, casos de test y los documentos de
los requerimientos. En subsecuentes trabajos (De Lucia et al., 2006) propusieron
una tcnica para recuperacin de la trazabilidad de vnculos. En esta tcnica, un
usuario de forma semi-automtica interacta con el sistema para buscar un medida de similitud ptima entre documentos (por ejemplo, una medida apropiada
48
49
con la documentacin, una gua para realizar una fcil y entendible exploracin
de los documentos del sistema.
En (Antoniol et al., 2008) introdujeron una herramienta llamada Reuse or
Rewrite (ReORe) para ayudar a los stakeholders decidir si ellos deberan actualizar cdigo existente (por ejemplo, la introduccin de funcionalidades nuevas)
o reescribir completamente desde el inicio. ReORe logra esto por el uso de la
combinacin del anlisis esttico (LSI), manual y dinmico para crear los vnculos de trazabilidad entre los requerimientos y el cdigo fuente. Los stakeholders
pueden entonces revisar los vnculos de trazabilidad recuperados para decidir
que tan bien el sistema implementa los requerimientos.
(McMillan et al., 2009) usa dos tipos de informacin, una textual (va LSI) y
una estructural (via Evolving Interoperation Graphs) para recuperar la trazabilidad de vnculos entre el cdigo fuente y los documentos de los requerimientos.
Los autores realizaron un caso de estudio sobre un pequeo pero bien entendido sistema llamado CoffeeMaker. Los autores demostraron que la combinacin
de informacin textual y estructural mejora modestamente los resultados de la
trazabilidad en la mayora de los casos.
2.6.2.2.
Comparacin de estudios
50
de bugs, incluyendo VSM, LSI y LDA as como varias combinaciones. Los autores realizaron un caso de estudio con un conjunto de datos pequeo, llamado
iBUGS (Dallmeier & Zimmermann, 2007), y concluyeron que los modelos de IR
ms simples a menudo superan a los modelos ms sofisticados.
En (Capobianco et al., 2009) compararon la habilidad de cuatro tcnicas
(VSM, LSI, Jenson-Shannon, y B-Spline) para recuperar la trazabilidad de
vnculos entre el cdigo fuente, casos de prueba, y diagramas UML. Los autores
encontraron que B-Spline mejora a VSM y LSI y es comparable con respecto al
mtodo Jenson-Shannon.
En (Oliveto et al., 2010) compararon la efectividad de cuatro tcnicas (JensonShannon, VSM, LSI, y LDA) de IR para la recuperacin de la trazabilidad. Los
autores mostraron que LDA provee una dimensionalidad nica comparada con
respecto a las otras cuatro tcnicas.
En (Asuncion et al., 2010) introdujeron una herramienta llamada TRASE
que usa LDA para prospectivamente, a diferencia de forma retrospectiva, recuperar enlaces de trazabilidad entre los diversos artefactos en los repositorios
de software. Esto significa que los desarrolladores pueden crear y mantener los
vnculos de trazabilidad como ellos los hicieron en el sistema. Tambin mostraron que LDA supera a LSI en trminos de precisin y exhaustividad.
2.6.3.
51
En (Linstead & Baldi, 2009) aplicaron LDA a reportes de bugs del sistema
GNOME con el objetivo de medir la coherencia del reporte de bugs, por ejemplo
cuan fcil es de leer y cuan focalizado es el reporte. Esta mtrica de coherencia
es definida como la mezcla de tpicos de LDA, por ejemplo, cuantos tpicos son
encontrados en el reporte (menor cantidad es mejor).
En (Liu et al., 2009) aplicaron LDA a mtodos de cdigo fuente con el fin de
calcular una novedosa clase de mtrica de cohesin llamada Maximum Weighted
Entropy (MWE). MWE es calculada basndose en la ocupacin y peso de un
52
tpico en un mtodo de una clase. Los autores demostraron que esta mtrica
captura la novedosa variacin en los modelos para predecir fallas de software.
En (Gethers & Poshyvanyk, 2010) introdujeron una nueva mtrica, llamada
Relational Topicbased Coupling (RTC), basado en un variante de LDA llamada
Relational Topic Models (RTM). RTM extiende LDA modelando vnculos explcitos entre los cuerpos de los documentos. RTC usa estos vnculos para definir
el acople entre el cuerpo de dos documentos. Los autores demostraron que la
mtrica propuesta proporciona valor porque es estadsticamente diferente de las
mtricas existentes.
2.6.4.
En (Andrzejewski et al., 2007) realizaron una depuracin estadstica usando Delta LDA, una variante de LDA. La depuracin estadstica es una tarea
para identificar una pieza problemtica de cdigo, obteniendo un registro de la
ejecucin de ese cdigo. Delta LDA es capaz de modelar dos tipos de tpicos:
tpicos de uso y tpicos de bugs. Los tpicos de bugs son aquellos que solo se
encuentran en los registros de ejecuciones fallidas. Por lo tanto lo autores fueron
capaces de identificar piezas de cdigo que probablemente posean bugs.
En (Jagadeesh Chandra Bose & Suresh, 2008) usaron LSI como una herramienta para el anlisis de la causa raz (RCA), por ejemplo, para identificar la
causa raz de la falla de un software. Los autores construyeron y ejecutaron un
conjunto de escenarios para probar la ejecucin de varios mtodos del sistema
en varias secuencias. Luego, los autores usaron LSI para construir una matriz
(method-to-test co-occurrence) que clasifica test de prueba que ejecutan funcionalidades similares, ayudando a caracterizar las diferentes manifestaciones de
una falla.
En (Zawawy et al., 2010) presentaron un framework para reducir el tamao
y complejidad de los registros de ejecucin de modo que el trabajo manual
realizado por un analista es reducido durante RCA. La reduccin es acompaada
por lderes de LSI para detectar falsos positivos y mayor recuperacin durante
el proceso de filtrado.
2.6.5.
53
2.6.6.
Agrupamiento de documentos
54
LSI para la clasificacin de documentos. Los autores afirmaron como el agrupamiento puede mejorar la comprensin durante el mantenimiento y las fases
evolutivas del ciclo desarrollo de software. Los autores encontraron que LSI produce agrupamientos tiles, desde que LSI est automatizado, puede aportar un
valor significativo para los desarrolladores.
En un esfuerzo similar (Kuhn et al., 2005, 2007) introdujeron una herramienta llamada HAPAX para el agrupamiento de documentos de cdigo fuente.
Los autores extendieron este trabajo por (Maletic & Marcus, 2001) agregando la
visualizacin de los agrupamientos resultantes y proveyendo cada agrupamiento
con un nombre basado en todas las palabras en la clase, no justamente el nombre
de las clases.
En (Lin et al., 2006) introdujeron una herramienta llamada Prophecy que
permite a los desarrolladores buscar grupos de la API de Java relacionados con
la funcionalidades. Los autores aplicaron LSI a los documentos de Javadocs de
la API de Java para buscar similitudes en sus funcionalidades. Un desarrollador
puede entonces buscar en el ndice resultante de LSI para obtener un conjunto
de clases relacionadas.
En (Kuhn et al., 2008, 2010) crearon un mapa de dos dimensiones de un
sistema de software, donde las posiciones de las entidades y distancias entre
ellas estn basadas en sus vocabularios. LSI es usado para reducir las dimensiones de la matriz Documentos-Trminos por lo que los documentos pueden
estar estrechamente alineados en el mapa. Esta cartografa puede ayudar a los
desarrolladores a entender la disposicin y las relaciones del cdigo fuente.
2.6.7.
En (Kawaguchi et al., 2006) presentaron una herramienta llamada MUDABlue para organizar automticamente gran cantidad de colecciones de sistemas
de software open-source (por ejemplo, SourceForge y Google Code) en grupos
relaciones, llamados categoras. MUDABlue aplica LSI para identificar nombre
encontrados en cada sistema de software. Lo autores demostraron que MUDABlue puede lograr en recuperacin y precisin una puntuacin por encima de
80, comparado con la creacin manual de las etiquetas de un sistema.
En (Tian et al., 2009) desarrollaron LACT, una tcnica para categorizar
sistemas basados en los tpicos subyacentes del mismo. Este trabajo tiene una
naturaleza similar a (Kawaguchi et al., 2006), excepto que en este el trabajo
emplea LDA en lugar de LSI. Los autores compararon su tcnica contra MUDABLue y concluyeron que las tcnicas son comparables en su eficacia.
En (Linstead et al., 2009, 2008b) introdujeron y usaron un crawler para
repositorios llamado Sourcerer para analizar un gran conjunto de datos de varios
55
2.6.8.
Otras tareas
En (Marcus & Maletic, 2001) fueron los primeros en detectar clones de alto
nivel (Bellon et al., 2007; Rahman et al., 2012; Roy et al., 2009) de mtodos de
cdigo fuente por la similitud semntica entre pares de mtodos. Los autores
usaron LSI para agrupar mtodos relacionados en el concepto de espacio (por
ejemplo, un espacio K-dimensional de un documento, basado en la pertenencia
a los tpicos), y un conjunto de agrupamientos representan clones. A pesar
de los bajos niveles de precisin, los autores argumentaron que esta tcnica
es econmica y por lo tanto se puede utilizar en conjuncin con tcnicas de
deteccin de clones ya existentes para mejorar los resultados generales.
En (Grant & Cordy, 2009) usaron ICA para detectar mtodos clones. Los
autores argumentaron que desde que ICA puede identificar muchas seales distintas que LSI, entonces el concepto de espacio usado para analizar la similitud
de dos mtodos ser mucho ms efectivo. Los autores mejoraron un pequeo
caso de estudio sobre un paquete del kernel de Linux, pero no compararon sus
resultados contra LSI.
En (Ahsan et al., 2009) tuvieron el objetivo de crear un sistema de desambiguacin de bugs, que determina que desarrolladores deberan seguir un reporte
de bugs. Los autores extrajeron el texto del contenido desde ttulos y resmenes
de los reportes de bugs de un sistema y aplicaron LSI para obtener la matriz
Trmino-Documentos ms reducida. Luego varios clasificadores vinculan cada
reporte de bug con un desarrollador, entrenado con reportes de bugs previos
56
2.7.
Conclusiones
57
Captulo 3
Metodologa y mtricas
3.1.
Introduccin
58
3.2.
59
Conjuntos de datos
3.2.1.
Etiqueta
Contenido
Identificador del
bug en el reporte
Ttulo del reporte
del bug
BugId
Title
Status
Valores
1-18162
Texto
New, Assigned, Fixed,
Duplicate, Sapm, Invalid,
Wont fix, Closed, Verified
Type
Desarrolador que
creo el bug
Tipo de bug
Priority
Component
Subproyecto/mdulo
donde se encontr
el bug
Text
ClosedOn
Fecha en que se
cerr el bug
Owner
Starts
ReportedBy
OpenedDate
Description
Comment
Author
When
What
Cuantas personas
tomaron el bug
Usuario que
report el bug
Fecha en que se
report el bug
Descripcin del
bug por el usuario
que lo report
Detalle de
Usuario que
coment en el
reporte del bug
Fecha del
comentario
realizado
Descripcin del
comentario vertido
Correo electrnico
Defect, Enhancement
Critical, High, Medium,
Low
Entero >= 0
Correo electrnico
mm-dd-aaaa
Texto
cada comentario
Correo electrnico
mm-dd-aaaa
Texto
60
61
Figura 3.2.1: Distribucin de los componentes de los bugs. Grfico generado por
la aplicacin.
Cantidad de
contribuciones
1
2-10
11-50
51-100
101-200
201-500
501-1000
1001 o mas
Cantidad de usuarios
Bugs
Comentarios
reportados en reportes
de bugs
8803
34514
2710
12378
133
545
8
32
0
14
1
7
0
5
0
5
3.3.
Para transformar los 20169 bugs en documentos, para luego usarlos como
entrada para un modelo tpico, se cre un parser para transformar las etiquetas de los mismos (cuadro 3.1) en objetos Java empleando una API llamada
Simple API for XML (ms conocida como SAX). Originalmente es una API
nicamente para el lenguaje de programacin Java que despus se convirti en
62
la API estndar de facto para usar XML en JAVA. Existen versiones de SAX
no slo para JAVA, sino tambin para otros lenguajes de programacin (como
Python). SAX es una API basada en eventos (inicio y fin de elementos) reportando directamente a la aplicacin a travs de llamadas de retorno (callbacks),
y no construye un rbol como es el caso del Modelo de Objetos del Documento
(DOM) del W3C.
SAX es un API de secuencia de procesamiento de XML que permite procesar
un documento XML sin almacenar mucho ms que el contexto del nodo actual
que se est procesando en memoria. Permite procesar archivos XML de gran
tamao sin que sea necesario ocupar un espacio en memoria demasiado grande.
SAX define una interfaz manejada por eventos y mtodos para analizar XML.
A medida que el analizador lee el documento XML y encuentra los componentes
del documento (BugId, Title, Status, etc.) va detectando errores e invocando a
las funciones que se han asociado.
3.4.
Para cada entrada en el reporte de bugs se extrajo el campo Title y Description del bug para formar el contenido de un documento. Adicionalmente, el
contenido de cada comentario (campo What) fue tratado como un documento
individual. Cada uno de estos documentos se le asigno como fecha de creacin el
campo OpenedDate, en el caso de los bugs, y el campo When en el caso de los comentarios. Es decir que se crea un documento por cada bug y un documento por
cada comentario (3.1). Se omitieron aquellos casos en donde el campo este vaco.
Este proceso de generacin de documentos tuvo como resultado la creacin de
un total de 76479 documentos, en donde se incluyen los bugs y comentarios.
Se obtubo como resultado la creacin de documentos, con su respectivas
fechas, acerca de los problemas o defectos en el proyecto de open source Android.
Para porder analizar la evolucin de los tpicos se deben definir las versiones.
63
3.5.
Extraccin de tpicos
Una vez creados los documentos y las versiones se defini el modelo LDA
empleado. La versin del modelo de tpcicos LDA que se aplic es la versin
Gibbs 4 . Esta versin esta basada en el optimizador L-BFGS (Liu & Nocedal,
1989) y basada en el entrenador de muestreo de LDA del juego de herramienta
de MALLET version 2.0.65 McCallum (2002).
3.5.1.
64
Parmetro
Descripcin
Nmero de
documentos en el
cuerpo
Nmero de
palabras en el
vocabulario
Nmero total de
palabras en el
cuerpo
Promedio del
tamao de los
documentos en
cantidad de
palabras
(L = N/D)
Nmero de tpicos
IT ER
Nmero de
iteraciones del
algoritmo de
meustreo Gibbs
Arreglo
Descripcin
wid (N )
Id de la palabra
did (N )
id del documento
z (N )
Cwt (W, T )
Ctd (T, D)
Cuenta el tpico t en un
documento d
Ct (T )
65
66
X
P (w|d) =
P (w|t) P (t|d)
(3.5.1)
t=1
n
Cwt
+
n
Ctd
+
n
Ct + W
(3.5.2)
67
T iempo O ( IT ER N T )
(3.5.3)
Espacio O ( 3 N + (D + W ) T )
(3.5.4)
(3.5.5)
68
3.5.2.
Desglose de trminos
69
Las denomindas stop words son palabras que estn constituidas por conectores, algunos verbos muy utilizados, preposiciones, etc. Esta supresin en los documentos disminuye ampliamente la performance del algoritmo, asi como tambin la cantidad de trminos que esta analiza. Adems hay que destacar que
estos trminos son comunes en todos los documentos y no aportan informacin
relevante sobre el tema tratado en los mismos.
3.5.2.5.
Stemming es un mtodo para reducir una palabra a su raz, Tambin denominado stem por su siglas en ingls. Hay algunos algoritmos de Stemming que
ayudan en sistemas de recuperacin de la informacin. Stemming aumenta el
recall que es una medida sobre el nmero de documentos que se pueden encontrar en una consulta. Aqu se empleo el algoritmo de Porter (Porter, 1980). Este
permite extraer los sufijos y prefijos comunes de palabras literalmente diferentes
pero con una raz comn que pueden ser consideradas como un slo trmino. Al
realizar una bsqueda, utilizando el ndice el usuario puede perderse porque las
palabras estn escritas de otra forma en el documento. Para eso puedo guiarse
por los trminos extraidos del algoritmo para realizar las bsquedas.
Al aplicar stemming, se asegura que la forma de las palabras no penalize
la frecuencia de estas. Cuando se aplica el algoritmo de Porter (Porter, 1980),
el documento, se divide en tokens, luego se itera por esos tokens aplicando
el algoritmo de Porter a cada uno de ellos. Existe una condicin dentro del
algoritmo que si el token no es una palabra, esto es, si el token contiene un
nmero o algn smbolo adems de letras de a-z, se supone que no es una
palabra y no se analiza. Este algoritmo es implementado para ser utilizado con
la gramtica inglesa dada la naturaleza del conjunto de datos.
3.5.3.
70
et al., 2008a; Thomas et al., 2010). Es decir que se aplic colectivamente a todos
los cuerpos de los documetnos de todas las versiones al mismo tiempo. De esta
manera el tiempo de clculo para este trabajo disminuye drsticamente dado
que si se hubiese aplicado el modelo Link, adems del proceso del modelo Gibbs
para la extraccin de los tpicos, se le debe adicionar el proceso unir o vincular
los tpicos a travs de las versiones de acuerdo a alguna medida de similitud.
Como se puede observar en el cuadro 3.5 se extrejeron unos 100 tpicos en
total. Los tpicos denotados con color rojo (un total de 58 tpicos) son aquellos
que tienen una varianza estadstica significativa superior a un 40 %.
Cuadro 3.5: Tpicos extrados con sus cinco trminos mas influyentes ordenados
descendientemente por sus respectivas probabilidades.
Luego de una observacin cuidadosa de los tpicos podemos concluir en primer medida que la agrupacin de trminos que realizo el algoritmo es consistente. Se observa que tenemos en principio unos 100 tpicos que denotan reportes
de fallas bastante puntules en su mayoria. Por ejemplo el tpico Z6 , presenta
fallas relacionadas con la soncronizacin de los correos de gmail. Otro tpico
que denota problemas es Z11 , en donde seala fallas con el dispositivo de manos
libres con coneccin bluetooth.
Otro punto importante a tener en cuenta a la hora de analizar los tpicos es
que muchos de ellos representan temas mas generales que otros. Por ejemplo el
tpico Z1 , se compone de palabras como diseo, implementacin, estandar, etc.
por lo que son trminos muy genricos.
71
3.6.
(3.6.1)
i=1
72
(3.6.2)
i=1
S (Zk , Vj ) =
|Vj |
X
dij [k] log dij [k]
(3.6.3)
i=1
3.7.
(3.6.4)
73
74
(a) Assignment.
(b) Weight.
(c) Scattering.
(d) Focus.
75
76
(a) Assignment.
(b) Weight.
(c) Scattering.
(d) Focus.
77
78
79
80
3.8.
Conclusin
En este captulo se han presentado las etapas del tratamiento del reporte de
bugs. Se describi con detalle el conjunto de datos empleado en la aplicacin.
Tambin el tipo de analizador empleado para la extraccin de los bugs desde el
archivo XML. Luego se present el proceso para la generacin de los documentos
y el proceso para la generacin de las versiones. Los pre-procesos aplicados sobre
los documentos antes de la extraccin de los tpicos. Luego se explic el modelo
de tpicos LDA, variante Gibbs, empleado para la extraccin de los tpicos. Se
extrajeron un total de 100 tpicos a partir de un total de 76479 documentos.
Algunos de los tpicos resultaron con trminos bastantes genricos (por ejemplo
Z1 ) con respecto a otros que son mas especficos (por ejemplo Z98 ).
Finalmente, se expusieron las frmulas y definicin de cada una de las mtricas empleadas para la analizar la evolucin de los tpicos. A modo de ejemplo
se aplicaron estas mtricas sobre seis tpicos para entender como varan en el
transcurso de las versiones y como stas se conciden con los eventos que fueron
sucediendo en la vida del SO Android.
Captulo 4
Indexacin y bsqueda
mediante Lucene
4.1.
Para cada uno de los documentos se indexan mediante Lucene. Dicha librera
provee una manera eficaz para recuperar los datos de dichos ndices y luego
proveer los resultados de las bsquedas.
4.1.1.
Indizacin
81
Analizador
WhitespaceAnalyser
SimpleAnalyzer
StopAnalyzer
StandardAnalyzer
82
Descripcin
Como su nombre indica,
se divide el texto en
tokens usando el espacio
entre palabras para
dividir los mismos. No
hace ningn otro esfuerzo
para normalizar los
tokens. Tampoco
convierte los tokens a
minsculas.
Primero divide los
caracteres que no poseen
letras, luego convierte a
minsculas cada token.
Trabaja igual que el
SimpleAnalyzer excepto
que remueve las palabras
comunes. Por defecto
remueve palabras como
artculos. Se puede
emplear un archivo con la
lista de palabras a
eliminar.
Es uno de los analizadores
mas sofisticados que
posee Lucene. Posee una
pequea lgica para
reconocer ciertos tipos de
tokens, como por ejemplo,
nombre de companias,
direcciones de correo
electrnico, etc. Tambin
convierte a minscula los
tokens, remueve stop
words y puntuacin.
83
Keyword: Se alamacena y se indiza tal cual se introduce, no se analiza, se utiliza para los campos que se deben guardar tal cual y no pueden modificarse,
como por ejemplo una URL.
UnIndexed: Se almacena pero nunca se utiliza en las bsquedas, como por
ejemplo una clave primaria de una base de datos.
Text: El valor se analiza e indiza, el valor original tambin se almacena.
UnStored: Es la opuesta a UnIndexed. Se analiza e indiza, se utiliza para todos
los documentos de texto.
4.1.2.
84
4.1.3.
En los ltimos aos el reconocimiento de patrones ha adquirido cierta popularidad gracias a la automatizacin de las soluciones a muchos problemas de
la vida real y en particular, los mtodos de agrupamiento (clustering), debido a
que cada vez es ms necesario tratar grandes volmenes de datos que requieren
herramientas nuevas para descubrir informacin relevante y relacin entre los
datos.
Para la clasificacin de los documentos recuperados por medio de Lucene
luego se emple la librera Carrot2 para clasificarlos. En la interfaz de la aplicacin se permite elegir entre un conjunto de diferentes algoritmos de clustering
85
para poder ver los distintos resultados. Cuando se realiza una bsqueda se obtiene como salida los diferentes clusters que cre el algoritmo con sus palabras
claves. Los algoritmos que se pueden seleccionar son:
K-Means: Busca formar K clusters, formados por documentos. Cada uno de
estos K clusters se representan por el valor medio de los documentos que
pertenecen a dicho cluster. Los documentos se asignan al cluster cuya
distancia del mismo con el centroide es mnima. Se itera hasta lograr un
criterio de convergencia.
Suffix Tree Clustering (STC): Identifica frases comunes de los documentos.
Utiliza un rbol de sufijos como estructura de datos. A diferencia de los
otros es incremental y trata a los documentos como una secuencia ordenada de palabras no como un conjunto de palabras.
Lingo: Construye etiquetas para los clusters basado en la reduccin de plazo
de documentos de la matriz y lo asigna a los documentos de las etiquetas.
4.1.3.1.
Probabilidad
0, 43212
0, 09249
0, 04765
0, 04218
0, 034477
Cuadro 4.2: Los diez trminos mas relevantes del tpico Z27 . Ordenados en
forma decreciente.
El tipo de consulta empleada es la llamada Con algunas palabras 4.1.2 dado
que algunos trminos pueden no estar en el algunos documentos. El algoritmo
empleado es K-Means con un lmite de cantidad de 10 documentos. Lo resultados
obtenidos de los clusters se observan en el cuadro 4.3.
Trminos
3
4
browser, media,
mine, product, type
keyboard, soft,
input
Documento Id
21166
74019
1778
21964
57160
36942
29401
837
47552
72834
Puntaje
1, 336
1, 214
1, 11
1, 632
1, 233
1, 143
1, 284
1, 143
1, 334
1, 213
86
(Z27 , d)
0
0
0, 00535
0, 9974
0
0, 99386
0, 000012
0, 000245
0, 000395
0, 000015
Cuadro 4.3: Resultados obtenidos de la consulta para los trminos del cuadro
4.2.
Como se puede observar el cluster nmero 2 es el que posee los documentos mas relacionados con el tpico. Los trminos arrojados por el algoritmo de
clustering son los mas relacionados con los documentos que presentan menos
probabilidad para la funcin y con otros trminos incluidos tambin en el tpico como build, international, italiano entre otros. Luego de experimentar con
varios casos se puede concluir que es necesario ajustar los parmetros de la busqueda y aumentar la cantidad de documentos del resultado considerablemente
para obtener un cluster en donde los trminos de alguno de ellos coincidan en
gran medida con los trminos del tpico. Es decir que cuando menos restrictiva
es la bsqueda mejor son los resultados.
4.2.
Conclusin
Se ha utilizado indexacin para la posterior consulta de los trminos o palabras del conjunto extrado por el modelo de tpicos. Luego se pueden realizar
consultas sobre este ndice y analizar la relacin de los documentos recuperados de acuerdo al algoritmo de agrupamiento seleccionado con respecto a los
documentos en que influye cada uno de los tpicos.
Un ejemplo prctico es buscar los trminos de un tpico para obtener los
documentos relacionados con este. Los documentos recuperados no simpre coinciden en un 100 % con los documentos en los cuales el tpico forma parte de
su contenido como se mostr en el ejemplo 4.1.3.1. Sin embargo ajustando los
parmetros de la bsqueda se puede obtener un resultado considerablemente
exacto.
Captulo 5
Aplicacin para la
extraccin y anlisis de
tpicos
En este captulo se presenta la aplicacin implementada para la extraccin
de tpicos, el clculo de mtricas, creacin y bsqueda en el ndice.
5.1.
Descripcin de la aplicacin
(a) Ejemplo de la mtrica weight para el tpico Z27 y Z29 exhibiendo las etiquetas.
(b) Ejemplo de la mtrica weight para el tpico Z27 y Z29 ocultando las etiquetas.
5.2.
Arquitectura
5.3.
Conclusin
Captulo 6
Conclusin
En el campo de la minera de repositorios de software se utilizan datos fcilmente accesibles para aumentar la productividad de los desarrolladores y reducir
los costos de los proyectos. Usando todas las fuentes de datos disponibles, tanto la fuentes estructuradas como las no estructuradas, permiten mximizar los
beneficios.
En este trabajo se ha mostrado como se puede realizar un anlisis de alto
nivel de un repositorio de software con datos no estructurados. Con el fin extraer informacin de alto nivel (tpicos) y analizar su evolucin a travs de las
versiones definidas.
La eleccin de los modelos de tpicos, como LDA o LSI y sus repectivas
variantes no ha sido fcil dado que se tuvo que optar entre complijdad temporal
o espacial sin tener un conocimiento exacto de cada una de las mismas. Aqu se
priorizo elegir la variante Gibbs para la extraccin de los tpicos dado que la
complejidad de su implementacin fue relativamente sencilla pero eficaz.
En cuanto a la eleccin del modelo de evolucin adoptado se opt por el
modelo de Hall puesto este requiere menos procesamiento como si sucede con
el modelo Link en el cual despus se deben vincular los tpicos a travs de
las versiones. Adems, en muchos trabajos se adopt el modelo de Hall puesto
que la precisin para el anlisis evolutivo de los tpicos ha presentado mejores
resultados con respecto a otros.
Dotar a los sistemas de recuperacin de la informacin constituye un importante campo de investigacin actualmente en el mbito de mercados en red
con grandes volmenes de datos, juntando profesionales de diversas reas, las
mineras de datos en las tareas de la ingeniera de software y la inteligencia
artificial.
La mayora de estos sistemas de extraccin de la informacin requieren por
parte del usuario tener una nocin del conjunto de datos para ajustar los par99
CAPTULO 6. CONCLUSIN
100
metros requeridos por parte de los modelos involucrados en el proceso. Principalmente debido a que la informacin obtenida puede variar drsticamente.
6.1.
Contribucin
6.2.
Trabajos futuros
Existen diversas lneas de trabajo en las cuales ahondar. Una de ellas sera
profundizar algunas tareas de la ingeniera de software como la prediccin de
bugs, la bsquedas de colecciones de sistemas de software y medir las tendencias
evolutivas de repositorios an no explorados.
Otra lnea de trabajo sera la bsqueda de trazabilidades, como por ejemplo
1 https://code.google.com/p/android
CAPTULO 6. CONCLUSIN
101
Bibliografa
Ahsan, Syed Nadeem, Ferzund, Javed, & Wotawa, Franz. 2009. Automatic software bug triage system (bts) based on latent semantic indexing and support
vector machine. Pages 216221 of: Software engineering advances, 2009. icsea09. fourth international conference on. IEEE. 55
Android. 2010.
2012.
Android
open
source
issue
tracker.
http://code.google.com/p/android/issues/list. 59
Andrzejewski, David, Mulhern, Anne, Liblit, Ben, & Zhu, Xiaojin. 2007. Statistical debugging using latent topic models. Pages 617 of: Machine learning:
Ecml 2007. Springer. 52
Anthes, Gary. 2010. Topic models vs. unstructured data. Communications of
the acm, 53(12), 1618. 27
Antoniol, Giuliano, Hayes, Jane Huffman, Gueheneuc, Y, & Di Penta, Massimiliano. 2008. Reuse or rewrite: Combining textual, static, and dynamic
analyses to assess the cost of keeping a system up-to-date. Pages 147156
of: Software maintenance, 2008. icsm 2008. ieee international conference on.
IEEE. 49
Asuncion, Hazeline U, Asuncion, Arthur U, & Taylor, Richard N. 2010. Software
traceability with topic modeling. Pages 95104 of: Proceedings of the 32nd
acm/ieee international conference on software engineering-volume 1. ACM.
50
Baeza-Yates, Ricardo, Ribeiro-Neto, Berthier, et al. 1999. Modern information
retrieval. Vol. 463. ACM press New York. 36
103
BIBLIOGRAFA
104
Bajracharya, Sushil, & Lopes, Cristina. 2009. Mining search topics from a code
search engine usage log. Pages 111120 of: Mining software repositories, 2009.
msr09. 6th ieee international working conference on. IEEE. 56
Bajracharya, Sushil Krishna, & Lopes, Cristina Videira. 2012. Analyzing and
mining a code search engine usage log. Empirical software engineering, 17(45), 424466. 56
Baldi, Pierre F, Lopes, Cristina V, Linstead, Erik J, & Bajracharya, Sushil K.
2008. A theory of aspects as latent topics. Pages 543562 of: Acm sigplan
notices, vol. 43. ACM. 46, 71, 72
Bavota, Gabriele, De Lucia, Andrea, Marcus, Andrian, & Oliveto, Rocco. 2010.
A two-step technique for extract class refactoring. Pages 151154 of: Proceedings of the ieee/acm international conference on automated software engineering. ACM. 51
Bellon, Stefan, Koschke, Rainer, Antoniol, Giuliano, Krinke, Jens, & Merlo,
Ettore. 2007. Comparison and evaluation of clone detection tools. Software
engineering, ieee transactions on, 33(9), 577591. 55
Bettenburg, Nicolas, Shihab, Emad, & Hassan, Ahmed E. 2009. An empirical
study on the risks of using off-the-shelf techniques for processing mailing
list data. Pages 539542 of: Software maintenance, 2009. icsm 2009. ieee
international conference on. IEEE. 29
Blei, David M, & Lafferty, John D. 2006. Dynamic topic models. Pages 113
120 of: Proceedings of the 23rd international conference on machine learning.
ACM. 43
Blei, David M, Ng, Andrew Y, & Jordan, Michael I. 2003. Latent dirichlet
allocation. the journal of machine learning research, 3, 9931022. 16, 17, 31,
37, 57
Capobianco, Giovanni, De Lucia, Andrea, Oliveto, Rocco, Panichella, Annibale, & Panichella, Sebastiano. 2009. Traceability recovery using numerical
analysis. Pages 195204 of: Reverse engineering, 2009. wcre09. 16th working
conference on. IEEE. 50
Carpineto, Claudio, & Romano, Giovanni. 2012. A survey of automatic query
expansion in information retrieval. Acm computing surveys (csur), 44(1), 1.
101
Casella, George, & George, Edward I. 1992. Explaining the gibbs sampler. The
american statistician, 46(3), 167174. 67
BIBLIOGRAFA
105
Mozilla.
2010.
http://www.bugzilla.org/. 29
The
bugzilla
guide-3.6
release.
BIBLIOGRAFA
106
Fowler, Martin. 2004. Uml distilled: a brief guide to the standard object modeling
language. Addison-Wesley Professional. 30
Gall, CS, Lukins, S, Etzkorn, L, Gholston, Sampson, Farrington, P, Utley, D,
Fortune, Julie, & Virani, Shamsnaz. 2008. Semantic software metrics computed from natural language design specifications. Software, iet, 2(1), 1726.
51
Geeknet. 2010. Sourceforge. 31
Gethers, Malcom, & Poshyvanyk, Denys. 2010. Using relational topic models
to capture coupling among classes in object-oriented software systems. Pages
110 of: Software maintenance (icsm), 2010 ieee international conference on.
IEEE. 52
Godfrey, Michael W, Hassan, Ahmed E, Herbsleb, James, Murphy, Gail C, Robillard, Martin, Devanbu, Prem, Mockus, Audris, Perry, Dewayne E, & Notkin,
David. 2009. Future of mining software archives: A roundtable. Software,
ieee, 26(1), 6770. 15, 27
Google. 2012. Google code. 31
Grant, Scott, & Cordy, James R. 2009. Vector space analysis of software clones.
Pages 233237 of: Program comprehension, 2009. icpc09. ieee 17th international conference on. IEEE. 36, 55
Grant, Scott, & Cordy, James R. 2010. Estimating the optimal number of latent
concepts in source code analysis. Pages 6574 of: Source code analysis and
manipulation (scam), 2010 10th ieee working conference on. IEEE. 56
Grant, Scott, Cordy, James R, & Skillicorn, David. 2008. Automated concept
location using independent component analysis. Pages 138142 of: Reverse
engineering, 2008. wcre08. 15th working conference on. IEEE. 45
Hall, David, Jurafsky, Daniel, & Manning, Christopher D. 2008. Studying the
history of ideas using topic models. Pages 363371 of: Proceedings of the
conference on empirical methods in natural language processing. Association
for Computational Linguistics. 43
Hall, Tracy, Beecham, Sarah, Bowes, David, Gray, David, & Counsell, Steve.
2011. A systematic review of fault prediction performance in software engineering. 14
Hassan, Ahmed E. 2006. Mining software repositories to assist developers and
support managers. Pages 339342 of: Software maintenance, 2006. icsm06.
22nd ieee international conference on. IEEE. 15, 27
BIBLIOGRAFA
107
Hassan, Ahmed E, & Holt, Richard C. 2005. The top ten list: Dynamic fault prediction. Pages 263272 of: Software maintenance, 2005. icsm05. proceedings
of the 21st ieee international conference on. IEEE. 15, 27
Hayes, Jane Huffman, Dekhtyar, Alex, & Sundaram, Senthil Karthikeyan. 2006.
Advancing candidate link generation for requirements tracing: The study of
methods. Software engineering, ieee transactions on, 32(1), 419. 48
Hindle, Abram, Godfrey, Michael W, & Holt, Richard C. 2009a. Whats hot and
whats not: Windowed developer topic analysis. Pages 339348 of: Software
maintenance, 2009. icsm 2009. ieee international conference on. IEEE. 43,
53
Hindle, Abram, Godfrey, Michael W, & Holt, Richard C. 2009b. Windowed
developer topic analysis. 16
Hindle, Abram, Godfrey, Michael W, & Holt, Richard C. 2010. Software process recovery using recovered unified process views. Pages 110 of: Software
maintenance (icsm), 2010 ieee international conference on. IEEE. 16, 53
Hofmann, Thomas. 1999a. Probabilistic latent semantic analysis. Pages 289296
of: Proceedings of the fifteenth conference on uncertainty in artificial intelligence. Morgan Kaufmann Publishers Inc. 36
Hofmann, Thomas. 1999b. Probabilistic latent semantic indexing. Pages 50
57 of: Proceedings of the 22nd annual international acm sigir conference on
research and development in information retrieval. ACM. 37
Hofmann, Thomas. 2001. Unsupervised learning by probabilistic latent semantic
analysis. Machine learning, 42(1-2), 177196. 36
Jagadeesh Chandra Bose, RP, & Suresh, U. 2008. Root cause analysis using
sequence alignment and latent semantic indexing. Pages 367376 of: Software
engineering, 2008. aswec 2008. 19th australian conference on. IEEE. 52
Jiang, Hsin-Yi, Nguyen, Tien N, Chen, Xiang, Jaygarl, Hojun, & Chang, Carl K.
2008. Incremental latent semantic indexing for automatic traceability link
evolution management. Pages 5968 of: Proceedings of the 2008 23rd ieee/acm
international conference on automated software engineering. IEEE Computer
Society. 48
Kagdi, Huzefa, Gethers, Malcom, Poshyvanyk, Denys, & Collard, Michael L.
2010. Blending conceptual and evolutionary couplings to support change
impact analysis in source code. Pages 119128 of: Reverse engineering (wcre),
2010 17th working conference on. IEEE. 51
BIBLIOGRAFA
108
BIBLIOGRAFA
109
461464 of: Proceedings of the twenty-second ieee/acm international conference on automated software engineering. ACM. 46
Linstead, Erik, Rigor, Paul, Bajracharya, Sushil, Lopes, Cristina, & Baldi, Pierre. 2007b. Mining eclipse developer contributions via author-topic models.
Pages 3030 of: Mining software repositories, 2007. icse workshops msr07.
fourth international workshop on. IEEE. 46
Linstead, Erik, Lopes, Cristina, & Baldi, Pierre. 2008a. An application of latent
dirichlet allocation to analyzing software evolution. Pages 813818 of: Machine learning and applications, 2008. icmla08. seventh international conference
on. IEEE. 15, 16, 31, 43, 53, 69
Linstead, Erik, Rigor, Paul, Bajracharya, Sushil, Lopes, Cristina, & Baldi, Pierre F. 2008b. Mining internet-scale software repositories. Pages 929936 of:
Advances in neural information processing systems. 54
Linstead, Erik, Bajracharya, Sushil, Ngo, Trung, Rigor, Paul, Lopes, Cristina,
& Baldi, Pierre. 2009. Sourcerer: mining and searching internet-scale software
repositories. Data mining and knowledge discovery, 18(2), 300336. 54
Liu, Dong C, & Nocedal, Jorge. 1989. On the limited memory bfgs method for
large scale optimization. Mathematical programming, 45(1-3), 503528. 63
Liu, Yixun, Poshyvanyk, Denys, Ferenc, Rudolf, Gyimthy, Tibor, & Chrisochoides, Nikos. 2009. Modeling class cohesion as mixtures of latent topics.
Pages 233242 of: Software maintenance, 2009. icsm 2009. ieee international
conference on. IEEE. 14, 15, 31, 51
Lormans, Marco. 2007. Monitoring requirements evolution using views. Pages
349352 of: Software maintenance and reengineering, 2007. csmr07. 11th
european conference on. IEEE. 48
Lormans, Marco, & Van Deursen, Arie. 2006. Can lsi help reconstructing requirements traceability in design and test? Pages 10pp of: Software maintenance and reengineering, 2006. csmr 2006. proceedings of the 10th european
conference on. IEEE. 48
Lormans, Marco, Gross, H-G, van Deursen, Arie, van Solingen, Rini, & Stehouwer, Andr. 2006. Monitoring requirements coverage using reconstructed
views: An industrial case study. Pages 275284 of: Reverse engineering, 2006.
wcre06. 13th working conference on. IEEE. 48
Lucia, Andrea De, Fasano, Fausto, Oliveto, Rocco, & Tortora, Genoveffa. 2007.
Recovering traceability links in software artifact management systems using
BIBLIOGRAFA
110
BIBLIOGRAFA
111
Maskeri, Girish, Sarkar, Santonu, & Heafield, Kenneth. 2008. Mining business
topics in source code using latent dirichlet allocation. Pages 113120 of:
Proceedings of the 1st india software engineering conference. ACM. 15, 31,
46
McCallum, Andrew K. 2002. {MALLET: A Machine Learning for Language
Toolkit}. 63
McMillan, Collin, Poshyvanyk, Denys, & Revelle, Meghan. 2009. Combining
textual and structural analysis of software artifacts for traceability link recovery. Pages 4148 of: Traceability in emerging forms of software engineering,
2009. tefse09. icse workshop on. IEEE. 49
Mei, Qiaozhu, & Zhai, ChengXiang. 2005. Discovering evolutionary theme patterns from text: an exploration of temporal text mining. Pages 198207 of:
Proceedings of the eleventh acm sigkdd international conference on knowledge
discovery in data mining. ACM. 43
Neuhaus, Stephan, & Zimmermann, Thomas. 2010. Security trend analysis with
cve topic models. Pages 111120 of: Software reliability engineering (issre),
2010 ieee 21st international symposium on. IEEE. 17, 29, 53
Nguyen, Anh Tuan, Nguyen, Tung Thanh, Al-Kofahi, Jafar, Nguyen, Hung Viet,
& Nguyen, Tien N. 2011a. A topic-based approach for narrowing the search
space of buggy files from a bug report. Pages 263272 of: Automated software
engineering (ase), 2011 26th ieee/acm international conference on. IEEE. 49
Nguyen, Thanh HD, Adams, Bram, & Hassan, Ahmed E. 2010. A case study
of bias in bug-fix datasets. Pages 259268 of: Wcre, vol. 10. 50
Nguyen, Tung Thanh, Nguyen, Tien N, & Phuong, Tu Minh. 2011b. Topicbased defect prediction: Nier track. Pages 932935 of: Software engineering
(icse), 2011 33rd international conference on. IEEE. 15, 31
Oliveto, Rocco, Gethers, Malcom, Poshyvanyk, Denys, & De Lucia, Andrea.
2010. On the equivalence of information retrieval methods for automated
traceability link recovery. Pages 6871 of: Program comprehension (icpc),
2010 ieee 18th international conference on. IEEE. 50
Orallo, Jos Hernndez, Quintana, Ma Jos Ramrez, & Ramrez, Csar Ferri.
2000. Extraccin automtica de conocimiento en bases de datos e ingeniera
del software. 24
Porter, Martin F. 1980. An algorithm for suffix stripping. Program, 14(3),
130137. 69
BIBLIOGRAFA
112
Poshyvanyk, Denys, & Grechanik, Mark. 2009. Creating and evolving software
by searching, selecting and synthesizing relevant source code. Pages 283286
of: Software engineering-companion volume, 2009. icse-companion 2009. 31st
international conference on. IEEE. 55
Poshyvanyk, Denys, & Marcus, Andrian. 2007. Combining formal concept analysis with information retrieval for concept location in source code. Pages 3748
of: Program comprehension, 2007. icpc07. 15th ieee international conference
on. IEEE. 45
Poshyvanyk, Denys, Gueheneuc, Y-G, Marcus, Andrian, Antoniol, Giuliano, &
Rajlich, Vclav. 2006. Combining probabilistic ranking and latent semantic
indexing for feature identification. Pages 137148 of: Program comprehension,
2006. icpc 2006. 14th ieee international conference on. IEEE. 45
Rahman, Foyzur, Bird, Christian, & Devanbu, Premkumar. 2012. Clones: What
is that smell? Empirical software engineering, 17(4-5), 503530. 55
Rajlich, Vclav, & Wilde, Norman. 2002. The role of concepts in program comprehension. Pages 271278 of: Program comprehension, 2002. proceedings.
10th international workshop on. IEEE. 44
Rao, Shivani, & Kak, Avinash. 2011. Retrieval from software libraries for bug
localization: a comparative study of generic and composite text models. Pages 4352 of: Proceedings of the 8th working conference on mining software
repositories. ACM. 49
Revelle, Meghan, & Poshyvanyk, Denys. 2009. An exploratory study on assessing
feature location techniques. Pages 218222 of: Program comprehension, 2009.
icpc09. ieee 17th international conference on. IEEE. 46
Revelle, Meghan, Dit, Bogdan, & Poshyvanyk, Denys. 2010. Using data fusion
and web mining to support feature location in software. Pages 1423 of:
Program comprehension (icpc), 2010 ieee 18th international conference on.
IEEE. 46
Robillard, Martin P, & Murphy, Gail C. 2007. Representing concerns in source
code. Acm transactions on software engineering and methodology (tosem),
16(1), 3. 14
Rosen-Zvi, Michal, Griffiths, Thomas, Steyvers, Mark, & Smyth, Padhraic. 2004.
The author-topic model for authors and documents. Pages 487494 of: Proceedings of the 20th conference on uncertainty in artificial intelligence. AUAI
Press. 46
BIBLIOGRAFA
113
Roy, Chanchal K, Cordy, James R, & Koschke, Rainer. 2009. Comparison and
evaluation of code clone detection techniques and tools: A qualitative approach. Science of computer programming, 74(7), 470495. 55
Salton, Gerard, & McGill, Michael J. 1983. Introduction to modern information
retrieval. 36
Salton, Gerard, Wong, Anita, & Yang, Chung-Shu. 1975. A vector space model
for automatic indexing. Communications of the acm, 18(11), 613620. 35
Savage, Trevor, Dit, Bogdan, Gethers, Malcom, & Poshyvanyk, Denys. 2010. Topic xp: Exploring topics in source code using latent dirichlet allocation. Pages
16 of: Software maintenance (icsm), 2010 ieee international conference on.
IEEE. 47
Serrano, Nicolas, & Ciordia, Ismael. 2005. Bugzilla, itracker, and other bug
trackers. Software, ieee, 22(2), 1113. 29
Shannon, Claude Elwood. 2001. A mathematical theory of communication. Acm
sigmobile mobile computing and communications review, 5(1), 355. 72
Shihab, Emad, Jiang, Zhen Ming, & Hassan, Ahmed E. 2009a. On the use of irc
channels by developers of the gnome gtk+ open source project. In: Proceedings
of the 6th ieee working conference on mining software repositories, vol. 12. 29
Shihab, Emad, Jiang, Zhen Ming, & Hassan, Ahmed E. 2009b. Studying the use
of developer irc meetings in open source projects. Pages 147156 of: Software
maintenance, 2009. icsm 2009. ieee international conference on. IEEE. 29
Shihab, Emad, Bettenburg, Nicolas, Adams, Bram, & Hassan, Ahmed E. 2010a.
On the central role of mailing lists in open source projects: An exploratory
study. Pages 91103 of: New frontiers in artificial intelligence. Springer. 29
Shihab, Emad, Jiang, Zhen Ming, Ibrahim, Walid M, Adams, Bram, & Hassan,
Ahmed E. 2010b. Understanding the impact of code and process metrics on
post-release defects: a case study on the eclipse project. Page 4 of: Proceedings of the 2010 acm-ieee international symposium on empirical software
engineering and measurement. ACM. 50
Shihab, Emad, Kamei, Yasutaka, & Bhattacharya, Pamela. 2012. Mining challenge 2012: The android platform. Pages 112115 of: Mining software repositories (msr), 2012 9th ieee working conference on. IEEE. 17, 59, 67
Slaughter, Sandra A, Harter, Donald E, & Krishnan, Mayuram S. 1998. Evaluating the cost of software quality. Communications of the acm, 41(8), 6773.
14
BIBLIOGRAFA
114
BIBLIOGRAFA
115
Wang, Xuerui, & McCallum, Andrew. 2006. Topics over time: a non-markov
continuous-time model of topical trends. Pages 424433 of: Proceedings of
the 12th acm sigkdd international conference on knowledge discovery and data
mining. ACM. 43
Weyuker, Elaine J. 1998. Testing component-based software: A cautionary tale.
Software, ieee, 15(5), 5459. 14
Wu, Chen, Chang, Elizabeth, & Aitken, Ashley. 2008. An empirical approach
for semantic web services discovery. Pages 412421 of: Software engineering,
2008. aswec 2008. 19th australian conference on. IEEE. 56
Xiao, Han, & Stibor, Thomas. 2010. Efficient collapsed gibbs sampling for latent
dirichlet allocation. Pages 6378 of: Acml. 101
Zawawy, Hamzeh, Kontogiannis, Kostas, & Mylopoulos, John. 2010. Log filtering and interpretation for root cause analysis. Pages 15 of: Icsm. 52
Zhai, ChengXiang. 2008. Statistical language models for information retrieval.
Synthesis lectures on human language technologies, 1(1), 1141. 27, 32
Zimmermann, Thomas, Zeller, Andreas, Weissgerber, Peter, & Diehl, Stephan.
2005. Mining version histories to guide software changes. Software engineering, ieee transactions on, 31(6), 429445. 15, 27, 28
Apndice A
Historial de versiones de
Android
Este apndice contiene las diferentes versiones de Android lanzadas con sus
respectivas caractersticas para el perodo de tiempo comtemplado en el anlisis
de este trabajo para poder cotejar los resultados obtenidos.
Versin 1.0 (Apple Pie): Lanzamiento el da 23 de septiembre de 2008. El
primer dispositivo Android, el HTC Dream, incorpor las siguientes caractersticas de Android 1.0. Incorpor las siguientes caractersticas:
Android Market, un programa con un mercado para la descarga y
actualizacin de aplicaciones.
Navegador Web para visualizar pginas webs en full HTML y XHTML
mltiples pginas mostradas como ventanas ("tarjetas").
Soporte Cmara sin embargo esta versin carece de la opcin de
cambiar la resolucin de la cmara, balance de blancos, calidad, etc.
Carpo de iconos de aplicaciones dentro de una simple carpeta en la
pantalla de inicio.16 Acceso a servidores de correo electrnico por
web, soporte POP3, IMAP4 y SMTP.14
Sincronizacin de Gmail con la aplicacin de Gmail.
Sincronizacin de Google Contacts aplicacin de personas.
Sincronizacin de Google Calendar con la aplicacin de calendario.
Google Maps con Latitude y Street View para ver mapas e imgenes por satlite, as como para encontrar negocios locales y obtener
direcciones de conduccin usando GPS
117
118
119
120
121
122
123
Soporte a la biblioteca Open Accessory. Open Accessory fue introducida en 3.1 (Honeycomb) pero la biblioteca Open Accessory Library
subvenciona en 2.3.4 agregado su soporte cuando un perifrico USB
es conectado con software compatible y una aplicacin compatible en
el dispositivo.
Versin .2.3.5: Lanzamiento el da 25 de julio de 2011. Los cambios incluyen:
Mejoras en el rendimiento por red del Nexus S 4G.
Arreglado una falla de Bluetooth en el Samsung Galaxy S.
Mejoras a la aplicacin de correo electrnico.
Animacin de sombras al deslizar por listas.
Mejoras al software de la cmara.
Mejorada la eficiencia de la batera.
Versin .2.3.6: Lanzamiento el da 2 de septiembre de 2011. Los cambios
incluyen:
Arreglado fallo en la bsqueda por voz.
Versin .2.3.7: Lanzamiento el da 21 de septiembre de 2011. Los cambios incluyen:
Soporte de Google Wallet para el Nexus S 4G.esta versin es exclusiva
para usuarios en canada.
Versin 3.x (Honeycomb): Lanzamiento el da 22 de febrero de 2011. El 22
de febrero de 2011, sale el SDK de Android 3.0 Honeycomb. Fue la primera actualizacin exclusiva para tablet, lo que quiere decir que slo es
apta para tablets y no para telfonos Android. Est basada en el ncleo
de Linux 2.6.36. El primer dispositivo con esta versin fue la tableta Motorola Xoom, lanzado el 24 de febrero de 2011. Las caractersticas de la
actualizacin incluyen:
Soporte optimizado para tablets, con una nueva y "virtual" interfaz
de usuario hologrfica.
Agregada barra de sistema, con caractersticas de acceso rpido a notificaciones, estados y botones de navegacin suavizados, disponible
en la parte inferior de la pantalla.
124
125