Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof....

25
<XML... ...MOMIS/> Serializzazione di oggetti in Serializzazione di oggetti in formato XML nell’ambito del formato XML nell’ambito del sistema MOMIS sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele Colajanni Tesi di: Relatore: Controrelatore: Modena, 22/03/2001 UNIVERSITÀ DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica

Transcript of Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof....

Page 1: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Serializzazione di oggetti in formato XML Serializzazione di oggetti in formato XML nell’ambito del sistema MOMISnell’ambito del sistema MOMIS

Davide Lenzi

Chiar.mo Prof. Sonia Bergamaschi

Chiar.mo Prof. Michele Colajanni

Tesi di:

Relatore:

Controrelatore:

Modena, 22/03/2001

UNIVERSITÀ DI MODENA EREGGIO EMILIA

Facoltà di Ingegneria – Sede di ModenaCorso di Laurea in Ingegneria Informatica

Page 2: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

ObiettiviObiettivi

• Garantire l’interoperabilità con altri sistemi a mediatore mediante l’uso di una lingua franca.

• Serializzare in XML lo stato del sistema MOMIS.

0 100%

Page 3: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Il sistema MOMISIl sistema MOMIS

0 100%

Page 4: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Caratteristiche del linguaggio ODLCaratteristiche del linguaggio ODLII33

• Descrive schemi di basi di dati in maniera indipendente dalla sorgente (relazionale, ad oggetti, semistrutturata)

• Estensione del linguaggio standard ODL di ODMG• Linguaggio Object Oriented ricco di aspetti semantici.• Definisce costrutti per la rappresentazione della

conoscenza: vincoli di integrità, relazioni intensionali ed estensionali tra concetti.

• Definisce chiavi primarie, candidate e foreign key.• supporta multiple definizioni per una stessa classe, utile

per rappresentare sorgenti semistrutturate.

0 100%

Page 5: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

MOMIS produce il Global Virtual Schema MOMIS produce il Global Virtual Schema (GVS)(GVS)

• Lo schema integrato è costruito partendo dalle varie sorgenti e viene espresso in ODLI

3 .

• Il GVS contiene un insieme di classi globali costruite a partire dalle classi presenti negli schemi locali.

• per ogni classe globale viene definita una mapping table: una struttura tabellare che descrive come i vari attributi globali vengono costruiti a partire dagli attributi locali.

0 100%

Page 6: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

MOMIS come sorgente integrata di dati XMLMOMIS come sorgente integrata di dati XML

• Esportare uno schema ODLI3 in XML 1.0 significa

creare una DTD che descriva la struttura dello schema sorgente cercando di limitare perdite di conoscenza.

• La DTD prodotta potrà essere utilizzata:– per validare i dati ritornati.

– come fonte di informazioni su un generico documento XML sul quale porre delle query utilizzando un linguaggio di interrogazione per XML: es. XML-QL

0 100%

Page 7: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

ODLI3 vs DTD di XML 1.0ODLI3 vs DTD di XML 1.0

ODLI3• relazioni

fondamentali:– Part-of

– Kind-of

– Is a

• vincoli di integrità, relazioni intensionali, relazioni estensionali, chiavi

DTD:

• relazioni fondamentali:

– Part-of

– Kind-of solo in forma implicita

Non ci sono altri strumenti! Parte della conoscenza viene necessariamente perduta.

0 100%

Page 8: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Aspetti tradotti direttamente o comunque Aspetti tradotti direttamente o comunque supportati dalla DTD:supportati dalla DTD:

• Struttura delle entità definite in ODLI3

• Mapping table• Ereditarietà• traduzione della relazione “is a”

– algoritmo per l’esplorazione ricorsiva della discendenza per costruire la lista di tutte le possibili alternative.

• Definizioni di interfacce in union. (operatore | )• Template types (uso dell’operatore “*”)• attributi opzionali (uso dell’operatore “?”)• Relationship ODL

0 100%

Page 9: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Semantica solamente descritta:Semantica solamente descritta:

• Viene prodotto un elemento XML che riporta meta informazioni– Chiavi primarie

– Chiavi candidate

– Foreign Key

• Altre informazioni:– Tipi ODLI

3

– Mapping tra nomi ODLI3 e nomi usati nella DTD

– Nomi delle relationship inverse

0 100%

Page 10: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Conoscenza perduta:Conoscenza perduta:

• relazioni intensionali ed estensionali• vincoli di integrità

0 100%

Page 11: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Esempio: classe ODLI3Esempio: classe ODLI3

class course ( source relational university

key (name)

) {

attribute boolean difficult;

attribute string name;

}

class spec_course : course (

) {

attribute set<course> requires;

}

course

spec_course

0 100%

Page 12: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Esempio: traduzione DTDEsempio: traduzione DTD

<!ELEMENT course (difficult, name)>

<!ATTLIST course

id_xml ID #REQUIRED

...>

<!ELEMENT difficult EMPTY>

<!ATTLIST difficult value (true|false) #REQUIRED >

