+ All Categories
Home > Documents > Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin...

Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin...

Date post: 05-Apr-2015
Category:
Upload: raginwald-wolfgram
View: 108 times
Download: 0 times
Share this document with a friend
19
Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 6.6.2013: Statische Analyse
Transcript
Page 1: Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 6.6.2013: Statische Analyse.

Qualitätssicherung von Software (SWQS)

Prof. Dr. Holger Schlingloff

Humboldt-Universität zu Berlinund

Fraunhofer FOKUS

6.6.2013: Statische Analyse

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

Folie 2H. Schlingloff, Software-Qualitätssicherung

Fragen zur Wiederholung

• Was ist der Unterschied Software-HW Model Checking?

• Was versteht man unter Zustandsraumexplosion?

• Was kann dagegen tun?

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

Folie 3H. 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

zunehm

ende

Mäch

tig

keit

zunehm

ende

Kom

ple

xit

ät

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

Folie 4H. 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 ?

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

Folie 5H. Schlingloff, Software-Qualitätssicherung

statische Analysewerkzeuge

• Es gibt „viele“http://en.wikipedia.org/wiki/

List_of_tools_for_static_code_analysis

• 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

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

Folie 6H. Schlingloff, Software-Qualitätssicherung

Lint

• Grundidee Programmierer annotiert das Programm Lint prüft ob Annotationen erfüllt sind

• Einfache (schnelle!) Datenflussanalyse!Beispiel:

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

Folie 7H. Schlingloff, Software-Qualitätssicherung

anderes Beispiel: only

•einzige Referenz zu besagtem Objekt

•explizite Abgabe der Besitzrechte am Objekt

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

Folie 8H. Schlingloff, Software-Qualitätssicherung

Buffer Overflow

• Verantwortlich für viele Sicherheitslücken• Annotation der Puffergröße in Splint

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

Folie 9H. 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

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

Folie 10H. Schlingloff, Software-Qualitätssicherung

Bsp.: Cppcheck

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

Folie 11H. Schlingloff, Software-Qualitätssicherung

Bsp.: ESC/Java2

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

Folie 12H. 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

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

Folie 13H. Schlingloff, Software-Qualitätssicherung

Beispiel

•{x{2,4,6}} x=3*x+1 {x{7,13,19}}

AB

C

D

E F

G H

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

Folie 14H. Schlingloff, Software-Qualitätssicherung

allgemeine Vorgehensweise

• ergibt ein (rekursives) Gleichungssystem• Lösung als kleinster Fixpunkt

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

Folie 15H. 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|x≤f(x)}

• wenn f stetig ist, so ist der kleinste Fixpunkt gegeben durch lim fn(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

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

Folie 16H. 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 x2+3x+5 usw. Gleichheit von beliebigen

Mengenausdrücken unentscheidbar!

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

Folie 17H. Schlingloff, Software-Qualitätssicherung

nochmal: Abstraktion

• Beispiel x*y=z (xmod n * ymod n) mod n = zmod 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 = (8mod 3 * 7mod 3) mod 3 = 56mod 3

(8mod 3 * 7mod 3) mod 3 57mod 3 8*757 aber: 8*7 65, obwohl (8mod 3 * 7mod 3) mod 3 = 65mod 3

• „false positives“: Der abstrakte Check findet keinen Fehler, obwohl noch einer enthalten ist (vgl. Test)

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

Folie 18H. 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

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

Folie 19H. Schlingloff, Software-Qualitätssicherung

Wie abstrahieren?

•Restklassen

•Positiv/Null/Negativ (vgl. Grenzwertanalyse)

•Polyeder-Verband Konjunktionen linearer Ungleichungen z.B. 17≤x≤32 & 1≤y<100

•Rechnungen in diesem Verband lassen sich in polynomialer Zeit (schnell!) nachvollziehen z.B. x = x+y ergibt 18≤x≤132


Recommended