Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Vorbemerkungen zu Themen #04 - #06 WS 2002/2003 Univ.-Prof. em. Dr. H.-J. Hoffmann.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Sortieren I - Bubblesort -
On the Criteria to Be Used in Decomposing Systems into Modules
Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
B-Bäume.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Imperative Programmierung -Entwicklungswerkzeuge
Kapitel 4 Syntaktische Analyse: LR Parsing.
Parser generieren Yet Another Compiler – Compiler YACC.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Beispiele für Ausdrucksalgebren
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Vorbemerkungen zu Themen #04 - #06 WS 2002/2003 Univ.-Prof. em. Dr. H.-J. Hoffmann.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Von der Sprache zum Programm
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Syntaxanalyse Bottom-Up und LR(0)
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Auslegung eines Vorschubantriebes
Binäre Bäume Louis Moret und Reto Huber, 5. 11
2.4 Rekursion Klassifikation und Beispiele
Unterprogramme in JAVA
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Analyse der Laufzeit von Algorithmen
Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
 Präsentation transkript:

Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Vorbemerkungen zu Themen #04 - #06 WS 2002/2003 Univ.-Prof. em. Dr. H.-J. Hoffmann (Stand 14. November 2002)

Vorbemerkungen zu Themen #04 - #06 2 Was wird angesprochen? (I) Wo treten Zeichenreihen auf ? Übersetzer Interpreter / Gliederung Zeichenreihen als Eingabe Grundzeichen und Phrasenzeichen Baumstrukturen als Ausgabe Endliche Automaten Keller zur Aufnahme von Zeichen Strategien der Zerlegung von Zeichenreihen: - zielgericht (top-down) - rückschauend (bottom-up) Semantische Analyse als vorgezogene Interpretation

Vorbemerkungen zu Themen #04 - #06 3 Was wird angesprochen ? (II) Formale Sprachen - ich lasse hier die Formalismen weg, siehe Literaturangaben - Formale Spezifikation und Beschreibung der Sprachen - Grammatiken, siehe Literaturangaben - Automaten Formale Spezifikation und Beschreibung der Verhaltensweise der Automaten - Zerlegungsalgorithmen, siehe Literaturangaben - Diese Vorbemerkungen versuchen, plausibel zu machen, was zur Bearbeitung der Themen #03 - #06 bekannt und verstanden sein sollte

Vorbemerkungen zu Themen #04 - #06 4 Übersetzer Interpreter (I) Analyse / Front end Synthese (Generator) / Back end \_________________/ Übersetzer Ausführende Maschinerie (z.B. Virtual machine) Interpreter Zeichenreihe Baum Befehle Ergebnisse Daten (z.B. Byte code)

Vorbemerkungen zu Themen #04 - #06 5 Übersetzer Interpreter (II) (Sonderfall) Analyse / Front end Synthese (generator) / Back end \_________________/ Übersetzer Ausführende Maschinerie Interpreter Zeichenreihe Baum Befehle Ergebnisse u.U. Daten

Vorbemerkungen zu Themen #04 - #06 6 Gliederung (idealisiert, auf Analyse bezogen) Zeichen- Bezeichner- syntakt. semant.- Gütever- analyse analyse Analyse Analyse besserung sequentiell, unabhängig Zwischensprachen synchronisiert als (orientiert an) Verbraucher/Produzent/Verbraucher, Baumstruktur verschränkt / Koroutinen

Vorbemerkungen zu Themen #04 - #06 7 Zeichenreihen als Eingabe ? public class hello { public static void main (String args []) { System.out.println ("Hello World"); } }...static¤void¤main¤(String¤args¤[])¤{|¤¤¤¤¤¤System.out.prin... Leerzeichen Zeilenwechsel Textende

Vorbemerkungen zu Themen #04 - #06 8 Was ist mit Zeichenreihen zu tun ? Entfernen typographischer Zeichen (z.B. Leerzeichen, Zeilenwechsel - nicht Textende ! -) Abgrenzen der Token Schlüsselworttoken Operatortoken Bezeichnertoken (einschl. Konstantentoken) public class hello { public static void main (String args []) { System.out.println ("Hello World"); } }

Vorbemerkungen zu Themen #04 - #06 9 Grundzeichen und Phrasenzeichen Grundzeichen - diese finden Sie auf der Tastatur - Phrasenzeichen - repräsentieren während der Analyse eine zusammengefaßte Reihe von Grundzeichen und/oder Grund- und Phrasenzeichen - Zwei Beispiele: public class hello { public static void main ( ) { ( ) ; } } class-end public class hello class-end

