Statische Programm-Analyse

Statische Programm-Analyse (auch statische Codeanalyse oder SCA) ist die Analyse der Computersoftware, die durchgeführt wird, ohne wirklich Programme durchzuführen, die von dieser Software gebaut sind (bei der Durchführung von Programmen durchgeführte Analyse ist als dynamische Analyse bekannt). In den meisten Fällen wird die Analyse auf einer Version des Quellcodes und in den anderen Fällen eine Form des Gegenstand-Codes durchgeführt. Der Begriff wird gewöhnlich auf die Analyse angewandt, die durch ein automatisiertes Werkzeug mit der menschlichen Analyse durchgeführt ist, werden genannt das Programm-Verstehen, das Programm-Verständnis oder die Coderezension.

Die Kultiviertheit der durch Werkzeuge durchgeführten Analyse ändert sich von denjenigen, die nur das Verhalten von individuellen Erklärungen und Behauptungen denken, zu denjenigen, die den ganzen Quellcode eines Programms in ihrer Analyse einschließen. Der Gebrauch der bei der Analyse erhaltenen Information ändert sich davon, mögliche Codierfehler (z.B, das Scharpie-Werkzeug) zu formellen Methoden hervorzuheben, die mathematisch Eigenschaften über ein gegebenes Programm (z.B, seine Verhaltensmatchs diese seiner Spezifizierung) beweisen.

Es kann behauptet werden, dass Softwaremetrik und Rücktechnik Formen der statischen Analyse sind. Tatsächlich wird das Abstammen der Softwaremetrik und statischen Analyse zusammen, besonders in der Entwicklung von eingebetteten Systemen, durch das Definieren so genannter Softwarequalitätsziele zunehmend aufmarschiert.

Ein wachsender kommerzieller Gebrauch der statischen Analyse ist in der Überprüfung von Eigenschaften der Software, die in sicherheitskritischen Computersystemen und verwendet ist

Auffinden potenziell verwundbaren Codes. Zum Beispiel haben die folgenden Industrien den Gebrauch der statischen Codeanalyse als ein Mittel identifiziert, die Qualität der immer hoch entwickelteren und komplizierten Software zu verbessern:

  1. Medizinische Software: Die amerikanische Bundesbehörde zur Überwachung von Nahrungs- und Arzneimittlel (FDA) hat den Gebrauch der statischen Analyse für medizinische Geräte identifiziert.
  2. Kernsoftware: Im Vereinigten Königreich empfiehlt Gesundheits- und Sicherheitsmanager den Gebrauch der statischen Analyse auf Reaktorschutzsysteme.

Eine neue Studie durch VDC Forschungsberichte, dass 28.7 % der eingebetteten Softwareingenieure zurzeit Gebrauch statische Analyse-Werkzeuge und 39.7 % überblickt haben, nimmt an, sie innerhalb von 2 Jahren zu verwenden.

In der Anwendungssicherheitsindustrie wird auch Name von Static Application Security Testing (SAST) verwendet.

Werkzeuge

Formelle Methoden

Formelle Methoden sind der auf die Analyse der Software angewandte Begriff (und Computerhardware), wessen Ergebnisse rein durch den Gebrauch von strengen mathematischen Methoden erhalten werden. Die mathematischen verwendeten Techniken schließen denotational Semantik, axiomatische Semantik, betriebliche Semantik und abstrakte Interpretation ein.

Durch die aufrichtige Verminderung zum stockenden Problem ist es möglich zu beweisen, dass (für jeden Turing ganze Sprache) Entdeckung aller möglichen Laufzeitfehler in einem willkürlichen Programm (oder mehr allgemein jede Art der Übertretung einer Spezifizierung auf dem Endresultat eines Programms) unentscheidbar ist: Es gibt keine mechanische Methode, die immer ehrlich antworten kann, ob ein gegebenes Programm kann oder Laufzeitfehler nicht ausstellen kann. Diese Ergebnis-Daten von den Arbeiten der Kirche, Gödel und Turing in den 1930er Jahren (sieh das stockende Problem und den Lehrsatz von Rice). Als mit vielen unentscheidbaren Fragen kann man noch versuchen, nützliche ungefähre Lösungen zu geben.

Einige der Durchführungstechniken der formellen statischen Analyse schließen ein:

  • Musterüberprüfung denkt Systeme, die Endzustand haben oder auf den Endzustand durch die Abstraktion reduziert werden können;
  • Datenfluss-Analyse ist eine Gitter-basierte Technik, um Information über den möglichen Satz von Werten zu sammeln;
  • Abstrakte Interpretation modelliert die Wirkung, die jede Behauptung auf dem Staat einer abstrakten Maschine hat (d. h. es 'führt' die Software 'durch', die auf den mathematischen Eigenschaften jeder Erklärung und Behauptung gestützt ist). Diese abstrakte Maschine kommt den Handlungsweisen des Systems näher über: Das abstrakte System wird so einfacher gemacht, auf Kosten der Unvollständigkeit zu analysieren (nicht jedes des ursprünglichen Systems wahre Eigentum trifft auf das abstrakte System zu). Wenn richtig getan, aber ist abstrakte Interpretation gesund (jedes des abstrakten Systems wahre Eigentum kann zu einem wahren Eigentum des ursprünglichen Systems kartografisch dargestellt werden). Die Frama-C-Wertanalyse Steck- und Polyraum-verlässt sich schwer auf die abstrakte Interpretation.
  • Der Gebrauch von Behauptungen im Programm, codiert wie zuerst angedeutet, durch die Logik von Hoare. Es gibt Werkzeug-Unterstützung für einige Programmiersprachen (z.B, die FUNKEN-Programmiersprache (eine Teilmenge von Ada) und Java, Sprache — JML Modellierend —, ESC/Java und ESC/Java2, Frama-c WP (schwächste Vorbedingung) Steck-für die c Sprache verwendend, die mit ACSL (ANSI/ISO C Spezifizierungssprache)) erweitert ist.

Siehe auch

  • Programm-Analyse (Informatik)
  • Dynamische Programm-Analyse
  • Gestalt-Analyse (Software)
  • Formelle Semantik von Programmiersprachen
  • Formelle Überprüfung
  • Software, die prüft
  • Dokumentationsgenerator
  • Liste von Werkzeugen für die statische Codeanalyse

Bibliografie

Links


Sake / Samuel Mudd
Impressum & Datenschutz