Búsqueda automatizada para generar código usando programación genética en un lenguaje de programación orientado a objetos
Tesis
Publication date
2021Metadata
Show full item record
Cómo citar
Bergel, Alexandre
Cómo citar
Búsqueda automatizada para generar código usando programación genética en un lenguaje de programación orientado a objetos
Professor Advisor
Abstract
Hoy en día, las técnicas de aprendizaje de máquinas para generar código fuente son un área de investigación importante y prometedor. Se ha demostrado que la programación genética, o genetic programming (GP), contribuye eficientemente en la reparación de software y optimización de programas.
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 en las soluciones implementadas son consecuencia de que este lenguaje es procedural y con tipos estáticos.
Esta memoria explora el uso de la 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, que incluye: clases, métodos y objetos. Para este fin, se complementa a GP de un sistema de pesos que toma en cuenta la jerarquía y herencia de clases, la modularidad, variables de instancia y la localización de métodos. En cuanto a la calidad del código generado por GP, se utiliza un conjunto de pruebas unitarias (tests) que encapsulan los requerimientos funcionales que el código generado debe cumplir.
Los experimentos se diseñan sobre el lenguaje de programación Pharo. En particular, se ejecuta el algoritmo en la librería 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 que pertenecen a Roassal. Los resultados obtenidos reflejan que GP dotado de un sistema de pesos permite producir código de una sola línea con una precisión del 51%, a diferencia del 44% utilizando un algoritmo GP puro.
Estos resultados contribuyen a demostrar la factibilidad de que GP efectivamente puede construir código fuente en aplicaciones con programación orientada a objetos y dinámicamente tipado, y que, en un futuro, contribuya a construir parches automatizados que logren resolver errores de software en programas con las características mencionadas.
General note
Memoria para optar al título de Ingeniero Civil en Computación
Identifier
URI: https://repositorio.uchile.cl/handle/2250/181639
Collections
The following license files are associated with this item: