TUNIM - Problems
[Modena, Sabato 26 agosto 2000]
In anticipo rispetto a lunedi, io (Francesco) e Alberto ci siamo trovati
questo pomeriggio per fare il punto su quello che e' emerso dal lavoro su
Tunim. Quello che abbiamo visto e' che il modulo Tunim, cosi' come
implementato in questo momento presenta dei grossi problemi che non possono
essere corretti in breve tempo. I problemi che abbiamo individuato
derivano sia da caratteristiche implementative intrinseche del modulo
stesso, ma anche dal fatto che Tunim e' l'ultimo modulo per la costruzione
dello schema globale e quindi e' costretto ad operare con le strutture e gli
oggetti che sono utilizzati nei moduli antecedenti.
Tali problemi ovviamente non impediscono di produrre un "risultato" per
il vldb, ma devono essere superati per avere un modulo
perfettamente funzionante che produca il risultato corretto dell'operazione di
fusione. Inoltre abbiamo osservato che un'analisi completa dei problemi di
questo modulo e degli eventi non gestiti correttamente potra' essere una buona
base per il modulo corretto, che non potra' essere una semplice correzione del
modulo attuale ma per buona parte dovra' essere una riscrittura del software
sulla base delle problematiche funzionali individuate nel modulo corrente.
Problemi
Il problema principale riscontrato e' la gestione degli attributi
ereditati. Il modulo attuale non gestisce gli attributi ereditati, li
considera appartenenti a due local class diverse. Il problema che occorre
superare e' quindi se:
- Mantenere la struttura nella quale viene evidenziata l'ereditarieta' e
quindi nel Mapping Element a cui corrisponde l'attributo ereditato
evidenziare in maniera grafica il fatto che l'attributo e' stato
ereditato da un'altra classe locale. Questa a prima vista potrebbe
sembrare una soluzione ottima (e forse velocemente implementabile nel
modulo attuale in quanto di tratterebbe di modificare la JTable che
rappresenta la mapping table), ma pone dei problemi in fase di fusione.
Infatti se ad esempio una classe eredita gli attributi first_element e last_element e invece ha come proprio l'elemento
middle_element e gli attributi devono essere
fusi assieme diventa impossibile effettuare la fusione.
Altro Esempio.
Nell'esempio per il VLDB, sarebbe bello poter definire le classi globali
persone, studenti e professori. In questo caso
possono sorgere problemi in quanto in una delle sorgenti si ha che
studenti e professori ereditano da persone.
- Per ogni classe locale creare un "token" per ogni attributo proprio o
ereditato. Tali token rappresentano gli attributi locali da mappare
sulla mapping table. L'informazione legata all'ereditarieta' puo' essere
mantenuta attraverso un opportuno formalismo grafico. In questo modo e'
possibile effettuare qualsiasi tipo di fusione e non sembrano esserci
problemi di alcun tipo. L'unico problema e' che per implementare tale
soluzione e' necessario studiare attentamente la reingegnerizzazione
delle classi e dei metodi utilizzati. Non e' possibile infatti fornire
al tunim i token sui quali lavorare e utilizzare Tunim attuale in quanto
i metodi che usa Tunim fanno riferimento all'identificatore
dell'attributo stesso e l'identificatore dell'attributo ereditato fa
riferimento alla classe padre e non alla classe figlio nella quale e'
istanziato.
Oltre al problema legato alla gestione della ereditarieta' permangono altri
problemi:
- L'algoritmo di fusione non e' per nulla ottimizzato e completo.
Delle volte e' necessario effettuare piu' cicli di fusione e talvolta
invece in una sola "passata" dell'algoritmo vengono effettuate tutte le
fusioni possibili.
- Non e' ancora implementata (anche se non e' un grosso problema farlo) la
gestione delle relazioni non validate. Per adesso non sono considerate,
mentre esiste un caso citato nella tesi di Guidetti in cui sarebbe
opportuno fondere due attributi legati da una relazione di tale tipo
A fronte di questi problemi, io e Alberto abbiamo pensato che:
- a) per il VLDB sia utilizzabile la versione attuale di Tunim (che non
gestisce la ereditarieta') in quanto e' impensabile risolvere il problema
di reingegnerizzazione in poco tempo (probabilmente potrebbe essere
argomento di una tesi)
- b) in caso di domande al Vldb sulla gestione della ereditarieta' e'
possibile dichiarare che il problema e' in corso di risoluzione perche'
presenta degli aspetti di implementazione non banali e presentare le
problematiche individuate
- c) e' necessario lavorare per "smontare", anche sulla base di come si
comporta il modulo TUNIM attuale, l'algoritmo di fusione di Guidetti per
valutarne realmente l'efficacia e creare quindi un TUNIM versione 2 che
funzioni in maniera corretta.
Francesco Guerra
Alberto Corni
The MOMIS Home
Page