Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Vorbemerkungen zu Themen #04 - #06 WS 2002/2003 Univ.-Prof. em. Dr. H.-J. Hoffmann."—  Präsentation transkript:

1 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)

2 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

3 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

4 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)

5 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

6 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

7 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

8 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"); } }

9 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

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

11 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)

12 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

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

14 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

15 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)

16 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

17 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

18 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

19 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)

20 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)

21 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

22 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

23 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)

24 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)

25 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

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

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

28 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 ?

29 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

30 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

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

32 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)

33 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)

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

35 Vorbemerkungen zu Themen #04 - #06 35


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

Ähnliche Präsentationen


Google-Anzeigen