Vorbemerkungen zu Themen #04 - #06 10 Baumstrukturen (als Ausgabe) public class hello class-end Ein ziemlich willkürliches Beispiel (in einer Zwischen- stufe)

Vorbemerkungen zu Themen #04 - #06 11 Endliche Automaten (I) (für Zeichenanayse) Grund- zustand ? Buchstaben Operator Ziffer Bezeichner bzw. Wortsymbol Bezeichner ? Ziffer Ziffer ? Ganze Zahl Gleitpunktzahl ? Ziffer ? ? ? Regeln der Form: alter Zustand anstehendes Zeichen ==> neuer Zustand Fehlerbehandlung ? (siehe Referat #04)

Vorbemerkungen zu Themen #04 - #06 12 Endliche Automaten (II) (für Zeichenanalyse) Siehe Beispiel (hier nicht gezeigt) Bedeutung des Trennzeichens der Token (häufig das Leerzeichen !) Leistungsfähigkeit der Analyse ? (keine geschachtelten / geklammerten Textstrukturen, warum ?) Tabellensteuerung

Vorbemerkungen zu Themen #04 - #06 13 Bezeichneranalyse Im Seminar nicht behandelt !

Vorbemerkungen zu Themen #04 - #06 14 Keller zur Aufnahme von Zeichen Wie sind geschachtelte / geklammerte Strukturen zu analysieren ? Früheres (von links her) Auftreten bestimmter Zeichen (z.B. von Klammern) muß hinsichtlich Zahl und Stel- lung in die Analyseentscheidungen eingehen können Also müssen früher aufgetretene Zeichen (vorüber- gehend) gespeichert werden können Kellerung dieser Zeichen Grundlage der syntaktischen Analyse

Vorbemerkungen zu Themen #04 - #06 15 Strategien der syntaktischen Analyse - der Dijkstrasche Verschiebebahnhof - Keller ?1?1 Es entsteht Postfix-Notation xxxx xx? Was muß hier stehen ? - Entscheidungen bei ? 1 und ? 2 - Welche Zeichen werden ge- kellert ? ?2?2 yyyy yy zzz...zzzz...z Sind hier schließlich wieder alle Zeichen ? Keine Phrasenzeichen ! Leserichtung (Anfang der) Ausgabe (Ende der) Eingabe Fehlerbehandlung ? (siehe Referat #05)

Vorbemerkungen zu Themen #04 - #06 16 Beispiel zur Postfixnotation A := B + C * ( D [ I + 1 ] - E ) / F ( X, Y + Z ) end A B C D I 1 + [] 1 E - * F X Y Z + f 2 / + := end indizierte Funktions- Variable Aufruf (ein Index) (zwei Parameter) Welche Zeichen fehlen in der Ausgabe, welche könnten dazukommen ? Eingabe (Token nach Zeichenanalyse) Ausgabe neue Operatoren

Vorbemerkungen zu Themen #04 - #06 17 Strategien der syntaktischen Analyse - zielgerichtete Analyse (top-down) (I) - Keller mit noch nicht erfüllten Zielen, hier ? --> Vergleichen und Wegwerfen des erfüll- ten Ziels (falls Grund- zeichen) ? xxxx xxxxxxx xx zzz...zzzz...z Leserichtung (nicht mehr benötigter Anfang der) Eingabe (Ende der) Eingabe Zur Reduktion anstehen- de, das Ende repräsen- tierende Zeichenreihe aus Grund- und Phrasenzei- chen Leserichtung

Vorbemerkungen zu Themen #04 - #06 18 Strategien der syntaktischen Analyse - zielgerichtete Analyse (top-down) (II) - Zur Reduktion anstehen- de, das Ende repräsen- tierende Zeichenreihe aus Grund- und Phrasenzei- chen Keller mit Phrasenzei- chen z an oberster Stelle, hier ? --> Absetzen neuer Ziele z 1 z 2... z n ? xxxx xxxxxxx xx zz::zzzz::zz Leserichtung (nicht mehr benötigter Anfang der) Eingabe z1z2:znz1z2:zn (Ende der) Eingabe Leserichtung

