1 semantische fehler seminar im grundstudium ws2002/2003: testen und analysieren von software...
TRANSCRIPT
![Page 1: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/1.jpg)
1
Semantische Fehler
Seminar im Grundstudium WS2002/2003:
Testen und Analysieren von Software
Referenten: Bernd Freigang und Dirk Simonis
Betreuer: Prof. em. Dr. H.-J. Hoffmann
![Page 2: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/2.jpg)
2
Agenda
Definition Problemstellung Prozesseinordnung Fehleranalyse Fehlerbehandlung
![Page 3: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/3.jpg)
3
Definition (1)
Typfehler (Datentypen) Überprüfung des Kontrollflusses (goto,
break, etc.) Eindeutigkeitsprüfung (z.B. switch-
Anweisung) Gültigkeitsprüfung (scope)
![Page 4: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/4.jpg)
4
Definition (2)
Auf Namen bezogene Prüfungen (PROCEDURE a; ... END a;)
Prüfung auf mathematische Korrektheit (z.B. Division durch 0)
Ein Compiler heißt streng typisiert hin-sichtlich des Typsystems der Program-miersprache, wenn er garantieren kann, dass keine „semantischen“ Typfehler mehr vorhanden sind.
![Page 5: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/5.jpg)
5
Problemstellung Einige Fehler können erst zur Laufzeit ermittelt
werden Erkennen des Gültigkeitsbereichs anhand des
Syntaxbaums Falsche Ergebnisse, bei Berechnungen Intention des Programmierers nicht bekannt.
– for(int i=0;i<10;i++);system.out.println(‘*‘);
Fehleranalyse, gibt nur Fehlermeldung, aber keine Interpretation.
![Page 6: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/6.jpg)
6
Prozesseinordnung (1)
Während dem Compilieren (Statische Analyse)– Beim Aufbau des Syntaxbaums (Parsen)– In einem gesonderten Durchlauf nach dem Parsen
Während der Ausführung (Dynamische Analyse)– Restliche Prüfung auf semantische Korrektheit,
welche vom Compiler nicht gewährleistet werden kann.
![Page 7: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/7.jpg)
7
Prozesseinordnung (2)
![Page 8: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/8.jpg)
8
Fehleranalyse - statisch
Bezeichnertabelle– Bezeichner <-> Datentyp
Operatortabelle– Datentyp1 und Datentyp2 mit Operator ergibt
Datentyp3
Konvertierungstabelle– Datentyp kann in x-Datentypen konvertiert werden
Syntaxbaum
![Page 9: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/9.jpg)
9
Fehlerbehandlung - statisch
Operator Linker Datentyp
Rechter Datentyp
Ergebnis
+ INTEGER INTEGER INTEGER
- INTEGER INTEGER INTEGER
* INTEGER INTEGER INTEGER
/ INTEGER INTEGER INTEGER
> INTEGER INTEGER BOOLEAN
< INTEGER INTEGER BOOLEAN
== INTEGER INTEGER BOOLEAN
== BOOLEAN BOOLEAN BOOLEAN
Beispielhafte Operatortabelle
![Page 10: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/10.jpg)
10
Fehleranalyse - statisch
Beispiele für Semantikregeln:a) Namen dürfen nur einmal vereinbart
werden.b) Namen, die in Zuweisungen auftreten,
müssen vereinbart werden.c) Es gelte die vorher definierte
Operatortabelle.d) Bei einer Zuweisung müssen der Name auf
der linken Seite, und der Ausdruck auf der rechten Seite vom gleichen Typ sein.
![Page 11: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/11.jpg)
11
Fehleranalyse - statisch
VAR ADAM: INTEGER;
VAR EVA: BOOLEAN;
VAR ADAM: BOOLEAN; (* Zeile 3: Verstoß gegen Regel a *)
VAR WERT: INTEGER;
BEGIN
EVA:=((EVA+WERT)*ADAM) > (WERX-500); (* Zeile 7 *)
(* ^ Verstoß gegen Regel c *)
(* ^ Verstoß gegen Regel b *)
WERT:=EVA; (* Zeile 10: Verstoß gegen Regel d *)
END
![Page 12: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/12.jpg)
12
Fehleranalyse - statischEVA:=((EVA+WERT)*ADAM) > (WERX-500);
Zeile 7: linker Operand von "+" nicht INTEGER !!
Zeile 7: WERX nicht deklariert !!
EVA|EVA|WERT|+|ADAM|*|WERX|500|-|>|:=
![Page 13: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/13.jpg)
13
Fehleranalyse - statischEVA:=((EVA+WERT)*ADAM) > (WERX-500);
Keine Fehlermeldung
Zuweisung korrekt keine Fehlermeldung
EVA|EVA|WERT|+|ADAM|*|WERX|500|-|>|:=
![Page 14: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/14.jpg)
14
Fehleranalyse - statisch
Datentypen werden zu Mengen zusammengefasst.
Konvertierung von x in der Menge A zur Menge B, wenn A eine Teilmenge von B ist.int i = 10;float a= i; Konvertierung möglichint b = a; Warnung/Fehler
![Page 15: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/15.jpg)
15
Fehleranalyse - statisch
Kontrollflussanalyse durch:– Bezeichnertabelle– Bestimmung der konstanten Ziele
Mathematische Korrektheitprüfung nur möglich bei konstanten Werten.– Prüfung aus unzulässige Berechnungen, wie z.B.
Division durch 0.– Java gibt keine Fehlermeldung– C++ (g++-Compiler) gibt Warning
![Page 16: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/16.jpg)
16
Fehleranalyse - dynamisch
Analog zur statischen, nur Auswertung mit aktuellen Speicherwerten und –typen. Z.B:– Array von 0..255. Zugriff über Integer i
• C++ findet solche Fehler nicht, aufgrund seiner Architektur
• Java wirft eine Exception
– Division durch eine Variable– Sprungziele– Eindeutigkeitsprüfung bei switch-Anweisung
![Page 17: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/17.jpg)
17
Fehlerbehandlung
Typkonvertierung Veränderung des Syntaxbaums, z.B.
bei doppelter Deklaration Auswertung des Fehlers mit exakter
Fehlermeldung durch Einordnung in eine Fehlertabelle.
![Page 18: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/18.jpg)
18
Fehlerbehandlung
![Page 19: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/19.jpg)
19
Fehlerbehandlung - Filter
Einordnung des Fehlers in Schweregrad– Warnung– Fehler– Fatal-Error
Auch der Grad der Fehlermeldung wird eingeordnet.– Normal– Wortreich– Sehr WortreichDer unterstützte Grad der Fehlermeldung hängtauch von der Programmiersprache ab.
![Page 20: 1 Semantische Fehler Seminar im Grundstudium WS2002/2003: Testen und Analysieren von Software Referenten: Bernd Freigang und Dirk Simonis Betreuer: Prof](https://reader035.vdokument.com/reader035/viewer/2022070310/55204d6649795902118bbcee/html5/thumbnails/20.jpg)
20
FRAGEN???!