Statische Analysen können dahingehend unterschieden werden, ob sie die Beschreibung des zu analy-sierenden Systems interpretieren oder nicht.
Interpretierende Analysen dienen der Ableitung von Aussagen über das (erwartete) Verhalten oder die produzierten Daten, wenn die Software-Beschreibung oder eine Verfeinerung davon durch einen Rechner ausgeführt wird. Untersuchungsgegenstand ist hier nicht die Beschreibung an sich, sondern das beschriebene Verhalten.
Strukturelle Analysen dienen der Schaffung von Transparenz über die Beschreibung an sich, weil diese zu umfangreich oder zu konkret ist oder nicht die gewünschte Perspektive vermittelt. Solche Analysen sollen die Struktur des Systems aufdecken.
Strukturelle Analysen können weiter unterschieden werden hinsichtlich
Art der verwendeten Informationen: lexikalisch, metrisch oder relational (siehe auch Struktursuche)
Die Unterscheidung in interpretierende und strukturelle Analysen spiegelt zugleich den potenziellen Verwendungszweck der jeweiligen Analyseform in der Qualitätssicherung wider: interpretierende (und dynamische) Analysen dienen dazu, die Funktionalität der Software zu untersuchen und zu prüfen. Sie finden daher bei Maßnahmen Verwendung, welche die externe Qualität (siehe: Interne und externe Qualität) fokussieren.
Dagegen dienen strukturelle Analysen eher der Unterstützung des Software-Entwicklers, welcher sich mit Beschreibungen der Software auseinandersetzt. Sie werden daher bei Maßnahmen eingesetzt, welche die interne Qualität im Blickfeld haben (siehe: Interne und externe Qualität).
Löwe et. al machen in [ LELP02 ] ebenfalls einen Versuch, die Vielzahl an Analyseformen zu klassifizieren. Sie unterscheiden sie zwischen grundlegenden („low level“) und höheren („high-level“) Analysen sowie zwischen Informationsarten, welche die Analysen generieren (struktureller Information, Laufzeitinformation sowie auf das Verhalten bezogene Information).
Eine Analyse heißt „grundlegend“, falls sie unmittelbar auf dem Quellcode ansetzt. Sie dient dem Zweck, die üblicherweise in Textform vorliegende Programmbeschreibung in ihre Bestandteile zu zerlegen und in eine Repräsentation zu überführen, die für weitere Analysen zugreifbar ist. Grundlegende Analysen sind in der Regel umkehrbar. Typische grundlegende Analysen sind die Lexikalische und syntaktische Analyse. Typische Darstellungsformen der Ergebnisse dieser Analysen sind abstrakte Syntaxbäume und Kontrollflussgraphen.
Eine Analyse heißt „höher“, falls sie darauf abzielt, eine Sichtweise zu erzeugen, die abstrakter als der Quellcode ist. Höhere Analysen setzen auf den Ergebnissen vorhergehender grundlegender Analysen auf. Sie verwerfen Informationen und sind daher in der Regel nicht umkehrbar. Typische Vertreter dieser Art sind die Struktursuche oder die (Re-)Modularisierungstechniken. Typische Darstellungsformen für Ergebnisse dieser Analysen sind grobgranulare System-Modelle oder UML-Diagramme.
Strukturelle Information bezieht sich auf den Aufbau einer Beschreibung von Software. Auf das Verhalten orientierte Information ist das Ergebnis von z.B. Datenflussbetrachtungen und gestattet genauere Schlussfolgerungen über tatsächliche Datentypen, Kontrollflüsse etc. Laufzeitinformation entsteht durch Beobachtung der Programmausführung.