<!ELEMENT name (#PCDATA)>

<!ELEMENT spec_course (course, requires)>

<!ELEMENT requires (course | spec_course | odli3_reference)*>

<!ELEMENT odli3_reference EMPTY>

<!ATTLIST odli3_reference

reference IDREF #IMPLIED

>

class course (

source relational university

key (name)

) {

attribute boolean difficult;

attribute string name;

}

class spec_course : course (

) {

attribute set<course>

requires;

}

0 100%

Page 13: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

ConclusioniConclusioni

• Il traduttore ODLI3-DTD sono state scritte 3073 linee di codice commentato– Per tradurre gli aspetti semantici si sta studiando la possibilità

di utilizzare RDF e RDF Schema

– Per supportare la traduzione diretta dei tipi ODLI3 si pensa di scrivere un traduttore anche per XML schema.

0 100%

Page 14: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Serializzare lo stato di MOMIS in XMLSerializzare lo stato di MOMIS in XML

• In realtà si è risolto un problema più generale: la serializzazione di qualunque grafo di oggetti Java in XML.

• Gli oggetti sono entità software caratterizzate da:– uno stato, formato da vari componenti (campi)

– operazioni, unico strumento per modificare lo stato interno

• Serializzare significa ordinare, mettere in sequenza i vari componenti dello stato, al fine di ottenerne uno stream.

0 100%

Page 15: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Serializzare in XML:Serializzare in XML:

• facilita lo scambio di informazioni tra ambienti eterogenei e si permette l’impiego del proprio software per scopi differenti da quelli per cui era stato progettato.– la deserializzazione è possibile solo se si conosce il protocollo

utilizzato (significato dei nomi dei tag e degli attributi)

• ma...– le informazioni risultano comunque accessibili grazie allo

standard XML.

• Problema: alto livello di ridondanza insito nella sintassi XML.– Sono stati studiati degli accorgimenti per ridurla

0 100%

Page 16: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Il package XmlTools:Il package XmlTools:

• Serializzazione/deserializzazione di grafi di oggetti Java– l’uso del linguaggio Java è un vincolo di progetto.

• Trasparente all’utilizzatore.– Oggetti visti come “black box”

• Flessibile e personalizzabile: il codice XML prodotto varia in base ai desideri dell’utente.

• Basato sulle “Java Object Serialization Specification” per ottenere una forte integrazione con il meccanismo standard fornito dal linguaggio.

• Forte insensibilità all’evoluzione delle classi (Class versioning).

0 100%

Page 17: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

XmlTools: Architettura.XmlTools: Architettura.

0 100%

Page 18: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Quali classi sono serializzabili?Quali classi sono serializzabili?

• Da un punto di vista tecnico XmlTools è in grado di serializzare qualunque classe.

• Tuttavia per questioni di protezione e per uniformarsi al meccanismo standard di Java, vengono serializzate solo le classi che implementano l’interfaccia “Serializable” o una delle sue estensioni.

• “Serializable” è un’interfaccia vuota! Serve solo a distinguere le classi che possono essere serializzate dalle altre.

0 100%

Page 19: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Il processo di serializzazione (grafi)Il processo di serializzazione (grafi)

• Problema:– Non si serializzano singoli oggetti ma grafi di oggetti.

– Lo stato di un oggetto può contenere riferimenti ad altri oggetti o riferimenti ricorsivi a se stesso.

– Tutti gli oggetti accessibili a partire dalla radice del grafo vanno anch’essi serializzati.

0 100%

Page 20: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Il processo di serializzazione (grafi)Il processo di serializzazione (grafi)

• Soluzione– Ogni singolo oggetto viene serializzato un’unica volta:

nell’elemento che contiene la definizione del suo stato viene scritto un attributo contenente un identificatore numerico:<object object_ID=“123” class=“Person”>

<object field=“Name” class=“java.lang.String”...

– Ogni successivo riferimento allo stesso oggetto provoca la scrittura di un elemento XML vuoto con un riferimento alla definizione vera e propria.<object field=“owner” object_REF=“123” />

0 100%

Page 21: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Personalizzazione dell’output.Personalizzazione dell’output.

• Supporto di tutti gli strumenti standard di personalizzazione presenti nelle specifiche java: metodi writeObject/readObject, interfaccia “Externalizable”.

• Supporto di interfacce analoghe specifiche per XML.• oppure tramite l’impostazione di semplici proprietà

booleane è possibile scegliere vari formati senza scrivere linee di codice. Esempi:– <object field=“name” class=“java.lang.String” object_ID=“000”>– <java.lang.String field=“name” object_ID=“000”>– <String field=“name” class=“java.lang.String”>

0 100%

Page 22: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Serializzazione: Altre CaratteristicheSerializzazione: Altre Caratteristiche

• riduzione della ridondanza:– Uso di valori di default: eliminazione dei valori null negli

array

– eliminazione dei tag che descrivono superclassi prive di campi serializzabili.

• Bilanciamento facoltativo della struttura XML per limitarne la profondità e favorire la ricerca di informazioni.

• Protezione delle informazioni sensibili: supporto alla parola riservata transient del linguaggio Java

0 100%

Page 23: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Il processo di ricostruzione Il processo di ricostruzione (object deserialization)(object deserialization)

• XmlReader implementa un algoritmo di ricostruzione delle istanze che può essere riassunto in due passi principali:– Allocare una nuova istanza appartenente alla classe specificata

nel documento XML.– Ripristinare lo stato serializzato mantenendo se possibile la

compatibilità con le versioni precedenti della stessa classe.

• La difficoltà maggiore nella realizzazione di XmlReader è stata la progettazione di un algoritmo che consentisse una comunicazione bidirezionale tra versioni differenti delle stesse classi.

0 100%

Page 24: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

XmlReader, altre caratteristicheXmlReader, altre caratteristiche

• Supporta la ricostruzione di istanze anche per i documenti Bilanciati.

• Possibilità di registrare dei callback per effettuare ulteriori validazioni o inizializzazioni prima che il grafo di oggetti sia ritornato all’utilizzatore. (Es: apertura di file)

0 100%

Page 25: Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.

<XML...

...MOMIS/>

Conclusioni XmlToolsConclusioni XmlTools

• Per XmlTools sono state digitate 5564 linee di codice commentato.– XmlTools è attualmente utilizzato per serializzare e

deserializzare lo stato dell’intero sistema MOMIS in XML

• Durante la tesi sono state prodotte 8637 linee di codice totali.

0 100%