The problem becomes the solution: Neural software analyses

At least since the start of the Covid19 pandemic, software has been ubiquitous. Neural networks, deep learning, and artificial intelligence have been an important part of the boost to innovation in recent years – be it in the form of autonomous vehicles, speech recognition, or clever suggestions for our next vacation.

Image credit: Max Pixel, CC0 Public Domain

The incredibly large amount of today’s software systems as well as their complexity overtax not only the individual software developers, but also the development tools used to date. The result of this are software errors that may have costly, and sometimes also harmful, consequences.

Against this background, Prof. Michael Pradel and his team the of the resarch group “Software Lab: Program Analysis” at the Institute of Software Engineering at the University of Stuttgart are exploring how artificial intelligence can independently learn software development tools from the increasingly complex programs. Neural software analysis is the core of his research, which has been funded by the European Research Council since 2019 with an ERC Starting Grant valued at EUR 1.5 million. This revolutionary method of artificial intelligence researched by Prof. Michael Pradel and his team uses AI for the development of programs that support software developers in their daily work.

Neural Software Analysis

The method is based on the fact that software is written by humans. It learns from existing software errors how new errors can be found automatically. “In this way, neural software analysis makes a virtue out of necessity,” Pradel explains. “It considers the increasingly complex programs themselves as ‘data’. By means of innovative techniques of machine learning, software can be developed in an automated way and further optimized.”

Up to now, traditional support tools for software developers have been developed by hand using accurate, logic-based program analysis. However, since the underlying idea of a software can only be understood with difficulty in a traditional analysis, these tools are increasingly reaching their limits. Here the approach of neural software analysis comes in: Machine learning complements or replaces previous approaches with probability-based inference (probabilistic inference). “Neural approaches understand not only the mathematical logic of a program, but also natural-language information in and about software as well as conventions that programmers follow in practice.”

The researchers are developing artificial intelligence that is able to “understand” the meaning of a program code and supports software developers in their work. For example, the tools help find and fix coding errors and make suggestions on how to complete an already written code. The artificial intelligence reconstructs what a programmer had in mind when coding a certain sequence and can decide whether different parts of the program actually fit together.

Despite the huge progress, many open questions remain that the researchers aim to address in the further course of the ERC project, which will run until 2025. Among other things, they want to better understand how and why the models learned by the artificial intelligence work, and how to combine the new methods with existing tools.

Source: University of Stuttgart