Vorbemerkungen zu Themen #04 - #06 19 Strategien der syntaktischen Analyse - zielgerichtete Analyse (top-down) (III) - Oberstes Ziel, als erstes auf dem Keller abgelegt:. Erfolg, wenn am Schluß Keller leer Aus den Produktionen für ein sich an oberster Stelle des Keller befindliches Ziel z wird durch Vergleich links an erster Stelle der Produktion mit anstehendem (Grund-)Zeichen r 1 entschieden, welche Gabel (d.h. rechte Seite der Produktion z ::= r 1... r n ) erwartet wird, und diese dann im Keller abgesetzt (stark vereinfacht). Lesen der Gabel, schließlich Ziel z erfüllt. Üblicherweise k = 1 (Anzahl der auf der Eingabe zur Entscheidungsfindung betrachteten Zeichen) (siehe später)

Vorbemerkungen zu Themen #04 - #06 20 Strategien der syntaktischen Analyse - zielgerichtete Analyse (top-down) (IV) - Zeichen (Ziele bzw. Zwischenziele) in Gabeln im Keller werden bei Übereinstimmung von oben nach unten entfernt Ausgabe erfolgt bei einer Reduktion Aufbau des Zerlegungsbaums Dieser entsteht ausgehend von der Wurzel (Knoten ) Realisierung durch rekursiven Abstieg (recursive descent, in Anlehnung an endliche Automaten) Fehlerbehandlung ? (siehe Referat #04)

Vorbemerkungen zu Themen #04 - #06 21 Strategien der syntaktischen Analyse - rückschauende Analyse (bottom-up) (I) - Eine reduzierte / den Anfang reprä- sentierende Zeichen- reihe aus Grund- und Phrasenzeichen ? xxxx xxxxxxx xx zzz...zzzz...z Leserichtung (Ende der) Eingabe Keller mit bis jetzt noch nicht voll gelesenen Gabeln, hier ? --> Weiterlesen (nicht mehr benötigter Anfang der) Eingabe

Vorbemerkungen zu Themen #04 - #06 22 Strategien der syntaktischen Analyse - rückschauende Analyse (bottom-up) (II) - reduzierte / den An- fang repräsentierende Zeichenreihe aus Grund- und Phrasenzeichen Keller an oberster Stel- le mit eingelesener Gabel, hier ? --> Reduzieren und Ab- setzen von z (ein Phrasen- zeichen !) als Repräsentant der eingelesenen Gabel ! ) ? xxxx xxxxxxx xx zzz...zzzz...z Leserichtung (nicht mehr benötigter Anfang der) Eingabe z (Ende der) Eingabe

Vorbemerkungen zu Themen #04 - #06 23 Strategien der syntaktischen Analyse - rückschauende Analyse (bottom-up) (III) - Keller anfänglich leer. Erfolg, wenn am Schluß allein im Keller Reduziert wird, wenn eine vollständige Gabel gelesen ist - d.h. Entscheidung über Zerlegung zum spätmöglichsten Zeitpunkt ! - (stark vereinfacht). shift /reduce Üblicherweise k = 1 (Anzahl der auf der Eingabe zur Entschei- dungsfindung betrachteten Zeichen) (siehe früher)

Vorbemerkungen zu Themen #04 - #06 24 Strategien der syntaktischen Analyse - rückschauende Analyse (bottom-up) (IV) - Ausgabe erfolgt bei einer Reduktion Aufbau des Zerlegungsbaums Dieser entsteht ausgehend von (vielen) Zweigen, die schließlich zur Wurzel (Knoten ) zusam- mengefaßt sind Verschränkung mit semantischer Analyse (für syntheti- sierte Attribute leicht) möglich Realisierung durch LR-Analyse (in Anlehnung an endliche Automaten) Fehlerbehandlung ? (siehe Referat #05)

Vorbemerkungen zu Themen #04 - #06 25 Typische sprachspezifische Aufgaben der seman- tischen Analyse: -Auflösung überladener Operationen (u.ä.) -Typüberprüfung -Umstellungen zur Güteverbesserung (u.ä.) -Speicherabbildung -Adressierung lokales, an Reihung in ursprünglich vorgelegtem Text orientiertes Vorgehen am Zerlegungsbaum orientiert Erweiterung um maschinenspezifische Aufgaben Als Einstieg gezeigt an Interpretation von Postfix- Notation Semantische Analyse als vorgezogene Interpretation

Vorbemerkungen zu Themen #04 - #06 26 Strategien der syntaktischen Analyse - der Dijkstrasche Verschiebebahnhof - (Ende der) Eingabe (Anfang der) Ausgabe Operatorkeller ?1?1 Es entsteht Postfix-Notation xxxx xx? - Entscheidungen bei ? 1 und ? 2 - Welche Zeichen werden ge- kellert ? ?2?2 yyyy yy zzz...zzzz...z Leserichtung Zur Erinnerung !

