Reparación automática de software : ciclos Infinitos

Autores
Lamelas Marcote, Sebastián Rodrigo
Año de publicación
2015
Idioma
inglés
Tipo de recurso
tesis de grado
Estado
versión publicada
Colaborador/a o director/a de tesis
Garbervetsky, Diego David
Monperrus, Martín
Descripción
La reparación automática de software (ASR) es un tópico de investigación muy reciente. Consiste en la implementación de herramientas que puedan automáticamente detectar bugs y corregirlos. Se considera cualquier tipo de bug: un defecto en el código o una falla durante la ejecución del código. En los últimos años, han surgido enfoques novedosos y con resultados favorables para este campo. En general, el proceso de desarrollo de software es costoso en términos de tiempo y también económicos. En particular, la fase de mantenimiento de software suele ser considerada como la más costosa. Un aspecto clave del mantenimiento es la reparación del código fuente. Cuando la cantidad de reportes de bugs supera ampliamente la cantidad de programadores, esta etapa de mantenimiento puede convertirse en un cuello de botella dañino para la evolución de un proyecto de software. Aquí reside el objetivo principal de ASR: reparar automáticamente el software para minimizar sus costos de mantenimiento. Hay quienes creen, dentro del campo de ASR, que la mejor manera de reparar bugs es definiendo una taxonomía claramente definida sobre los distintos tipos de bugs y luego implementar métodos de reparación especializados para cada tipo. Es decir, definir una determinada clase de defectos y construir un programa que repare esa clase de defectos, teniendo en cuenta las propiedades específicas de esa clase. Una clase de defectos perteneciente a cualquier lenguaje de programación es la de ciclos infinitos. Este bug es el culpable de que se cuelgue un programa. Se trata de un ciclo que itera infinitamente, de forma no deliberada, sin devolver un resultado o lanzar una excepción. El objetivo de esta tesis es implementar un programa que intente reparar automáticamente esta clase de defectos. En esta tesis se consideran los ciclos del tipo while (condition) { /* block */ }, y la estrategia para reparar ciclos infinitos es en base a la búsqueda de una nueva condición del while. Se implementa un programa que intenta reparar automáticamente código Java. Para ello, se desarrollan técnicas de análisis y síntesis automática de código, con el propósito de encontrar automáticamente una condición booleana que prevenga el ciclado infinito. Este trabajo fue principalmente desarrollado durante una pasantía de 6 meses en el año 2014 en INRIA-Lille, bajo la supervisión de Martin Monperrus, miembro del equipo de investigación INRIA SPIRALS (ver http://www.monperrus.net/martin/).
Automatic Software Repair is a recent Computer Science research area. It is concerned with the development of tools which automatically detect and repair bugs. Any kind of bug is considered: a defect in the source code or a fault in the execution of it. In recent years, innovative ideas have emerged with favorable results. Generally, software development processes are costly both in terms of time and money. Particularly, software maintenance is often considered the most expensive one (the legacy crisis: new software outpaces the ability to maintain it). A key task during the maintenance phase is the source code correction. Unfortunately, for most projects, the number of reported bugs is greater than the number of programmers. This way, the maintenance phase can become a severe bottleneck for the evolution of a project. This is the essential purpose of Automatic Software Repair: it aims to minimize the maintenance costs by automatically repairing software. Within the Automatic Software Repair community, there are some who believe that the most appropriate way to automatically repair bugs is drawing a clear taxonomy of common coding faults and then focusing on developing a specific repair method for each type. That is, each bug is assigned to its corresponding defect class and, to repair it, a specific repair method which exploits the defect class' intrinsic properties is used. One defect class present in every programming language is the infinite loop defect class. In our experience, every programmer or user has, at least once, experienced this type of bug. It is one of the coding faults responsible for hanging programs. It consists of a loop which unintentionally iterates nonstop without returning an expected result or throwing an exception. In this work, we aim to automatically repair this defect class. Particularly, we focus our attention on while loops. The repair endeavor includes the infinite loop detection and the synthesis of a patch for the infinite loop. We develop a technique to statically analyze source code but we also use a code synthesis technique based on logic SMT problems. This work was mainly executed during a 6-month internship in the summer of 2014 at INRIA-Lille under the supervision of Martin Monperrus (from INRIA SPIRALS team; please refer to his website http://www.monperrus.net/martin/).
Fil: Lamelas Marcote, Sebastián Rodrigo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
Materia
FALLAS
REPARACION AUTOMATICA DE CODIGO
CICLOS INFINITOS
ANALISIS DE CODIGO
SINTESIS DE CODIGO
BUGS
AUTOMATIC SOFTWARE REPAIR
INNITE LOOPS
CODE ANALYSIS
CODE SYNTHESIS
Nivel de accesibilidad
acceso abierto
Condiciones de uso
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
Repositorio
Biblioteca Digital (UBA-FCEN)
Institución
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
OAI Identificador
seminario:seminario_nCOM000603_LamelasMarcote

id BDUBAFCEN_801807dcf5d41d9da8f9df1b6ca41017
oai_identifier_str seminario:seminario_nCOM000603_LamelasMarcote
network_acronym_str BDUBAFCEN
repository_id_str 1896
network_name_str Biblioteca Digital (UBA-FCEN)
spelling Reparación automática de software : ciclos InfinitosTowards automatic repair : of infinite loopsLamelas Marcote, Sebastián RodrigoFALLASREPARACION AUTOMATICA DE CODIGOCICLOS INFINITOSANALISIS DE CODIGOSINTESIS DE CODIGOBUGSAUTOMATIC SOFTWARE REPAIRINNITE LOOPSCODE ANALYSISCODE SYNTHESISLa reparación automática de software (ASR) es un tópico de investigación muy reciente. Consiste en la implementación de herramientas que puedan automáticamente detectar bugs y corregirlos. Se considera cualquier tipo de bug: un defecto en el código o una falla durante la ejecución del código. En los últimos años, han surgido enfoques novedosos y con resultados favorables para este campo. En general, el proceso de desarrollo de software es costoso en términos de tiempo y también económicos. En particular, la fase de mantenimiento de software suele ser considerada como la más costosa. Un aspecto clave del mantenimiento es la reparación del código fuente. Cuando la cantidad de reportes de bugs supera ampliamente la cantidad de programadores, esta etapa de mantenimiento puede convertirse en un cuello de botella dañino para la evolución de un proyecto de software. Aquí reside el objetivo principal de ASR: reparar automáticamente el software para minimizar sus costos de mantenimiento. Hay quienes creen, dentro del campo de ASR, que la mejor manera de reparar bugs es definiendo una taxonomía claramente definida sobre los distintos tipos de bugs y luego implementar métodos de reparación especializados para cada tipo. Es decir, definir una determinada clase de defectos y construir un programa que repare esa clase de defectos, teniendo en cuenta las propiedades específicas de esa clase. Una clase de defectos perteneciente a cualquier lenguaje de programación es la de ciclos infinitos. Este bug es el culpable de que se cuelgue un programa. Se trata de un ciclo que itera infinitamente, de forma no deliberada, sin devolver un resultado o lanzar una excepción. El objetivo de esta tesis es implementar un programa que intente reparar automáticamente esta clase de defectos. En esta tesis se consideran los ciclos del tipo while (condition) { /* block */ }, y la estrategia para reparar ciclos infinitos es en base a la búsqueda de una nueva condición del while. Se implementa un programa que intenta reparar automáticamente código Java. Para ello, se desarrollan técnicas de análisis y síntesis automática de código, con el propósito de encontrar automáticamente una condición booleana que prevenga el ciclado infinito. Este trabajo fue principalmente desarrollado durante una pasantía de 6 meses en el año 2014 en INRIA-Lille, bajo la supervisión de Martin Monperrus, miembro del equipo de investigación INRIA SPIRALS (ver http://www.monperrus.net/martin/).Automatic Software Repair is a recent Computer Science research area. It is concerned with the development of tools which automatically detect and repair bugs. Any kind of bug is considered: a defect in the source code or a fault in the execution of it. In recent years, innovative ideas have emerged with favorable results. Generally, software development processes are costly both in terms of time and money. Particularly, software maintenance is often considered the most expensive one (the legacy crisis: new software outpaces the ability to maintain it). A key task during the maintenance phase is the source code correction. Unfortunately, for most projects, the number of reported bugs is greater than the number of programmers. This way, the maintenance phase can become a severe bottleneck for the evolution of a project. This is the essential purpose of Automatic Software Repair: it aims to minimize the maintenance costs by automatically repairing software. Within the Automatic Software Repair community, there are some who believe that the most appropriate way to automatically repair bugs is drawing a clear taxonomy of common coding faults and then focusing on developing a specific repair method for each type. That is, each bug is assigned to its corresponding defect class and, to repair it, a specific repair method which exploits the defect class' intrinsic properties is used. One defect class present in every programming language is the infinite loop defect class. In our experience, every programmer or user has, at least once, experienced this type of bug. It is one of the coding faults responsible for hanging programs. It consists of a loop which unintentionally iterates nonstop without returning an expected result or throwing an exception. In this work, we aim to automatically repair this defect class. Particularly, we focus our attention on while loops. The repair endeavor includes the infinite loop detection and the synthesis of a patch for the infinite loop. We develop a technique to statically analyze source code but we also use a code synthesis technique based on logic SMT problems. This work was mainly executed during a 6-month internship in the summer of 2014 at INRIA-Lille under the supervision of Martin Monperrus (from INRIA SPIRALS team; please refer to his website http://www.monperrus.net/martin/).Fil: Lamelas Marcote, Sebastián Rodrigo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesGarbervetsky, Diego DavidMonperrus, Martín2015info:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1finfo:ar-repo/semantics/tesisDeGradoapplication/pdfhttps://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcoteenginfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2026-02-12T12:16:58Zseminario:seminario_nCOM000603_LamelasMarcoteInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962026-02-12 12:16:59.243Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse
dc.title.none.fl_str_mv Reparación automática de software : ciclos Infinitos
Towards automatic repair : of infinite loops
title Reparación automática de software : ciclos Infinitos
spellingShingle Reparación automática de software : ciclos Infinitos
Lamelas Marcote, Sebastián Rodrigo
FALLAS
REPARACION AUTOMATICA DE CODIGO
CICLOS INFINITOS
ANALISIS DE CODIGO
SINTESIS DE CODIGO
BUGS
AUTOMATIC SOFTWARE REPAIR
INNITE LOOPS
CODE ANALYSIS
CODE SYNTHESIS
title_short Reparación automática de software : ciclos Infinitos
title_full Reparación automática de software : ciclos Infinitos
title_fullStr Reparación automática de software : ciclos Infinitos
title_full_unstemmed Reparación automática de software : ciclos Infinitos
title_sort Reparación automática de software : ciclos Infinitos
dc.creator.none.fl_str_mv Lamelas Marcote, Sebastián Rodrigo
author Lamelas Marcote, Sebastián Rodrigo
author_facet Lamelas Marcote, Sebastián Rodrigo
author_role author
dc.contributor.none.fl_str_mv Garbervetsky, Diego David
Monperrus, Martín
dc.subject.none.fl_str_mv FALLAS
REPARACION AUTOMATICA DE CODIGO
CICLOS INFINITOS
ANALISIS DE CODIGO
SINTESIS DE CODIGO
BUGS
AUTOMATIC SOFTWARE REPAIR
INNITE LOOPS
CODE ANALYSIS
CODE SYNTHESIS
topic FALLAS
REPARACION AUTOMATICA DE CODIGO
CICLOS INFINITOS
ANALISIS DE CODIGO
SINTESIS DE CODIGO
BUGS
AUTOMATIC SOFTWARE REPAIR
INNITE LOOPS
CODE ANALYSIS
CODE SYNTHESIS
dc.description.none.fl_txt_mv La reparación automática de software (ASR) es un tópico de investigación muy reciente. Consiste en la implementación de herramientas que puedan automáticamente detectar bugs y corregirlos. Se considera cualquier tipo de bug: un defecto en el código o una falla durante la ejecución del código. En los últimos años, han surgido enfoques novedosos y con resultados favorables para este campo. En general, el proceso de desarrollo de software es costoso en términos de tiempo y también económicos. En particular, la fase de mantenimiento de software suele ser considerada como la más costosa. Un aspecto clave del mantenimiento es la reparación del código fuente. Cuando la cantidad de reportes de bugs supera ampliamente la cantidad de programadores, esta etapa de mantenimiento puede convertirse en un cuello de botella dañino para la evolución de un proyecto de software. Aquí reside el objetivo principal de ASR: reparar automáticamente el software para minimizar sus costos de mantenimiento. Hay quienes creen, dentro del campo de ASR, que la mejor manera de reparar bugs es definiendo una taxonomía claramente definida sobre los distintos tipos de bugs y luego implementar métodos de reparación especializados para cada tipo. Es decir, definir una determinada clase de defectos y construir un programa que repare esa clase de defectos, teniendo en cuenta las propiedades específicas de esa clase. Una clase de defectos perteneciente a cualquier lenguaje de programación es la de ciclos infinitos. Este bug es el culpable de que se cuelgue un programa. Se trata de un ciclo que itera infinitamente, de forma no deliberada, sin devolver un resultado o lanzar una excepción. El objetivo de esta tesis es implementar un programa que intente reparar automáticamente esta clase de defectos. En esta tesis se consideran los ciclos del tipo while (condition) { /* block */ }, y la estrategia para reparar ciclos infinitos es en base a la búsqueda de una nueva condición del while. Se implementa un programa que intenta reparar automáticamente código Java. Para ello, se desarrollan técnicas de análisis y síntesis automática de código, con el propósito de encontrar automáticamente una condición booleana que prevenga el ciclado infinito. Este trabajo fue principalmente desarrollado durante una pasantía de 6 meses en el año 2014 en INRIA-Lille, bajo la supervisión de Martin Monperrus, miembro del equipo de investigación INRIA SPIRALS (ver http://www.monperrus.net/martin/).
Automatic Software Repair is a recent Computer Science research area. It is concerned with the development of tools which automatically detect and repair bugs. Any kind of bug is considered: a defect in the source code or a fault in the execution of it. In recent years, innovative ideas have emerged with favorable results. Generally, software development processes are costly both in terms of time and money. Particularly, software maintenance is often considered the most expensive one (the legacy crisis: new software outpaces the ability to maintain it). A key task during the maintenance phase is the source code correction. Unfortunately, for most projects, the number of reported bugs is greater than the number of programmers. This way, the maintenance phase can become a severe bottleneck for the evolution of a project. This is the essential purpose of Automatic Software Repair: it aims to minimize the maintenance costs by automatically repairing software. Within the Automatic Software Repair community, there are some who believe that the most appropriate way to automatically repair bugs is drawing a clear taxonomy of common coding faults and then focusing on developing a specific repair method for each type. That is, each bug is assigned to its corresponding defect class and, to repair it, a specific repair method which exploits the defect class' intrinsic properties is used. One defect class present in every programming language is the infinite loop defect class. In our experience, every programmer or user has, at least once, experienced this type of bug. It is one of the coding faults responsible for hanging programs. It consists of a loop which unintentionally iterates nonstop without returning an expected result or throwing an exception. In this work, we aim to automatically repair this defect class. Particularly, we focus our attention on while loops. The repair endeavor includes the infinite loop detection and the synthesis of a patch for the infinite loop. We develop a technique to statically analyze source code but we also use a code synthesis technique based on logic SMT problems. This work was mainly executed during a 6-month internship in the summer of 2014 at INRIA-Lille under the supervision of Martin Monperrus (from INRIA SPIRALS team; please refer to his website http://www.monperrus.net/martin/).
Fil: Lamelas Marcote, Sebastián Rodrigo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
description La reparación automática de software (ASR) es un tópico de investigación muy reciente. Consiste en la implementación de herramientas que puedan automáticamente detectar bugs y corregirlos. Se considera cualquier tipo de bug: un defecto en el código o una falla durante la ejecución del código. En los últimos años, han surgido enfoques novedosos y con resultados favorables para este campo. En general, el proceso de desarrollo de software es costoso en términos de tiempo y también económicos. En particular, la fase de mantenimiento de software suele ser considerada como la más costosa. Un aspecto clave del mantenimiento es la reparación del código fuente. Cuando la cantidad de reportes de bugs supera ampliamente la cantidad de programadores, esta etapa de mantenimiento puede convertirse en un cuello de botella dañino para la evolución de un proyecto de software. Aquí reside el objetivo principal de ASR: reparar automáticamente el software para minimizar sus costos de mantenimiento. Hay quienes creen, dentro del campo de ASR, que la mejor manera de reparar bugs es definiendo una taxonomía claramente definida sobre los distintos tipos de bugs y luego implementar métodos de reparación especializados para cada tipo. Es decir, definir una determinada clase de defectos y construir un programa que repare esa clase de defectos, teniendo en cuenta las propiedades específicas de esa clase. Una clase de defectos perteneciente a cualquier lenguaje de programación es la de ciclos infinitos. Este bug es el culpable de que se cuelgue un programa. Se trata de un ciclo que itera infinitamente, de forma no deliberada, sin devolver un resultado o lanzar una excepción. El objetivo de esta tesis es implementar un programa que intente reparar automáticamente esta clase de defectos. En esta tesis se consideran los ciclos del tipo while (condition) { /* block */ }, y la estrategia para reparar ciclos infinitos es en base a la búsqueda de una nueva condición del while. Se implementa un programa que intenta reparar automáticamente código Java. Para ello, se desarrollan técnicas de análisis y síntesis automática de código, con el propósito de encontrar automáticamente una condición booleana que prevenga el ciclado infinito. Este trabajo fue principalmente desarrollado durante una pasantía de 6 meses en el año 2014 en INRIA-Lille, bajo la supervisión de Martin Monperrus, miembro del equipo de investigación INRIA SPIRALS (ver http://www.monperrus.net/martin/).
publishDate 2015
dc.date.none.fl_str_mv 2015
dc.type.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
info:eu-repo/semantics/publishedVersion
http://purl.org/coar/resource_type/c_7a1f
info:ar-repo/semantics/tesisDeGrado
format bachelorThesis
status_str publishedVersion
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcote
url https://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcote
dc.language.none.fl_str_mv eng
language eng
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
eu_rights_str_mv openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-sa/2.5/ar
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
dc.source.none.fl_str_mv reponame:Biblioteca Digital (UBA-FCEN)
instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron:UBA-FCEN
reponame_str Biblioteca Digital (UBA-FCEN)
collection Biblioteca Digital (UBA-FCEN)
instname_str Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron_str UBA-FCEN
institution UBA-FCEN
repository.name.fl_str_mv Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
repository.mail.fl_str_mv ana@bl.fcen.uba.ar
_version_ 1856934722426372097
score 12.930639