The focus of our research are program analyses that support program understanding, preservation of architectural principles and software quality during maintenance, and early error detection. We devise new analysis methods and usually base them on algorithms used for code optimization in compilers but specially adapt them to the needs of global program analyses.
In the Bauhaus system, we integrate these basic fact-finding analyses with special-purpose analyses, e.g., the detection of breaches of the architectural design or of synchronization errors in code. We always maintain the requirement that the developed analyses be applicable to large industrial software systems. The Bauhaus system provides the infrastructure in which we embed our analyses. Started in 1996 in Stuttgart, Bauhaus has been significantly enhanced in a cooperative effort with the University of Bremen and the company Axivion GmbH.
Presently the research in Stuttgart is primarily concentrated on the analysis of concurrent software, which has attracted the highest attention due to the advent of multicore hardware. By predictively identifying communication and its missing synchronization we detect potential errors that often cannot be found by testing approaches.
We also explore changes to the infrastructure of the Bauhaus system geared towards integrating tools written in different programming languages and towards tolerating various classes of changes to the intermediate representation of programs.
In further activities, we work on programming language topics that affect the reliability of the produced software, be it by language constructs that are more secure, be it by guidelines on the use of existing languages and the avoidance of their vulnerabilities. In this context, we participate in ISO working groups concerned with the maintenance of the language Ada or with the description of vulnerabilities across the spectrum of programming languages and of guidelines for their avoidance.