Loading…

Software Engineering and its Automation with Large Language Models

In software engineering, finding and fixing errors in code, also called “bugs,” is often complicated and time-consuming. To ease “debugging” or removing those errors, We have explored different ways to use Large Language Models (LLMs). LLMs are usually built as neural networks with many layers. This...

Full description

Saved in:
Bibliographic Details
Main Author: Grishina, Anastasiia
Format: Dissertation
Language:English
Online Access:Request full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:In software engineering, finding and fixing errors in code, also called “bugs,” is often complicated and time-consuming. To ease “debugging” or removing those errors, We have explored different ways to use Large Language Models (LLMs). LLMs are usually built as neural networks with many layers. This thesis presents how cutting off (pruning) layers from LLMs can both succeed in error detection and ensure faster training of the models, thereby making algorithms more sustainable. Moving from bug detection to bug fixing, the work contains two solutions for automated debugging that do not require extra model training. In one solution, we mimic so-called “rubber duck debugging” widely (and often humorously) used by software engineers. Thereby, one LLM writes programs while another LLM revises the code and finds mistakes. In another solution, we try to lose coding errors on the way during a round-trip translation. We translate buggy code from the original programming language to another and back so that errors get eliminated due to regression toward the mean error-free code. In both approaches to automated debugging, we solve unique bugs that are not fixed by LLMs or other specialized algorithms when they are used in a regular way. Overall, this dissertation showcases how LLMs can be used creatively to aid in software engineering tasks and reflects on energy usage of LLMs for software engineering.