Beim Testen von Software und für die Measurement Based Timing Analysis wird oft das Einhalten bestimmter Code Coverage Kriterien verlangt. Vorzugsweise werden die Testdaten aus einer höheren Repräsentationsform des getesteten Programms abgeleitet, beispielsweise aus dem Source Code. Moderne Compiler nehmen beim Erzeugen des Maschinencodes jedoch zahlreiche Optimierungen vor, um die Eigenschaften der verwendeten Zielplattform, beispielsweise durch Parallelverarbeitung oder hierarchisch organisierte Zwischenspeicher (Cache), so gut wie möglich auszunutzen. Solche Optimierungen können jedoch die strukturelle Code Coverage zerstören, die in der höheren Repräsentationsform bereits erzielt wurde.<br />Eine Möglichkeit dieses Problem zu umgehen ist, Code Optimierungen vorab zu analysieren, ob sie eine bestimmte Art der strukturellen Code Coverage bewahren oder nicht. So kann für jede Code Optimierung ein Coverage Profil erstellt werden.<br />Ein Compiler kann die vorhandenen Profile dann benutzen, um entweder beim Übersetzungsvorgang nur Optimierungen vorzunehmen, welche die entsprechende Code Coverage erhalten, oder um eine Warnung auszugeben falls eine angewendete Optimierung die Erhaltung einer bestimmten Code Coverage nicht sicherstellt.<br />Diese Diplomarbeit entwickelt ein System zur automatischen Analyse von Code Transformationen in Hinblick auf die Erhaltung struktureller Code Coverage Kriterien. Die Analyse basiert auf einer bereits vorhandenen, formalen Theorie der Code Coverage Erhaltung.<br />Der erste Teil der Arbeit führt eine formale Beschreibung von Code-Transformationen ein. Der zweite Teil überträgt den zuvor eingeführten Formalismus in ein mathematisches Software-System, um eine automatische Analyse von Code Transformationen bezüglich der Erhaltung bestimmter Arten von Code Coverage durchzuführen und daraus ein Coverage Profil zu erstellen.<br />Die Anwendbarkeit des Lösungsansatzes wird schließlich im dritten Teil anhand mehrerer Analyse Beispiele gezeigt.<br />
de
For software testing or measurement based timing analysis it is often required to achieve a particular structural code-coverage criteria. It is beneficial to derive the test-data at a higher-level representation of the tested program, like source code for instance.<br />During generation of machine code modern compilers apply optimizations to make best use of the target computer platform, for example, parallel execution or memory hierarchies. But these optimizations can destroy the structural code-coverage being achieved in the higher-level representation of the program. A possibility to face this problem is to investigate in advance whether optimizing code transformations preserve a structural code-coverage of interest or not, and to summarize this information in a coverage profile for each transformation. A collection of such profiles can then be used to adjust a compiler to apply only those optimizations that preserve the intended structural code coverage or to emit warnings, whenever a code transformation does not ensure the preservation of a given structural code coverage. This thesis develops a system for automatic analysis of code-transformations with respect to preservation of structural code coverage. The analysis is based on an existing formal coverage preservation theory. The first part of this work establishes a formal description of code-transformations. In the second part, the formalism is transposed to a mathematical software system for automatic analysis of code transformations with respect to their ability for preserving certain kinds of code coverage, and to generate a coverage profile. Finally, a certain number of code optimizations are provided in the third part to demonstrate the feasibility of the approach.<br />