Project Details
Projekt Print View

Evolute: Evolution of Software Systems with Extensible Languages and DSLs

Subject Area Software Engineering and Programming Languages
Term from 2015 to 2019
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 270449797
 
Final Report Year 2019

Final Report Abstract

A static analysis is a computer program that systematically analyzes the source code of another program without executing it. Static analyses help compilers to produce efficient code by enabling compiler optimizations. While a compiler translates code from a source language to a target language, it tries to employ compiler optimizations to improve the performance of the generated code. Compiler optimizations are crucial for achieving satisfactory performance. However, the compiler may only apply an optimization if it can guarantee that the optimized code behaves identical to the unoptimized code–they must have the same semantics. That is, a compiler optimization may not change the program behavior except for making it perform better. To determine whether an optimization is applicable to a particular program, compilers rely on static analysis. For example, an optimization of (foo()*0) to 0 is only valid if a static analysis can show that foo() is free of side-effects and therefore can indeed be skipped. It is crucial that the analysis is sound, because only then the compiler can guarantee not to alter program behavior. This project established a new foundation for developing sound static analyses based on reusable analysis components. Since each analysis component only is responsible for one concern of the analyzed program, the development of analysis components is relatively simple. Moreover, analysis components can be tested and verified sound independently, which reduces the complexity significantly. This project provides a thorough theory for analysis components that formally establishes the properties of analysis components. A particular focus of the theory is on how analysis components can be composed to create full-fledged static analyses. The central formal result here is that the composition of sound analysis components is guaranteed to yield a sound static analysis. That is, with this theory it is not necessary anymore to prove soundness for the whole static analysis. Instead, it suffices to verify the contributing analysis components.

Publications

 
 

Additional Information

Textvergrößerung und Kontrastanpassung