Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

3.2.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.

Ähnliche Präsentationen


Präsentation zum Thema: "3.2.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt."—  Präsentation transkript:

1 3.2.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik

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

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

4 Folie 4 H. Schlingloff, Software-Engineering II 3.2.2006 statische Analysewerkzeuge Spezialwerkzeuge zur tiefergehenden Analyse Lint (Splint, PCLint,…) PolySpace Verifier … Unterschiedliche Analysetiefe, unterschiedliche Ergebnisrate Problem: false positives

5 Folie 5 H. Schlingloff, Software-Engineering II 3.2.2006 Lint Grundidee Programmierer annotiert das Programm Lint prüft ob Annotationen erfüllt sind Einfache (schnelle!) Datenflussanalyse! Beispiel:

6 Folie 6 H. Schlingloff, Software-Engineering II 3.2.2006 anderes Beispiel: only einzige Referenz zu besagtem Objekt explizite Abgabe der Besitzrechte am Objekt

7 Folie 7 H. Schlingloff, Software-Engineering II 3.2.2006 Buffer Overflow Verantwortlich für viele Sicherheitslücken Annotation der Puffergröße in Splint

8 Folie 8 H. Schlingloff, Software-Engineering II 3.2.2006 Abstrakte Interpretation Wie beweist man solche Constraints? 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

9 Folie 9 H. Schlingloff, Software-Engineering II 3.2.2006 Beispiel {x {2,4,6}} x=3*x+1 {x {7,13,19}}

10 Folie 10 H. Schlingloff, Software-Engineering II 3.2.2006 allgemeine Vorgehensweise ergibt ein (rekursives) Gleichungssystem Lösung als kleinster Fixpunkt

11 Folie 11 H. Schlingloff, Software-Engineering II 3.2.2006 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

12 Folie 12 H. Schlingloff, Software-Engineering II 3.2.2006 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!

13 Folie 13 H. Schlingloff, Software-Engineering II 3.2.2006 Pause!

14 Folie 14 H. Schlingloff, Software-Engineering II 3.2.2006 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)

15 Folie 15 H. Schlingloff, Software-Engineering II 3.2.2006 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

16 Folie 16 H. Schlingloff, Software-Engineering II 3.2.2006 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

17 Folie 17 H. Schlingloff, Software-Engineering II 3.2.2006 PolySpace C Verifier Analyse des Codes, symbolische Berechnung möglicher Fehler Rechenzeiten im Stunden- und Tagebereich False Negatives müssen manuell betrachtet werden Möglichkeit von False Positives Trotzdem massive Erhöhung der Sicherheit Initialisierung, Zeigerkonsistenz, Nulldivision, Wertebereichs- und Indexüberläufe, Speicherlecks unerreichbarer Code, Endlosschleifen und -rekursionen Problematisch: OO-Programme


Herunterladen ppt "3.2.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt."

Ähnliche Präsentationen


Google-Anzeigen