Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Modellbasierte Software-Entwicklung eingebetteter Systeme

Ähnliche Präsentationen


Präsentation zum Thema: "Modellbasierte Software-Entwicklung eingebetteter Systeme"—  Präsentation transkript:

1 Modellbasierte Software-Entwicklung eingebetteter Systeme
Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik

2 Achtung Headhunting! Sehr geehrter Herr Prof. Dr. Schlingloff,
rechtzeitig zum Semesterende bieten wir Ihren Studierenden jetzt schon unsere exklusiven CareerVenture Recruiting-Veranstaltungen für dem Herbst 2011 an. Diese Events richten sich an Studierende, Absolventen, Doktoranden und Young Professionals aller Studiengänge und bieten die einzigartige Möglichkeit, an nur einem Tag mehrere vorterminierte, 45-minütige Einzelinterviews mit Vertretern der attraktivsten Arbeitgeber Deutschlands zu führen. Für eingeladene Kandidaten ist die Teilnahme kostenlos; die Anfahrt und Übernachtung wird im Rahmen des Sponsoringprogramms finanziell unterstützt.  Die Bewerbung erfolgt online über CareerVenture information technology spring:  07. Oktober 2011 in Berlin Bewerbungsschluss: 14. September.2011 Bisher teilnehmende Unternehmen: Capgemini, Deloitte, Platinion, Senacor Technologies, Deutsche Telekom, u.a.

3 Verifikation was passiert hier?

4 Statische Analyse aus Programmiersprachen bekannt
z.B. Java: Initialisierung von Variablen wird geprüft int k; if (terminates(TMi,i)) k=0; ... ??? Terminierung nicht garantiert; Abstraktion! was finden statische Analysatoren? Range and Bounds Checker Pointer and Storage Allocation Race Conditions

5 Statische Analyse: Compiler
Typkorrektheit Initialisierung von Variablen Programmflussgraph Unerreichbarer Code Unveränderliche Felder Konstante Terme und Bedingungen Feldgrenzenverletzung ? Nullzeiger-Dereferenzierung ? Synchronisationsfehler ?

6 statische Analysewerkzeuge
Spezialwerkzeuge zur tiefergehenden Analyse Lint (Splint, PCLint,…) PolySpace Verifier Unterschiedliche Analysetiefe, unterschiedliche Ergebnisrate Problem: false positives

7 Lint Grundidee Einfache (schnelle!) Datenflussanalyse! Beispiel:
Programmierer annotiert das Programm Lint prüft ob Annotationen erfüllt sind Einfache (schnelle!) Datenflussanalyse! Beispiel:

8 Buffer Overflow Verantwortlich für viele Sicherheitslücken
Annotation der Puffergröße in Splint

9 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

10 Beispiel {x{2,4,6}} x=3*x+1 {x{7,13,19}}

11 allgemeine Vorgehensweise
ergibt ein (rekursives) Gleichungssystem Lösung als kleinster Fixpunkt

12 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!

13 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*757 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)

14 Abstraktion Datenabstraktion eigentlich Rechnen mit Mengen von Werten
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

15 statische Analyse von Modellen
Polyspace 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 Teil von Simulink Verification & Validation

16 Modellprüfung Überprüfung eines formalen Modells des Systems gegenüber einer formalen Spezifikation der Anforderungen vollautomatisch für zustandsendliche Systeme Modellierung: UML State Machines, Stateflow, … Spezifikation: temporale Logik, Erreichbarkeit, Verklemmungsfreiheit, …

17 bekannte Model-Checker
SMV, nuSMV, Cadence SMV (CTL) SPIN, COSPAN (LTL) FDR, μCRL (Prozessalgebra) UPPAAL, Kronos, Rabbit (Realzeit) Reactis, Simulink Verifier (Simulink) HyTech (hybride Systeme) CBMC (bounded Model Checker for C/C++ programs) Java Pathfinder (für Java Bytecode) ...

18 Beispiel (SMV)

19 Vorlesung im WS! Software-Verifikation 1 2 SWS 4 SP
VL Do wöch. RUD25, H. Schlingloff UE Do wöch. RUD25, J. Gerlach Je mehr Software in sicherheitskritischen Systemen eingesetzt wird, umso wichtiger wird es, ihre Korrektheit objektiv nachzuweisen. Beispiele sind Signalisierungsanlagen in der Bahntechnik, Steuercomputer in Flugzeugen oder Regelungen medizinischer Geräte. In den letzten Jahren sind formale Verifikations- und Analysemethoden für solche Software so weit entwickelt worden, dass sie auch für industriell relevante Probleme einsetzbar geworden sind. Der Einsatz dieser Methoden wird von den einschlägigen Normen für hochgradig sicherheitsrelevante Software dringend empfohlen. Dieser Modul gibt einen Überblick über die wichtigsten formalen Methoden zur Software-Verifikation.

20 Zu den Prüfungen Jetzt gibt‘s ein paar streng geheime Tipps...
Prüfungen (nach Möglichkeit) am 5. Sept. Ausweichtermin 26.9. Anmeldung bei Frau Heene Vorbereitungstreffen :00 Raum 4.113 Lösungen mitbringen!

21 Schöne Ferien!


Herunterladen ppt "Modellbasierte Software-Entwicklung eingebetteter Systeme"

Ähnliche Präsentationen


Google-Anzeigen