sichere templategestützte verarbeitung von xml-dokumenten
DESCRIPTION
TRANSCRIPT
Sichere templategestützte Verarbeitung von XML-Dokumenten
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie
Dresden, 1. Juli 2011
Falk Hartmann
Verteidigung der Dissertation
Sichere templategestützte Verarbeitung von XML-Dokumenten
Motivierendes Beispiel
Fehler Nicht-wohlgeformtes XML Verletzung einfacher Typen Strukturell falsches XHTML
Folie 2
Sichere templategestützte Verarbeitung von XML-Dokumenten
Begrifflichkeiten
Folie 3
Sichere templategestützte Verarbeitung von XML-Dokumenten
Begrifflichkeiten
Folie 4
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung
▪ Beiträge der Arbeit und Fazit
Folie 5
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung
▪ Beiträge der Arbeit und Fazit
Folie 6
Sichere templategestützte Verarbeitung von XML-Dokumenten
Ziele
Sichere ErstellungRückmeldung an den Autor über die Richtigkeit des Ausprägungsergebnisses in Bezug auf die Zielsprache
Sichere AusprägungKlare und ausreichende Rückmeldung von bei der Ausprägung auftretenden Problemen
Trennung der BelangeMöglichkeit arbeitsteiliger Entwicklung
Breite AnwendbarkeitVermeidung von Einschränkungen in Bezug auf Ziel- und Anfragesprachen sowie Anwendungsgebiete
Nutzung existierender StandardsWiederverwendung bestehender Sprachen, Werkzeuge und Prozesse
Folie 7
Sichere template-gestützte Verarbeitung
Sichere templategestützte Verarbeitung von XML-Dokumenten
Anforderungen
Erhaltung der Einschränkungen der ZielspracheÜbernehmen von Verboten der Zielsprache in die Templatesprache
Abdeckung der ZielspracheErmöglichen der Erzeugung aller Sätze der Zielsprache
AbleitbarkeitAutomatisches Ableiten der Grammatik der Templatesprache aus der Grammatik der Zielsprache
SteueranweisungenErlauben bedingter und wiederholter Ausprägung von Teilen der Templates
Typsicherheit der AusprägungsdatenErzwingen oder Überprüfen der korrekten Typen der Ausprägungsdaten
Unabhängigkeit von der AnfragespracheVermeiden von Annahmen über die Anfragesprache
Folie 8
Sichere templategestützte Verarbeitung von XML-Dokumenten
Ziele → Anforderungen
Beispiel:Trennung der Belange → Steueranweisungen:
Fehlende Steueranweisungen resultieren i.d.R. in mangelnder Trennung der Belange
Folie 9
Sichere templategestützte Verarbeitung von XML-Dokumenten
Lösungsarchitektur
Folie 10
Sichere templategestützte Verarbeitung von XML-Dokumenten
Anforderungen → Lösungsarchitektur
Beispiel:Unabhängigkeit von der Anfragesprache → Bestimmung der Ausprägungsdaten:
Spezielle Lösungsarchitekturkomponente zur Bestimmung der Ausprägungsdaten erleichtert Anpassung an Anfragesprachen
Folie 11
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung
▪ Beiträge der Arbeit und Fazit
Folie 12
Sichere templategestützte Verarbeitung von XML-Dokumenten
Entwurf einer generischen Slot Markup-Sprache
XTL – XML Template LanguageUniversell, syntax- und semantik-erhaltendAdressiert Fehlertyp
Sprachumfang• Erzeugung von Attributwerten, Text (xtl:attribute, xtl:text)• Bedingte und wiederholte Ausführung (xtl:if, xtl:for-each)• Makros • Einbettung kompletter XML-Fragmente• Unterstützung für multiple Ausprägungsdatenquellen• Unterstützung für mehrschrittige Ausprägung
Syntax• XML Schema
Semantik• Denotationell formuliert in Haskell• Zusätzlich translationale und operationelle Beschreibung
Folie 13
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-AusprägungValidierung
▪ Beiträge der Arbeit und Fazit
Folie 14
Sichere templategestützte Verarbeitung von XML-Dokumenten
Grundidee der sicheren Erstellung
Adressiert Fehlertypen und
Folie 15
Sichere templategestützte Verarbeitung von XML-Dokumenten
Aufteilung der Einschränkungen
Folie 16
XML Schema ist nicht ausdrucksstark genug zur Beschreibung der Templatesprache → CXSD!
Sichere templategestützte Verarbeitung von XML-Dokumenten
Aufteilung der Einschränkungen
Zielsprachengrammatik
Erforderliche oder optionale Attribute
Templatesprachengrammatik
• Umwandlung in optionale Attribute• Erlauben von xtl:attribute im
Inhaltsmodell des Elternknotens• Einschränkung der erzeugbaren
Attribute (Namen)
Einschränkung der Ausprägungsdaten
• Typüberprüfung entsprechend Typ des Attributes
Folie 17
Sichere templategestützte Verarbeitung von XML-Dokumenten
Aufteilung der Einschränkungen
Zielsprachengrammatik
Simple Content (durch “einfache” Inhaltstypen eingeschränkter Elementinhalt)
Templatesprachengrammatik
• Umwandeln in Mixed Content• Erlauben von xtl:text im
Inhaltsmodell• Einschränkung des Textinhalts
entsprechend Inhaltstyp
Einschränkung der Ausprägungsdaten
• Typüberprüfung entsprechend Inhaltstyp
Folie 18
Sichere templategestützte Verarbeitung von XML-Dokumenten
Aufteilung der Einschränkungen
Zielsprachengrammatik
Elemente mit Kardinalität {0,1} oder {n,m}
Templatesprachengrammatik
• Ersetzen durch Alternative zwischen Ursprungselement und xtl:if oder xtl:for-each
• Einschränkung des Inhalts von xtl:if bzw. xtl:for-each auf Ursprungselement
Einschränkung der Ausprägungsdaten
• Überprüfung der Anzahl der Wiederholungen
Folie 19
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Folie 20
Sichere templategestützte Verarbeitung von XML-Dokumenten
Eigenschaften der Template-Ausprägung
Flexibel• Plug in-Mechanismus für Anfragesprachen• Implementierungen für XPath, SPARQL, OCL
Effizient• Implementierung mit StAX (JSR-173)• Speicherbedarf wächst linear mit Anzahl der Knoten in größter zu
wiederholender Einheit im Template• Zeit wächst linear mit Größe des Ausprägungsergebnisses
Sicher• Ausprägungsdaten werden auf Typ und Multiplizität geprüft• Alternativer Ansatz: Generierung einer Template-Schnittstelle
Folie 21
Sichere templategestützte Verarbeitung von XML-Dokumenten
Generierung einer Template-Schnittstelle
Grundidee• Nutzung der Ausdrücke der Anfragesprache zur Erzeugung eines Modells
der Ausprägungsdaten• Gewährleistung der Richtigkeit der Ausprägungsdaten durch Transfer der
Datentypen aus dem XML- in das Java-Typsystem• Analog zur XML binding-Technologien (z.B. JAXB), aber neu für Templates
Konsequenzen• Einschränkung der Abfragesprache XPath auf umkehrbare Ausdrücke
• Beispiel:XPath-Ausdruck //a -> nicht anwendbar auf Java-Objekt-Modell
• Umkehrung der Datenbezugsrichtungpush statt pull-Strategie
Folie 22
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung
▪ Beiträge der Arbeit und Fazit
Folie 23
Sichere templategestützte Verarbeitung von XML-Dokumenten
Validierungsmittel
Implementierung eines PrototypsAufteilung der Einschränkungen, Template-Validierung und -Ausprägung, Template Schnittstellen-Generierung
Testsuiteentsprechend ImplementierungÜbereinstimmung Template-Ausprägung mit denotationeller und translationaler Semantik
Anwendung der ImplementierungEinsatz in den Projekten SNOW, FeasiPLe und EMODE
Beweis der Erhaltung der Einschränkungen der ZielspracheInduktionsbeweis ausgehend von Algorithmus zur Aufteilung der Einschränkungen
Performance-MessungenLaufzeit der Template-Validierung, Laufzeit und Speicherbedarf der Template-Ausprägung, Vergleichsmessung mit JSP und XSL-T
Folie 24
Sichere templategestützte Verarbeitung von XML-Dokumenten
Validierungsmittel → Ziele
Beispiel:Performance-Messungen → Breite Anwendbarkeit:
Ist der Einsatz des Ansatzes praktisch vertretbar?
Folie 25
Sichere templategestützte Verarbeitung von XML-Dokumenten
Testsuite
Überprüfung der Implementierung im Hinblick auf die Ziele Sichere Erstellung und Sichere Ausprägung
• Vergleich der Ergebnisse der verschiedenen Komponenten mit hinterlegten, geprüften Ergebnissen
• Prüfung der Aufteilung der Einschränkungen, Validierung, Ausprägung, Generierung von Template-Schnittstellen und Round-Trip-Test
Folie 26
Sichere templategestützte Verarbeitung von XML-Dokumenten
Beweis der Erhaltung der Einschränkungen
VoraussetzungTemplate, welches der Template-Grammatik genügtAusprägungsdaten, welche den entsprechenden Einschränkungen genügen
BehauptungAusprägungsergebnis genügt der Zielsprachengrammatik
Folie 27
Sichere templategestützte Verarbeitung von XML-Dokumenten
Performance-Messungen
Laufzeit der TemplatevalidierungBasis: Template mit 2n Kindknoten mit erforderlichem Attribut,
• n Attribute direkt spezifiziert• n-1 Attribute mittels xtl:attribute erzeugt• 1 Attribute fehlt und wird nicht erzeugt
(Messung auf Intel 2 Duo 2.8 GHz, 4 MB RAM, MacOS 10.6.7, JDK 1.6.0_24)
Folie 28
Sichere templategestützte Verarbeitung von XML-Dokumenten
Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung
▪ Beiträge der Arbeit und Fazit
Folie 29
Sichere templategestützte Verarbeitung von XML-Dokumenten
Beiträge
Weitere Beiträge• Definition des Begriffes Template• Klassifikation existierender Template-Ansätze
Entwurf einer universellen Slot Markup-Sprache• Syntax- und semantik-erhaltend• Unabhängig von konkreter XML-Zielsprache• Unabhängig von Anfragesprache• Denotationell definierte Semantik
Sichere Erstellung und Ausprägung• Überprüfung der Ausprägungsergebnisse soweit als möglich zur
Erstellungszeit• Direkte Überprüfung der Ausprägungsdaten zur Ausprägungszeit• Alternative: Generierung einer Template-Schnittstelle
Folie 30
Sichere templategestützte Verarbeitung von XML-Dokumenten
Fazit
Sichere Erstellung und Ausprägung sind mit dem gezeigten Ansatz möglich!
- Trennung der Belange, Breite Anwendbarkeit gegeben- Nutzung existierender Standards eingeschränkt erreicht
- Fehlerklasse adressiert durch Sprachentwurf der XTL- Fehlerklassen und adressiert durch Aufteilung der Einschränkungen
Folie 31
Sichere templategestützte Verarbeitung von XML-Dokumenten
Vielen Dank für Ihre Aufmerksamkeit!
Folie 32
Sichere templategestützte Verarbeitung von XML-Dokumenten
Verwandte Arbeiten
Templates: Mittel zur Erzeugung konkreter Syntax- Modell-zu-Text Transformationen- Anwendungsgebiete: Webapplikationen, Codegenerierung- Einfache Nutzung existierender Fragmente der konkreten Syntax
Verwandte Ansätze- Aspekt-orientierte Programmierung (XUpdate)
- Sicherheit ist Forschungsthema
- Transformationstechniken (XSL-T)- Erhalten die Syntax der Zielsprache nicht- Hoher Lernaufwand
- Binding-Techniken (JAXB)- Sicher per Definition- Fragmente konkreter Syntax müssen in anderen technologischen
Raum übersetzt werden- Verletzung der Trennung der Belange
Folie 33
Sichere templategestützte Verarbeitung von XML-Dokumenten
Verwandte Arbeiten (Vergleich)
Quelle 1 Quelle 2
Ziel
+
JSP
XUpd
ate
XSL-T
JAXB
XML Java any XML
XML(core)
XML(advice)XUpdate XML
XSL-T + XML XML’XPath XML
Java anyJava XML
Folie 34
Sichere templategestützte Verarbeitung von XML-Dokumenten
Definition Template-Begriff
Folie 35
Sichere templategestützte Verarbeitung von XML-Dokumenten
Klassifikation Template-Ansätze (1)
1. Target Language Awareness of Slot Markup- Syntax preserving
- Semantic preserving (TAL)- Semantic abusing (XMLC)
- Syntax destructing (Perl)2. Generality of Slot Markup
- Specific for a particular target language- Generic
3. Entanglement Index [Parr, 2006]- No modification of the model- No computations- No comparisons- No type assumptions- Separation of concerns
4. Instantiation Data Access Strategy- Push- Pull
Folie 36
Sichere templategestützte Verarbeitung von XML-Dokumenten
Klassifikation Template-Ansätze (2)
5. Query Language- Opaque vs. significant- Declarative vs. imperative- Domain specific vs. general purpose
6. Instantiatian Technique- Compiler- Interpreter
7. Reuse- Macros- Group inheritance
8. Further Features- Group interfaces- Newline handling
Folie 37
Sichere templategestützte Verarbeitung von XML-Dokumenten
XTL - Beispiel
Folie 38
Sichere templategestützte Verarbeitung von XML-Dokumenten
Anwendung der Implementierung
SNOW- Benutzung der XTL als einfache Sprache für Dokumentationsautoren bei
EADS- Zwei Hauptkomponenten basierend auf der XTLEngine (Datenschicht,
Controller)- EADS Ingenieure schätzen Einfachheit der XTL
EMODE- Komplexe Transformationen auf Basis der XTLEngine- Nutzung der XTL zur Erzeugung von MXML (Flex) Applikationen
FeasiPLe- Codegenerierung aus Ontologien mittels SPARQL-Abfragen- Emulation der transitiven Hülle innerhalb eines PHP → Erweiterung von
SPARQL um die Fähigkeit zur Hüllenbildung
Folie 39
Sichere templategestützte Verarbeitung von XML-Dokumenten
SNOW-Architektur
Folie 40
Sichere templategestützte Verarbeitung von XML-Dokumenten
Zeitbedarf Validierung
Folie 41
Sichere templategestützte Verarbeitung von XML-Dokumenten
Zeitbedarf Ausprägung
Folie 42
Sichere templategestützte Verarbeitung von XML-Dokumenten
Vergleich Zeitbedarf Ausprägung
Folie 43
Sichere templategestützte Verarbeitung von XML-Dokumenten
Speicherbedarf (1)
Folie 44
Sichere templategestützte Verarbeitung von XML-Dokumenten
Speicherbedarf (2)
Folie 45
Sichere templategestützte Verarbeitung von XML-Dokumenten
Fallunterscheidung Sichere Erstellung
Folie 46
Sichere templategestützte Verarbeitung von XML-Dokumenten
Klassifikation von Schemasprachen
1. Regular Tree Grammars (Relax NG)2. Restrained-Competition Tree Grammars3. Single-Type Tree Grammars (XML Schema)4. Local Tree Grammars (DTD)
Folie 47
Sichere templategestützte Verarbeitung von XML-Dokumenten
Vertikale und horizontale XML-Pipeline
Folie 48
Sichere templategestützte Verarbeitung von XML-Dokumenten
Pull parser vs. Push parser
Folie 49
Sichere templategestützte Verarbeitung von XML-Dokumenten
Push strategy vs. Pull strategy
Folie 50
Sichere templategestützte Verarbeitung von XML-Dokumenten
ReadWindow Operationen
Folie 51
Sichere templategestützte Verarbeitung von XML-Dokumenten
Auswirkungen unpassender Ausdrucksstärke
Folie 52
Sichere templategestützte Verarbeitung von XML-Dokumenten
Sichere Erstellung: Prozessänderung
Folie 53
Sichere templategestützte Verarbeitung von XML-Dokumenten
Grundlage der operationellen Semantik
Folie 54
Sichere templategestützte Verarbeitung von XML-Dokumenten
Prinzip der translationalen Semantik
Folie 55
Sichere templategestützte Verarbeitung von XML-Dokumenten
Round-trip Test
Folie 56
Sichere templategestützte Verarbeitung von XML-Dokumenten
OCL Constraint für erforderliche Attribute
Folie 57
Sichere templategestützte Verarbeitung von XML-Dokumenten
OCL Constraint für Textinhalte
Folie 58
Sichere templategestützte Verarbeitung von XML-Dokumenten
Unique Particle Attribution
XML Schema Part 1: StructuresA content model must be formed such that during validation of an element information item sequence, the particle component content contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.
Folie 59