Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 6.6.2013: Statische Analyse.

Ähnliche Präsentationen


Präsentation zum Thema: "Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 6.6.2013: Statische Analyse."—  Präsentation transkript:

1 Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS : Statische Analyse

2 Folie 2 H. Schlingloff, Software-Qualitätssicherung Fragen zur Wiederholung Was ist der Unterschied Software-HW Model Checking? Was versteht man unter Zustandsraumexplosion? Was kann dagegen tun?

3 Folie 3 H. Schlingloff, Software-Qualitätssicherung statische Analyse ohne semantische Konsequenzen Coding Rules Checker, Linker, … mit semantischer Bedeutung Variableninitialisierung Range and Bounds Checker Pointer and Storage Allocation Race Condition Verifikationswerkzeuge Modellprüfer, Äquivalenzprüfung interaktive Beweisverfahren zunehmende Mächtigkeit zunehmende Komplexität

4 Folie 4 H. Schlingloff, Software-Qualitätssicherung Statische Analyse: Compiler Typkorrektheit Initialisierung von Variablen Programmflussgraph Unerreichbarer Code Unveränderliche Felder Konstante Terme und Bedingungen Feldgrenzenverletzung ? Nullzeiger-Dereferenzierung ? Synchronisationsfehler ?

5 Folie 5 H. Schlingloff, Software-Qualitätssicherung statische Analysewerkzeuge Es gibt viele einfache Tools, in Compiler oder IDE integriert Spezialwerkzeuge zur tiefergehenden Analyse Lint (Splint, PCLint,…) ESC/Java2 PolySpace Verifier … Unterschiedliche Analysetiefe, unterschiedliche Ergebnisrate Hauptproblem: false positives

6 Folie 6 H. Schlingloff, Software-Qualitätssicherung Lint Grundidee Programmierer annotiert das Programm Lint prüft ob Annotationen erfüllt sind Einfache (schnelle!) Datenflussanalyse! Beispiel:

7 Folie 7 H. Schlingloff, Software-Qualitätssicherung anderes Beispiel: only einzige Referenz zu besagtem Objekt explizite Abgabe der Besitzrechte am Objekt

8 Folie 8 H. Schlingloff, Software-Qualitätssicherung Buffer Overflow Verantwortlich für viele Sicherheitslücken Annotation der Puffergröße in Splint

9 Folie 9 H. Schlingloff, Software-Qualitätssicherung Probleme bei Abstraktionen falsche Positive Überapproximation des Programms Bsp.: if (p&&q)... if (p)... mangelnde Korrektheit: Fehler die evtl. keine sind erhöhter QS-Aufwand falsche Negative Unterapproximation des Programms Bsp.: if (p)... if (p&&q)... mangelnde Vollständigkeit: manche Fehler werden nicht erkannt trügerische Sicherheit

10 Folie 10 H. Schlingloff, Software-Qualitätssicherung Bsp.: Cppcheck

11 Folie 11 H. Schlingloff, Software-Qualitätssicherung Bsp.: ESC/Java2

12 Folie 12 H. Schlingloff, Software-Qualitätssicherung Abstrakte Interpretation Wie findet man solche Probleme? Ausführung des Programms mit symbolischen Werten (bzw. Mengen von Werten) Berechnung der möglichen Werte jeder Variablen an jeder Programmstelle (collecting semantics) Was kann man daraus ableiten? Initialisierungen, Überlauf, Division durch Null, Indexüberschreitung, … Keine Aussage über Terminierung oder korrekte Funktionalität

13 Folie 13 H. Schlingloff, Software-Qualitätssicherung Beispiel {x {2,4,6}} x=3*x+1 {x {7,13,19}} A B C D EF G H

14 Folie 14 H. Schlingloff, Software-Qualitätssicherung allgemeine Vorgehensweise ergibt ein (rekursives) Gleichungssystem Lösung als kleinster Fixpunkt

15 Folie 15 H. Schlingloff, Software-Qualitätssicherung Fixpunktsatz von Knaster und Tarski jede monotone Funktion f in einem vollständigen Verband hat einen kleinsten Fixpunkt, nämlich inf{x|xf(x)} wenn f stetig ist, so ist der kleinste Fixpunkt gegeben durch lim f n (0) Für die statische Analyse bedeutet das starte mit allen Gleichungswerten undefiniert berechne den Wert der (n+1)-ten Iteration einer Gleichung aus den Werten der n-ten Iteration solange, bis sich nichts mehr ändert

16 Folie 16 H. Schlingloff, Software-Qualitätssicherung Probleme Terminierung des Verfahrens ist nicht garantiert! (Limesbildung über transfinite Ordinalzahlen) Rechnen mit symbolischen Zustandsmengen z.B. Menge der Quadratzahlen, symbolische Ausdrücke wie x 2 +3x+5 usw. Gleichheit von beliebigen Mengenausdrücken unentscheidbar!

17 Folie 17 H. Schlingloff, Software-Qualitätssicherung nochmal: Abstraktion Beispiel x*y=z (x mod n * y mod n ) mod n = z mod n mod n ist eine Abstraktion, die einen unendlichen Wertebereich auf {0,1,...,n-1} abbildet um zu prüfen, ob eine Multiplikation korrekt ausgeführt wurde, kann man die Abstraktion prüfen 8*7=56 2 * 1 = (8 mod 3 * 7 mod 3 ) mod 3 = 56 mod 3 (8 mod 3 * 7 mod 3 ) mod 3 57 mod 3 8*7 57 aber: 8*7 65, obwohl (8 mod 3 * 7 mod 3 ) mod 3 = 65 mod 3 false positives: Der abstrakte Check findet keinen Fehler, obwohl noch einer enthalten ist (vgl. Test)

18 Folie 18 H. Schlingloff, Software-Qualitätssicherung Datenabstraktion x x mod 3 x*y ((x mod 3) * (y mod 3) mod 3) eigentlich Rechnen mit Mengen von Werten konkreter Datenraum wird partitioniert in Mengen von Restklassen 0, 1, 2 konkrete Operationen werden abgebildet auf abstrakte; Rechnen mit Repräsentanten Eigenschaftserhaltung C erfüllt P A erfüllt P A verletzt P C verletzt P

19 Folie 19 H. Schlingloff, Software-Qualitätssicherung Wie abstrahieren? Restklassen Positiv/Null/Negativ (vgl. Grenzwertanalyse) Polyeder-Verband Konjunktionen linearer Ungleichungen z.B. 17x32 & 1y<100 Rechnungen in diesem Verband lassen sich in polynomialer Zeit (schnell!) nachvollziehen z.B. x = x+y ergibt 18x132


Herunterladen ppt "Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 6.6.2013: Statische Analyse."

Ähnliche Präsentationen


Google-Anzeigen