Estudiantes del DCC presentarán investigaciones en conferencias internacionales

Image preview

Cada uno de los artículos fue desarrollado junto con el profesor del DCC, Alexandre Bergel.

Image preview

De izquierda a derecha los estudiantes del DCC: Felipe Canales, Ignacio Slater y Vicente Illanes.


Compartir

Felipe Canales, Ignacio Slater y Vicente Illanes, presentarán en distintos eventos investigaciones desarrolladas junto con el profesor Alexandre Bergel.

 

Un importante desempeño científico a nivel internacional tienen los estudiantes de pregrado del DCC, Felipe Canales, Ignacio Slater y Vicente Illanes. Todos ellos, tienen artículos científicos o papers aceptados en conferencias y workshops internacionales que se realizarán próximamente.

 

Cada uno de estos trabajos fue realizado en conjunto con el profesor del DCC, Alexandre Bergel, quien afirma que "desarrollar un trabajo de investigación es una forma de comunicación muy particular entre un alumno y un profesor. Disfruto mucho esta instancia de poder desarrollar una idea y explorar un terreno nuevo. Creo que es algo importante, particularmente en este momento donde los enlaces entre profesores y alumnos son solamente virtuales".

 

Optimizando la máquina virtual de Java

 

"Optimization of Java Virtual Machine Flags Using Feature Model and Genetic Algorithm" se titula el trabajo escrito por el estudiante Felipe Canales, el postdoc del DCC, Geoffrey Hecht, y el profesor Alexandre Bergel. Se trata de un paper corto que será presentado en la International Conference on Performance Engineering - ACM/SPEC ICPE que se realizará en forma virtual del 19 al 23 de abril.

 

El artículo es un avance del trabajo de título de Felipe Canales, que tiene como objetivo optimizar la máquina virtual de Java con un algoritmo genético. El estudiante explica que "la máquina virtual posee muchos parámetros que afectan su funcionamiento. Entonces, lo que se busca es encontrar la combinación de parámetros que mejore el tiempo de ejecución de un programa Java. No obstante, por la gran cantidad de opciones que existen, esto no es algo que se pueda hacer a mano. Por eso es que se utiliza un algoritmo genético para realizar la optimización. Esto es, probar con soluciones aleatorias e ir combinando las mejores".

 

Como resultado, señala que "se espera obtener una herramienta que una persona pueda usar para optimizar la máquina virtual con cualquier programa que desee. También se espera que el agrupamiento de opciones sea útil para alguien que quiera realizar algo similar en el futuro, porque no todas las relaciones entre parámetros están documentadas o debidamente explicadas".

 

Algoritmos genéticos para reproducir errores

 

Por su parte, Ignacio Slater y el profesor Bergel desarrollaron el artículo "Beacon: Automated Test Generation for Stack-Trace Reproduction using Genetic Algorithms". Éste será presentado en el Workshop Search Based Software Testing (SBST) que se desarrollará en el marco de la International Conference on Software Engineering (IEEE/ACM ICSE 2021) a realizarse virtualmente del 25 al 28 de mayo. 

 

Este trabajo aborda la problemática de generar suites de testing, "enfocándose en el caso particular de crear de forma automática test para reproducir errores y así saber dónde y por qué se está produciendo el error, reduciendo el trabajo de los programadores", señala Ignacio Slater. 

 

Agrega que el principal aporte que realizan es "Beacon", una herramienta escrita en Python que utiliza algoritmos genéticos para generar código que pueda replicar un error utilizando la menor cantidad de instrucciones posibles. El estudiante explica que si bien hay trabajos previos que abordan el problema de forma similar, "el trabajo en lenguajes de tipado dinámico es casi nulo, lo que es muy importante considerando que Python es un lenguaje de tipado dinámico y uno de los lenguajes de programación más utilizados en el mundo". Destaca además que los resultados obtenidos alcanzan precisiones altas: "Los errores pudieron ser reproducidos sobre el 80% de las veces para 3 experimentos independientes, con lo que damos evidencia de que el tipado del lenguaje no influye para aplicar SBST (técnicas de búsqueda optimizada para resolver problemas de testeo de software), creando una base sobre la que se pueden realizar gran cantidad de trabajos futuros".

 

Programación genética para generar código fuente

 

Finalmente, el estudiante Vicente Illanes desarrolló junto al profesor Bergel el artículo "Generating Object-Oriented Source Code Using Genetic Programming", el cual será presentado en el Workshop Genetic Improvement, que también se desarrollará en el marco de la conferencia ICSE 2021.

 

Vicente Illanes comenta que en la actualidad, el aprendizaje de máquinas para generar código fuente es un área de investigación importante y prometedor. Señala que "se ha demostrado que la programación genética, o genetic programming (GP), contribuye eficientemente en la reparación de software. Sin embargo, la mayoría de los avances aplicando GP para generar código fuente se limita a programas escritos en el lenguaje de programación C. Esto restringe a que muchas de las decisiones de diseño que se toman en cuenta son consecuencia de que este lenguaje es procedural y con tipos estáticos".

 

En este contexto, el estudiante explica que el paper explora el uso de programación genética para generar código fuente en un lenguaje orientado a objetos con tipado dinámico. "Esto implica que la técnica desarrollada debe tomar en cuenta el contexto clásico de estos lenguajes: clases, métodos y objetos. Para esto se complementa la GP con un sistema de pesos que toma en cuenta la jerarquía de clases, referencia de clases, variables de instancia y la localización de métodos. Los experimentos se diseñan sobre el lenguaje de programación Pharo. En particular, se ejecuta el algoritmo en Roassal, una herramienta de visualización escrita en este lenguaje, con el objetivo de generar el cuerpo de los métodos de una sola línea pertenecientes a esta librería con/sin un sistema de pesos".

 

Los resultados obtenidos muestran que la técnica utilizada permite producir sentencias de una sola línea "con una precisión del  51%, a diferencia de un 44% sin el sistema", afirma. "Estos resultados contribuyen a demostrar la factibilidad de que GP efectivamente puede construir código en aplicaciones con orientación de objetivos y dinámicamente tipado, y que en un futuro, logre resolver errores de software en programas con estas características", concluye el estudiante.

 

--
Comunicaciones DCC