Vorbemerkungen zu Themen #04 - #06 27 Beispiel zur Postfixnotation A := B + C * ( D [ I + 1 ] - E ) / F ( X, Y + Z ) end A B C D I 1 + [] 1 E - * F X Y Z + f 2 / + := end indizierte Funktions- Variable Aufruf (ein Index) (zwei Parameter) Eingabe (Token nach Zeichenanalyse) Ausgabe neue Operatoren Zur Erinnerung !

Vorbemerkungen zu Themen #04 - #06 28 (Ende der) Eingabe Operandenkeller p p p p p p p p p p p p p ? ooo::ooooo::oo Leserichtung Semantische Analyse als vorgezogene Interpretation - gezeigt an Interpretation von Postfix-Notation (I) - generierte Befehle ? Übernehmen von Operanden, solange bis Operator auftritt, dann ? Operator + zugehörige Operanden entnommen ?

Vorbemerkungen zu Themen #04 - #06 29 A B C D I 1 + [] 1 E - * F X Y Z + f 2 / + := end Eingabe Semantische Analyse als vorgezogene Interpretation - gezeigt an Interpretation von Postfix-Notation (II) - Ausgabe I + 1 ==> H1 D [ H1 ] ==> H2 H2 - E ==> H3 C * H3 ==> H4 Y + Z ==> H5 float ( H5 ) ==> H6 F ( X, H6 ) ==> H7 H4 / H7 ==> H8 B + H8 ==> H9 H9 ==> A Irrtum vorbehalten ! Typüberprüfung beim jeweiligen Generieren ! Einfach gehaltene Speicherabbildung

Vorbemerkungen zu Themen #04 - #06 30 A B C D I 1 + [] 1 E - * F X Y Z + f 2 / + := end Eingabe Semantische Analyse als vorgezogene Interpretation - gezeigt an Interpretation von Postfix-Notation (III) - Ausgabe I + 1 ==> H1 D [ H1 ] ==> H1 H1 - E ==> H1 C * H1 ==> H1 Y + Z ==> H2 float ( H2 ) ==> H2 F ( X, H2 ) ==> H2 H1 / H2 ==> H1 B + H1 ==> A Irrtum vorbehalten ! Typüberprüfung beim jeweiligen Generieren ! Verbesserte Speicherabbildung

Vorbemerkungen zu Themen #04 - #06 31 Semantische Analyse als vorgezogene Interpretation - gezeigt an Interpretation von Postfix-Notation (IV) - I + 1 ==> H1 D [ H1 ] ==> H1 H1 - E ==> H1 C * H1 ==> H1 Y + Z ==> H2 float ( H2 ) ==> H2 F ( X, H2 ) ==> H2 H1 / H2 ==> H1 B + H1 ==> A Irrtum vorbehalten ! Befehle könnten sofort ausge- führt werden; keine Befehls- generierung erforderlich Operandenkeller wird zur Lauf- zeit ein Verbesserte Speicherabbildung Wertekeller !

Vorbemerkungen zu Themen #04 - #06 32 Attributierung an den Knoten der Zerlegungsbaums ==> attributierter Baum Beispiele von Attributen: - Typ des durch den Knoten repräsentierten Laufzeit- werts - Speicherbedarf dieses Werts - Speicheradresse dieses Werts - In Programmschleifen Aussage über Art der Wert- änderung (z.B. Eignung für lineare Adreßfortschaltung) ererbte und synthetisierte Attribute Berechnungsregeln für Attribute Baumdurchwanderung zur Berechnung der Attribute / vorab bestimmtes Attributberechnungsprogramm Semantische Analyse (I)

Vorbemerkungen zu Themen #04 - #06 33 Attributierung an den Knoten der Zerlegungsbaums ==> attributierter Baum Beispiele von Attributen: - Typ des durch den Knoten repräsentierten Laufzeit- werts - Speicherbedarf dieses Werts - Speicheradresse dieses Werts - In Programmschleifen Aussage über Art der Wert- änderung (z.B. Eignung für lineare Adreßfortschaltung) Berechnungsregeln für Attribute Baumdurchwanderung zur Berechnung der Attribute / vorab bestimmtes Attributberechnungsprogramm Semantische Analyse (II) Fehlerbehandlung ? (siehe Referat #06)

Vorbemerkungen zu Themen #04 - #06 34 ENDE der Vorbemerkungen Fragen ?

Vorbemerkungen zu Themen #04 - #06 35