Registro:
| Documento: | Tesis de Grado |
| Título: | Reparación automática de software : ciclos Infinitos |
| Título alternativo: | Towards automatic repair : of infinite loops |
| Autor: | Lamelas Marcote, Sebastián Rodrigo |
| Editor: | Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
| Publicación en la web: | 2025-06-12 |
| Fecha de defensa: | 2015 |
| Fecha en portada: | 2015 |
| Grado Obtenido: | Grado |
| Título Obtenido: | Licenciado en Ciencias de la Computación |
| Departamento Docente: | Departamento de Computación |
| Director: | Garbervetsky, Diego David |
| Director Asistente: | Monperrus, Martín |
| Jurado: | Czemerinski, Hernán; López Pombo, Carlos Gustavo |
| Idioma: | Inglés |
| Palabras clave: | FALLAS; REPARACION AUTOMATICA DE CODIGO; CICLOS INFINITOS; ANALISIS DE CODIGO; SINTESIS DE CODIGOBUGS; AUTOMATIC SOFTWARE REPAIR; INNITE LOOPS; CODE ANALYSIS; CODE SYNTHESIS |
| Formato: | PDF |
| Handle: |
http://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcote |
| PDF: | https://bibliotecadigital.exactas.uba.ar/download/seminario/seminario_nCOM000603_LamelasMarcote.pdf |
| Registro: | https://bibliotecadigital.exactas.uba.ar/collection/seminario/document/seminario_nCOM000603_LamelasMarcote |
| Ubicación: | Dep.COM 000603 |
| Derechos de Acceso: | Esta obra puede ser leída, grabada y utilizada con fines de estudio, investigación y docencia. Es necesario el reconocimiento de autoría mediante la cita correspondiente. Lamelas Marcote, Sebastián Rodrigo. (2015). Reparación automática de software : ciclos Infinitos. (Tesis de Grado. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales.). Recuperado de http://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcote |
Resumen:
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/).
Abstract:
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/).
Citación:
---------- APA ----------
Lamelas Marcote, Sebastián Rodrigo. (2015). Reparación automática de software : ciclos Infinitos. (Tesis de Grado. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales.). Recuperado de https://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcote
---------- CHICAGO ----------
Lamelas Marcote, Sebastián Rodrigo. "Reparación automática de software : ciclos Infinitos". Tesis de Grado, Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales, 2015.https://hdl.handle.net/20.500.12110/seminario_nCOM000603_LamelasMarcote
Estadísticas:
Descargas mensuales
Total de descargas desde :
https://bibliotecadigital.exactas.uba.ar/download/seminario/seminario_nCOM000603_LamelasMarcote.pdf
Distrubución geográfica