Programmanalyse

Statische Programmanalyse

Die statische Programmanalyse erlaubt die Untersuchung von Programmen ohne diese konkret auszuführen. Dabei wird das Programmverhalten auf allen Programmpfaden untersucht—es kann somit kein Programmverhalten übersehen werden. Die statische Analyse bietet eine Vielzahl von Vorteilen: Frühes Auffinden von Schwachstellen möglich, keine Ausführung des Programms notwendig, auch unvollständige Programme analysierbar, uvm. Wir setzen statische Analyse für das Auffinden von Programmierfehlern, Sicherheitslücken und als Basis von Programmoptimierungen ein. GaZAR setzt speziell auf Datenflussanalyse und verwendet PhASAR (https://phasar.org/)/LLVM (https://llvm.org/) als Technologiebasis. Analysen auf dem abstrakten Syntaxbaum eignen sich gerade für den Entwurf und die Entwicklung von Refactoring Werkzeugen. Auch hier bieten wir Ihnen individuelle Lösungen und setzen dabei auf die Infrastruktur des Clang Compiler.

Dynamische Programmanalyse

Die dynamische Analyse erlaubt die Untersuchung von Programmen während der Ausführung. Im Gegensatz zum statischen Gegenstück wird bzw. kann hier jedoch nur eine Teilmenge aller möglichen Ausführungspfade eines Programms untersucht werden. Dynamische Analyse erlaubt das Ermitteln von Laufzeiteigenschaften. Einige ihrer Vorteile stellen die große Flexibilität, die Möglichkeit Ergebnisse einer statischen Analyse zu validieren bzw. Programmeigenschaften aufzudecken, die eine statische Analyse als falsch-negativ deklariert hat, dar. Die dynamische Analyse findet unter anderem Anwendung um gewisse Sicherheitseigenschaften zu garantieren oder um die Performanz von Programmen zu untersuchen. GaZAR bietet die Möglichkeit Ihre Anwendungen nach Ihrem Bedarf zu analysieren und instrumentieren, um so bestimmte Programmeigenschaften zu garantieren oder Einblicke in das konkrete Verhalten Ihrer Programme zu gewinnen.

Anwendungen

Basierend auf den Ergebnissen der Programmanalyse (statisch und/oder dynamisch) sind wir im Anschluss in der Lage Programmierfehler aufzudecken und zu beheben, Sicherheitslücken zu schließen sowie Optimierungen und automatisierte Refactorings durchzuführen. Damit ist es uns möglich Ihre Anwendungen zu härten, die Codequalität zu verbessern und Ihre Anwendung zu Beschleunigen. Je nach Anwendungsfall entwickeln wir auch hybride Analysen, die ‘das Beste’ aus beiden Welten für Sie vereinen.