1 / 35

Univ.-Prof. em. Dr. H.-J. Hoffmann (Stand 14. November 2002)

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). Was wird angesprochen? (I). Wo treten Zeichenreihen auf ? Übersetzer <==> Interpreter / Gliederung

Télécharger la présentation

Univ.-Prof. em. Dr. H.-J. Hoffmann (Stand 14. November 2002)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. Daten Übersetzer <==> Interpreter (I) Zeichenreihe Baum “Befehle” Ergebnisse (z.B.Bytecode) Analyse /Front end Synthese (Generator) / Back end “AusführendeMaschinerie”(z.B. Virtual machine) \_________________/Übersetzer Interpreter Vorbemerkungen zu Themen #04 - #06

  5. Daten Übersetzer <==> Interpreter (II)(Sonderfall) Zeichenreihe Baum “Befehle” Ergebnisse u.U. Analyse /Front end Synthese (generator) / Back end “AusführendeMaschinerie” \_________________/Übersetzer Interpreter 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 ? Leerzeichen Zeilenwechsel ...static¤void¤main¤(String¤args¤[])¤{|¤¤¤¤¤¤System.out.prin... public class hello { public static void main (String args []) { System.out.println ("Hello World"); }} 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/oderGrund- und Phrasenzeichen - • Zwei Beispiele: publicclasshello{publicstaticvoidmain(<Parameterliste>) { <Funktionsbezeichner>(<Ausgabetext>);}}class-end publicclasshello<Klassenrumpf>class-end Vorbemerkungen zu Themen #04 - #06

  10. Baumstrukturen (als Ausgabe) <Klassendefinition> Ein ziemlichwillkürlichesBeispiel (ineiner Zwischen-stufe) <Klassentyp> <Klassen-bezeichner> publicclasshello<Klassenrumpf>class-end Vorbemerkungen zu Themen #04 - #06

  11. ? ? Endliche Automaten (I)(für Zeichenanayse) ? Operator Ziffer ? Ziffer • Ziffer Grund-zustand Gleitpunktzahl Ganze Zahl Regeln der Form:alter Zustandanstehendes Zeichen==> neuer Zustand Fehlerbehandlung ?(siehe Referat #04) Bezeichner bzw.Wortsymbol Bezeichner Buchstaben ? Ziffer ? Buchstaben ? 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önnenKellerung dieser Zeichen • Grundlage der syntaktischen Analyse Vorbemerkungen zu Themen #04 - #06

  15. Was muß hierstehen ? Strategien der syntaktischen Analyse- der Dijkstra’sche Verschiebebahnhof - Leserichtung yyyy...............yy x’xxx............xx? ?1 (Anfang der) Ausgabe (Ende der) Eingabe ?2 Fehlerbehandlung ?(siehe Referat #05) Sind hier schließlichwieder alle Zeichen ?Keine Phrasenzeichen ! z’zz...z Keller - Entscheidungen bei ?1 und ?2 - Welche Zeichen werden ge- kellert ? Es entstehtPostfix-Notation Vorbemerkungen zu Themen #04 - #06

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

  17. Strategien der syntaktischen Analyse- zielgerichtete Analyse (top-down) (I) - Leserichtung xxxx...............xx xxxx............xxx ? (nicht mehr benötigter Anfang der) Eingabe (Ende der) Eingabe zzz...z Keller mit noch nicht erfüllten Zielen, hier? --> “Vergleichen und Wegwerfen des erfüll-ten Ziels (falls Grund-zeichen)” 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) - Leserichtung z1 z2 :zn xxxx...............xx xxxx............xxx (nicht mehr benötigter Anfang der) Eingabe (Ende der) Eingabe z’z: :zz ? Keller mit Phrasenzei-chen z’ an oberster Stelle, hier ? --> “Absetzen neuer Ziele z1 z2... zn” Zur Reduktion anstehen-de , das “Ende” repräsen-tierende Zeichenreihe aus Grund- und Phrasenzei-chen Leserichtung Vorbemerkungen zu Themen #04 - #06

  19. (siehespäter) Strategien der syntaktischen Analyse- zielgerichtete Analyse (top-down) (III) - • Oberstes Ziel, als erstes auf dem Keller abgelegt:<Programm>. 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 r1 entschieden, welche “Gabel” (d.h. rechte Seite der Produktion z’ ::= r1 ... rn) 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) 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<Programm>) • Realisierung durch rekursivenAbstieg (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) - Leserichtung xxxx...............xx xxxx............xxx ? (nicht mehr benötigter Anfang der) Eingabe (Ende der) Eingabe zzz...z Keller mit bis jetzt noch nicht voll gelesenen Gabeln, hier ? --> “Weiterlesen” Eine “reduzierte” / den “Anfang” reprä-sentierende Zeichen-reihe aus Grund- und Phrasenzeichen Vorbemerkungen zu Themen #04 - #06

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

  23. (siehefrüher) Strategien der syntaktischen Analyse- rückschauende Analyse (bottom-up) (III) - • Keller anfänglich leer. Erfolg, wenn am Schluß allein<Programm> 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) 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 <Programm>) zusam-mengefaßt sind • Verschränkung mit semantischer Analyse (für syntheti-sierte Attribute leicht) möglich • Realisierung durch LR-Analyse(in Anlehnung an endlicheAutomaten) Fehlerbehandlung ?(siehe Referat #05) Vorbemerkungen zu Themen #04 - #06

  25. Semantische Analyse als vorgezogene Interpretation • 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 Vorbemerkungen zu Themen #04 - #06

  26. Strategien der syntaktischen Analyse- der Dijkstra’sche Verschiebebahnhof - Leserichtung Zur Erinnerung ! yyyy...............yy x’xxx............xx? ?1 (Anfang der) Ausgabe (Ende der) Eingabe ?2 z’zz...z Operatorkeller - Entscheidungen bei ?1 und ?2 - Welche Zeichen werden ge- kellert ? Es entstehtPostfix-Notation Vorbemerkungen zu Themen #04 - #06

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

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

  29. Semantische Analyse als vorgezogene Interpretation- gezeigt an Interpretation von Postfix-Notation (II) - Eingabe A B C D I 1 + []1 E - * F X Y Z + f2/ + :=end Ausgabe I + 1 ==> H1D [ H1 ] ==> H2H2 - E ==> H3C * H3 ==> H4Y + Z ==> H5float ( H5 ) ==> H6F ( X , H6 ) ==> H7H4 / H7 ==> H8B + H8 ==> H9H9 ==> A Typüberprüfungbeim jeweiligenGenerieren ! Einfach gehaltene Speicherabbildung Irrtumvorbehalten ! Vorbemerkungen zu Themen #04 - #06

  30. Semantische Analyse als vorgezogene Interpretation- gezeigt an Interpretation von Postfix-Notation (III) - Eingabe A B C D I 1 + []1 E - * F X Y Z + f2/ + :=end Ausgabe I + 1 ==> H1D [ H1 ] ==> H1H1 - E ==> H1C * H1 ==> H1Y + Z ==> H2float ( H2 ) ==> H2F ( X , H2 ) ==> H2H1 / H2 ==> H1B + H1 ==> A Typüberprüfungbeim jeweiligenGenerieren ! Verbesserte Speicherabbildung Irrtumvorbehalten ! Vorbemerkungen zu Themen #04 - #06

  31. Semantische Analyse als vorgezogene Interpretation- gezeigt an Interpretation von Postfix-Notation (IV) - I + 1 ==> H1D [ H1 ] ==> H1H1 - E ==> H1C * H1 ==> H1Y + Z ==> H2float ( H2 ) ==> H2F ( X , H2 ) ==> H2H1 / H2 ==> H1B + H1 ==> A Befehle könnten sofort ausge-führt werden; keine Befehls-generierung erforderlichOperandenkeller wird zur Lauf-zeit ein Wertekeller ! Verbesserte Speicherabbildung Irrtumvorbehalten ! Vorbemerkungen zu Themen #04 - #06

  32. Semantische Analyse (I) • “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” Vorbemerkungen zu Themen #04 - #06

  33. Semantische Analyse (II) • “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” Fehlerbehandlung ?(siehe Referat #06) Vorbemerkungen zu Themen #04 - #06

  34. ENDEder VorbemerkungenFragen ? Vorbemerkungen zu Themen #04 - #06

  35. Vorbemerkungen zu Themen #04 - #06

More Related