Automatic program repair and synthesis using genetic programming

When bugs in a program are identified by a debugger or a program verifier, the developer of the program would have to manually interpret the bugs, refine the program, and perform verification for the fix until the program is bug free. This repeated process of checking and trying fixes is tedious and...

Full description

Saved in:
Bibliographic Details
Main Author: Lee, Yue Yu
Other Authors: Lin Shang-Wei
Format: Final Year Project
Language:English
Published: 2017
Subjects:
Online Access:http://hdl.handle.net/10356/70294
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Nanyang Technological University
Language: English
id sg-ntu-dr.10356-70294
record_format dspace
spelling sg-ntu-dr.10356-702942023-03-03T20:35:59Z Automatic program repair and synthesis using genetic programming Lee, Yue Yu Lin Shang-Wei School of Computer Science and Engineering DRNTU::Engineering::Computer science and engineering When bugs in a program are identified by a debugger or a program verifier, the developer of the program would have to manually interpret the bugs, refine the program, and perform verification for the fix until the program is bug free. This repeated process of checking and trying fixes is tedious and error-prone, and logical errors made by the developer are often hard to spot during the debugging process. This project aims to make use of genetic programming to develop a tool which performs automatic program repair, and benchmarks used by other existing tools are also incorporated for testing how well the developed tool performs. Since the end goal would be to produce a compilable and runnable patched program from a previously buggy one, variables used for patch synthesis would need to be obtained from the original buggy program, and patches generated would need to be in the same programming language as well. The tool will first identify the variables available for patch synthesis; after which, a population of patches will be randomly generated through combining the variables and constants with different logical and mathematical operators; these patches will then be rated by a fitness function for their suitability in becoming a fix for the buggy program. Based on the fitness function, unfit patches will also be removed. Lastly, variations will also be introduced to the population in the hope of generating better patches from the process. The cycle of fitness value determination, selection and variation will be repeated until a good patch capable of passing most, if not all of the test cases in the benchmark, is generated. Bachelor of Engineering (Computer Science) 2017-04-19T01:28:46Z 2017-04-19T01:28:46Z 2017 Final Year Project (FYP) http://hdl.handle.net/10356/70294 en Nanyang Technological University 47 p. application/pdf
institution Nanyang Technological University
building NTU Library
continent Asia
country Singapore
Singapore
content_provider NTU Library
collection DR-NTU
language English
topic DRNTU::Engineering::Computer science and engineering
spellingShingle DRNTU::Engineering::Computer science and engineering
Lee, Yue Yu
Automatic program repair and synthesis using genetic programming
description When bugs in a program are identified by a debugger or a program verifier, the developer of the program would have to manually interpret the bugs, refine the program, and perform verification for the fix until the program is bug free. This repeated process of checking and trying fixes is tedious and error-prone, and logical errors made by the developer are often hard to spot during the debugging process. This project aims to make use of genetic programming to develop a tool which performs automatic program repair, and benchmarks used by other existing tools are also incorporated for testing how well the developed tool performs. Since the end goal would be to produce a compilable and runnable patched program from a previously buggy one, variables used for patch synthesis would need to be obtained from the original buggy program, and patches generated would need to be in the same programming language as well. The tool will first identify the variables available for patch synthesis; after which, a population of patches will be randomly generated through combining the variables and constants with different logical and mathematical operators; these patches will then be rated by a fitness function for their suitability in becoming a fix for the buggy program. Based on the fitness function, unfit patches will also be removed. Lastly, variations will also be introduced to the population in the hope of generating better patches from the process. The cycle of fitness value determination, selection and variation will be repeated until a good patch capable of passing most, if not all of the test cases in the benchmark, is generated.
author2 Lin Shang-Wei
author_facet Lin Shang-Wei
Lee, Yue Yu
format Final Year Project
author Lee, Yue Yu
author_sort Lee, Yue Yu
title Automatic program repair and synthesis using genetic programming
title_short Automatic program repair and synthesis using genetic programming
title_full Automatic program repair and synthesis using genetic programming
title_fullStr Automatic program repair and synthesis using genetic programming
title_full_unstemmed Automatic program repair and synthesis using genetic programming
title_sort automatic program repair and synthesis using genetic programming
publishDate 2017
url http://hdl.handle.net/10356/70294
_version_ 1759857970647138304