Testing Enterprise Software
The challenges and methods of testing in large enterprise environments are of central importance, especially in the context of SAP and other...
The use of artificial intelligence to improve software quality is at the heart of current developments: AI can provide targeted help with refactoring and static analysis to fix existing quality problems in the code. Especially with the mass of findings that conventional analysis tools provide, AI supports prioritization and concrete troubleshooting. However, despite impressive progress, there are still stumbling blocks such as unreliable results or limitations with specific programming languages. The technology opens up new possibilities, but forces us to critically question trust and control when dealing with automated corrections.
In this episode, I talk to Benjamin Hummel about how artificial intelligence can help to fix quality problems in existing software in a targeted manner. Specifically, we talk about how AI can actually add value in refactoring and static code analysis. Benjamin brings practical experience from various projects. We will discuss typical difficulties: too many error reports due to static analysis, how to deal with them and what happens when companies lose track.
"And the question is, can't I just have such very local fixes generated with AI support?" - Benjamin Hummel
Dr. Benjamin Hummel holds a PhD in software engineering and has researched and published on the topics of software quality and maintainability. He has been actively developing methods and tools for the quality improvement of large software systems for over 20 years. As co-founder and CTO of CQSE GmbH, he has been responsible for the development and operation of the software intelligence platform Teamscale for over 10 years.
Quality issues in existing software are a key challenge, especially in legacy systems with a long history and often insufficient documentation. Troubleshooting is difficult because the code can be complex, poorly commented or outdated. Traditional methods often reach their limits here.
Artificial intelligence (AI) offers new possibilities for improving software quality. AI-supported tools can identify, prioritize and, in some cases, automatically correct errors more quickly. They support developers in dealing with the enormous volume of problems that static analysis tools often deliver in large numbers.
This article shows how you can use AI to efficiently resolve quality problems in existing software. It highlights the role of AI in analysis and automated refactoring, the opportunities and limitations and how you can integrate AI into the development process in a meaningful way.
Static code analysis is an established method for identifying errors in software that examines the source code without execution. Typical problems that such analysis tools uncover include:
These tools produce a large volume of results - often thousands of warnings in a single scan. The challenge for development teams is to process these results efficiently and prioritize the most important issues.
AI support comes into play here by automatically recognizing patterns and not only identifying problems, but also sorting them by relevance. Large language models (LLMs) can, for example:
Despite these advantages, the use of static code analysis by AI is not without its difficulties. The number of problems found can easily overwhelm developers. Traditional static analysis generates many false positives - i.e. warnings about problems that are not problems at all.
Development teams face the following challenges:
The combination of static analysis and AI creates new opportunities to increase efficiency in troubleshooting. However, it also requires appropriate processes and tools to make the flood of information manageable and derive meaningful measures.
"AI helps not only to find errors, but also to assess their relevance - a decisive step against the chaos in large legacy systems. "*
AI-based error correction and automatic refactoring are becoming increasingly important in the improvement of existing software systems. The automated generation of local corrections by AI helps developers to quickly fix recurring and simple problems. Examples of this are
These tasks are well suited to AI-supported tools, as they can recognize clearly defined patterns and suggest appropriate corrections.
More complex refactorings require a deeper understanding of the code structure and functionality. Large Language Models (LLMs) offer a decisive advantage here, as they can analyze and understand source code and describe it in natural language. Their capabilities include
The quality of the suggestions made by LLMs varies greatly. Some recommendations are directly applicable and measurably improve code quality. Others lead to incorrect or incomprehensible changes that require manual appraisal. The reason for this is the sometimes inconsistent interpretation of complex program logic by AI.
A look at the practical application shows that AI can significantly speed up routine tasks and relieve developers. For more demanding refactorings, however, close cooperation between humans and machines remains essential to ensure the functionality and stability of the system.
The potential of AI lies in systematically addressing both simple and complex quality problems in the code - from local fixes to intelligent restructuring.
After AI solutions have been proposed to fix bugs, it is crucial that these solutions are appraised for correctness and functionality.
To evaluate the effectiveness of the different models, 100 random examples from large-scale projects were used. These examples were used to analyze the proportion of successful solution proposals compared to problematic proposals by the different AI models.
By checking the validity and functionality of the proposed solutions generated by AI, development teams can ensure that the implemented corrections actually improve the quality of the software. Benchmarking with real-world examples enables an objective evaluation of the performance of different AI models in terms of their effectiveness in troubleshooting legacy systems.
The performance of artificial intelligence (AI) in fixing quality problems in software is significantly influenced by the variety of programming languages and the availability of training data.
It has been shown that languages such as Java and JavaScript, which have extensive open source data, achieve better results than less common or proprietary languages such as SAP development.
The quality and reliability of AI-generated solutions depends heavily on the database, with a broad and high-quality database being essential for successful refactoring processes.
The integration of AI into existing software systems poses certain challenges and risks that need to be carefully considered. One key aspect is the potential for introducing new errors during automated corrections. Although AI can assist with troubleshooting, there is a risk that unexpected problems may arise or existing problems may not be fully resolved. The complexity of legacy code in particular poses a challenge, as long-standing methods may persist despite being fixed.
There are constant developments in the field of AI-based static analysis tools in research and industry. New approaches and technologies are being researched to improve the effectiveness and reliability of AI solutions in software quality assurance. Companies should follow these advances closely to benefit from the latest innovations and continuously optimize their software development processes.
Integrating AI into the development process requires careful planning and control. AI-supported suggestions should always be combined with manual appraisal to ensure that the automatic corrections are correct and functional. The risk of AI introducing new errors remains and can only be minimized by human review.
Another important point is comprehensive test automation. Automated testing helps to detect the effects of AI-based changes at an early stage and prevent regressions. This is particularly important for outdated systems, whose architecture and code base are often complex and poorly documented.
The following procedures are recommended:
These measures support the efficient resolution of quality problems in existing software with AI and sustainably increase the reliability of the results.
The effectiveness of AI for quality problems is clearly demonstrated by the fact that around two thirds of the corrections generated by AI can be successfully implemented. These successes range from simple improvements such as the removal of unused imports to more complex refactorings that significantly reduce development effort.
Challenges remain:
The future of fixing quality problems in existing software with AI lies in the combination of technological advances in large language models and targeted research to improve the validation and prioritization of corrections.
AI is increasingly perceived as a supporting tool in existing development processes that relieves the burden on development teams and sustainably improves software quality.
The challenges and methods of testing in large enterprise environments are of central importance, especially in the context of SAP and other...
Podcast Episode: Shift Left The idea behind Shift Left is to consider quality as early as possible in the development process. Because the later...
Podcast Episode: Professional Tester In this episode, we talk about what skills a tester needs nowadays and how the job description of a tester has...